网站/小程序/APP个性化定制开发,二开,改版等服务,加扣:8582-36016

桌球小游戏

01.png


两张图片放在src的同级目录下

02.png


版本一、出现窗口

package cn.xjion.game;
/**
 * 出现窗口
 * @author xjion
 *
 */
import java.awt.*;
import javax.swing.*;
//继承窗口类
public class BallGame extends JFrame{
//窗口加载的方法
void launchFrame(){
//窗口的大小,宽高
setSize(300,300);
//窗口的位置,距离窗口左上角的位置
setLocation(400,200);
//窗口可见
setVisible(true);
}
//main方法,执行入口
public static void main(String[] args) {
//新建对象
BallGame bg = new BallGame();
//调用方法
bg.launchFrame();
}
}

版本二、加载图片

这儿的加载图片有个缓存问题,需要最小化窗口再打开

package cn.xjion.game;
/**
 * 加载图片
 * @author xjion
 *
 */
import java.awt.*;
import javax.swing.*;
//继承窗口类
public class BallGame extends JFrame{
//创建两个图片的对象,代表两个图片
Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
//画窗口的方法
public void paint(Graphics g){
//画桌面
g.drawImage(desk, 0, 0, null);
//画ball对象,坐标100,100
g.drawImage(ball, 100, 100, null);
}
//窗口加载的方法
void launchFrame(){
//窗口的大小,宽高
setSize(856,500);
//窗口的位置,距离窗口左上角的位置
setLocation(50,50);
//窗口可见
setVisible(true);
}
//main方法,执行入口
public static void main(String[] args) {
//新建对象
BallGame bg = new BallGame();
//调用方法
bg.launchFrame();
}
}


版本三、使小球动起来

package cn.xjion.game;
/**
 * 水平滚动
 * @author xjion
 *
 */
import java.awt.*;
import javax.swing.*;
//继承窗口类
public class BallGame extends JFrame{
//创建两个图片的对象,代表两个图片
Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
int x = 100;
int y = 100;
boolean right = true;
//画窗口的方法
public void paint(Graphics g){
//画桌面
g.drawImage(desk, 0, 0, null);
//画ball对象,坐标100,100
g.drawImage(ball, x, y, null);
//如果向右走就加10,否则减10
if (right) {
x = x + 10;
}else{
x = x - 10;
}
//当球跑到头了就返回
if(x>856-40-30){
right = false;
}
if(x<40){
right = true;
}
}
//窗口加载的方法
void launchFrame(){
//窗口的大小,宽高
setSize(856,500);
//窗口的位置,距离窗口左上角的位置
setLocation(50,50);
//窗口可见
setVisible(true);
//重画窗口,无限重画
while(true){
//重画方法
repaint();
//try catch抛异常
try {
//40ms重画一次,1秒25次
Thread.sleep(40);
} catch (Exception e) {
e.printStackTrace();
}
}
}
//main方法,执行入口
public static void main(String[] args) {
//新建对象
BallGame bg = new BallGame();
//调用方法
bg.launchFrame();
}
}

版本四、使小球沿任意角度滚动

package cn.xjion.game;
/**
 * 任意滚动
 * @author xjion
 *
 */
import java.awt.*;
import javax.swing.*;
//继承窗口类
public class BallGame2 extends JFrame{
//创建两个图片的对象,代表两个图片
Image ball = Toolkit.getDefaultToolkit().getImage("image/ball.png");
Image desk = Toolkit.getDefaultToolkit().getImage("image/desk.jpg");
//在窗口上的坐标
double x = 100;
double y = 100;
 
double degree = 3.14 / 3;//弧度,60°
//画窗口的方法
public void paint(Graphics g){
//画桌面
g.drawImage(desk, 0, 0, null);
//画ball对象,坐标100,100
g.drawImage(ball,(int) x,(int) y, null);
//x和y坐标的变化
x = x + 10*Math.cos(degree);
y = y + 10*Math.sin(degree);
/*判断什么时候碰到边界回弹*/
//碰到上下边界回弹
if (y>500-40-30 || y<40 + 40) {
degree = -degree;
}
//碰到左右边界回弹
if (x>856-40-30 || x<30) {
degree = 3.14-degree;
}
}
//窗口加载的方法
void launchFrame(){
//窗口的大小,宽高
setSize(856,500);
//窗口的位置,距离窗口左上角的位置
setLocation(50,50);
//窗口可见
setVisible(true);
//重画窗口,无限重画
while(true){
//重画方法
repaint();
//try catch抛异常
try {
//40ms重画一次,1秒25次
Thread.sleep(40);
} catch (Exception e) {
e.printStackTrace();
}
}
}
//main方法,执行入口
public static void main(String[] args) {
//新建对象
BallGame2 bg = new BallGame2();
//调用方法
bg.launchFrame();
}
}


好了,这个最为简单的桌球游戏就算是完成了,能实现球的滚动,如果有兴趣的可以再研究研究球杆,辅助线,击球,速度逐渐下降到停止,进球及分数的操作,有不对的地方望大家指出!

评论 0

暂无评论
0
0
0
立即
投稿
发表
评论
返回
顶部