请选择 进入手机版 | 继续访问电脑版

12360技术网 - 专业IT技术发表平台

 立即注册  找回密码
查看: 493|回复: 3

初学者,第一个桌球小游戏,第一次发博。

[复制链接]

24

主题

34

帖子

292

积分

中级会员

Rank: 3Rank: 3

积分
292
发表于 2020-1-27 06:25:55 | 显示全部楼层 |阅读模式
目的:实现小球的滚动效果,并按一定速度减速至静止。
目标

按照四个目标进行:
1.出现窗口。
2.插入桌面以及小球 图片。
3.实现小球滚动效果,
4.使小球可以撞墙返回,一定时间缓慢停止。
tip:每个部分都是上个部分的代码添加修改的,嫌弃麻烦的话可以直接看最后一部分。
第一次写,有错误的话希望能够指正。
开始画窗口

保证image与src同级文件。

代码
  1. import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import javax.swing.JFrame;public class BallGame2 extends JFrame{//画一个窗口,尺寸856*500; //初始点坐标x=50,y=50。左上角为起点。        void launchFrame(){                setSize(856,500);                setLocation(50,50);                setVisible(true);        }public static void main(String[] args) {        System.out.println("桌球游戏");        BallGame2 game = new BallGame2();        game.launchFrame();                        }}
复制代码
效果如下。

插入球和台桌图片

代码如下
  1. ```javaimport java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import javax.swing.JFrame;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;//定义画布内的内容。将图片放入画布public void paint(Graphics g){        System.out.println("画窗口");        g.drawImage(desk,0,0,null);        g.drawImage(ball,(int)x,(int)y,null);//用 x,y定义了小球的位置 方便后续运行。}//画一个窗口,尺寸856*500; //画布在电脑屏幕上初始点坐标x=50,y=50。左上角为起点。        void launchFrame(){                setSize(856,500);                setLocation(50,50);                setVisible(true);        }public static void main(String[] args) {        System.out.println("桌球游戏");        BallGame2 game = new BallGame2();        game.launchFrame();                        }}
复制代码
效果如图

让小球动起来

加入一个初速度。给一个角度让他去动
  1. import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import javax.swing.JFrame;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 speed = 10;  //初速度int P = (int)(Math.random()*(180+1)); //创建一个随机数1-180.   ‘+1’是因为random生成的区间为[0.1),取不到1值,使用181取整可以得到180的数字。double degree = 3.14/P;   //角度,随机1-180°//定义画布内的内容。将图片放入画布public void paint(Graphics g){        System.out.println("画窗口");        g.drawImage(desk,0,0,null);        g.drawImage(ball,(int)x,(int)y,null);//用 x,y定义了小球的位置 方便后续运行。        x = x + speed * Math.cos(degree);        y = y + speed * Math.sin(degree); //用x,y以及函数去表示小球的运动轨迹}//画一个窗口,尺寸856*500; //画布在电脑屏幕上初始点坐标x=50,y=50。左上角为起点。        void launchFrame(){                setSize(856,500);                setLocation(50,50);                setVisible(true);//重复画窗口。实现小球动态效果                while(true) {                repaint();                                try {                        Thread.sleep(33);//ms单位,1s=1000ms  大约1s重画30次                        }                catch (Exception e) {                        e.printStackTrace();                }        }                }public static void main(String[] args) {        System.out.println("桌球游戏");        BallGame2 game = new BallGame2();        game.launchFrame();                        }}
复制代码
小球反弹以及减速

通过改变角度去实现反弹;
通过改变speed去使小球停下来;
代码如下
[code]import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import javax.swing.JFrame;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 speed = 10;  //对小球赋予一个初始速度。int P = (int)(Math.random()*(180+1)); //创建一个随机数1-180.   ‘+1’是因为random生成的区间为[0.1),取不到1值,使用181取整可以得到180的数字。double degree = 3.14/P;   //角度,随机1-180°//定义画布内的内容。将图片放入画布public void paint(Graphics g){        System.out.println("画窗口");        g.drawImage(desk,0,0,null);        g.drawImage(ball,(int)x,(int)y,null);//用 x,y定义了小球的位置 方便后续运行。        x = x + speed * Math.cos(degree);        y = y + speed * Math.sin(degree); //用x,y以及函数去表示小球的运动轨迹。                if(speed > 0){        speed = speed - 0.05;        }else{        speed = 0;        }//通过减少speed的值,达到控制小球的速度的效果。        if(x>856-40-30||x500-40-30||y

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x




上一篇:《Cocos Creator游戏实战》关卡功能实现
下一篇:SR的学习日志_DP问题_多重背包
回复

使用道具 举报

0

主题

18

帖子

388

积分

中级会员

Rank: 3Rank: 3

积分
388
发表于 2020-2-3 23:59:09 | 显示全部楼层
我看不错噢 谢谢楼主![www.12360.co]
回复

使用道具 举报

0

主题

9

帖子

199

积分

注册会员

Rank: 2

积分
199
发表于 2020-2-21 12:55:18 | 显示全部楼层
楼主,大恩不言谢了![www.12360.co]
回复

使用道具 举报

0

主题

13

帖子

283

积分

中级会员

Rank: 3Rank: 3

积分
283
发表于 前天 07:50 | 显示全部楼层
楼主太厉害了!楼主,I*老*虎*U![www.12360.co]
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

12360技术网

GMT+8, 2020-2-29 13:57 , Processed in 0.082206 second(s), 25 queries .

本网站内容收集于互联网,Www.12360.Co不承担任何由于内容的合法性及健康性所引起的争议和法律责任。 欢迎大家对网站内容侵犯版权等不合法和不健康行为进行监督和举报。

© 2019-2020 Www.12360.Co

快速回复 返回顶部 返回列表