本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
Java桌球小游戏
奔跑的男人 · 640浏览 · 发布于2019-06-11 +关注

桌球小游戏

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();
}
}


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

相关推荐

图形学基础 | 实现OBJ文件的载入

iamitnan · 1698浏览 · 2019-05-29 10:10:17
干货!麻将平胡算法

· 993浏览 · 2019-06-06 11:45:17
图形用户界面和游戏开发

qq2360248666 · 712浏览 · 2019-06-11 09:57:01
Three.js模型隐藏或显示

吴振华 · 560浏览 · 2019-06-14 10:18:27
Cocos工程命名规则整理(node部分)

吴振华 · 879浏览 · 2019-06-14 10:24:18
教你用Python画一只属于自己的皮卡丘

· 1669浏览 · 2019-06-17 10:35:38
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页