总结
一,首先分析
分析对象,
寻找属性,
发现方法,
难点分析,
记录难点
Java游戏笔记一
二,插入图片
首先调用一个工具类
/**
* 常用工具类
*/
public class CommonUtils {
/**
* 读取图片资源, 转变为Java对象 Image
* @param imgPath 图片路径
* @return Image对象
*/
public static Image getImage(String imgPath) {
ImageIcon imageIcon = new ImageIcon(imgPath);
return imageIcon.getImage();
}
}
然后创建对象和窗口类(继承Frame),在窗口类中输入打开窗口的方法窗口的私有属性 代码见笔记二
(背景由始至终只有一张)
背景图片的地址设置完成后要调用至静态块中,创建画笔类画出背景。
对象类也同样方法插入图片地址。
Java游戏笔记二
三,程序的关闭与人物的移动
回到窗口类中,运行发现无法关闭,所以我们需要添加一个监听器类,进行关闭监听(见笔记三)
监听器不光能关闭程序,人物的移动也需要键盘的监听触发事件来进行移动,使用 this.addKeyListener的方法进行触发判断。(见笔记三第2部分)
注意:移动是人物类移动,所以在人物类中这样添加
Java游戏笔记三
创建方法使用参数判断按键的方向
public void okDirPressed(int keyCode)
使用switch判断
然后在测试类中获取
//监听键盘事件
this.addKeyListener(new KeyAdapter() {
//当键盘按下的时候触发
// Var 获取被按下的键的数值 如:a-67,B-68
@Override
public void keyPressed(KeyEvent e) {
int keyCode = e.getKeyCode();
buffoon.okDirPressed(keyCode);
buffoon.move(buffoon.getDir());
}
//当键盘松开的时候触发
@Override
public void keyReleased(KeyEvent e) {
int keyCode=e.getKeyCode();
buffoon.OkDirReleased(keyCode);
}
});
并且在人物类中创建一个判断方向移动的方法,
将X,Y轴的数值进行变更移动。
在将4个方向属性设置为布尔类型去判断,当我去按下俩个按键后触发斜走。(见笔记四)
子弹的发射BUG修复以及优化
子弹是由人物类发射出的,所以设置一个发射的方法并且在触发方法中在写一个判断,使用按键发射子弹(见笔记四)
在子弹实现发射后发现如果人物的移动属性为STOP,那么子弹也会停止,所以要在人物类中在创建一个与方向同类型的变量toki,在判断方向中将方向的值赋予给这个变量,在传递给子弹有参方法中的方向变量,
这样子弹的方向变量只有上下左右,并且在人物中将toki赋予一个默认的方向属性,在初始状态中子弹就会由着此方向进行移动,并且解决了一旦方向为静止状态时子弹的滞留。
Java游戏笔记四
边界的设置
新建一个方法,判断X,Y的距离有没有超过当前的设置的宽高,如果超过了就将X,Y的值变成四边边距的值,使用IF判断(要注意每个判断都是IF,因为else if 只判断一次,并且注意自身人物图片的大小)。
(代码见笔记五)。
数据的优化
步骤至此已完成,但是发现代码有许多的耦合,这种时候可以进行优化,我们发现发现属性中各个类的属性相同,所以我们可以设置一个父类来替代,减少代码的冗余还能增加复用性。使用继承然后在构造方法中使用super关键字带入参数,
代码如下所示:
public Buffoon(int x,int y,GameClinet gameClinet){
super(x,y,
DataPropertiesUtils.BUFFOON_SIZE,
DataPropertiesUtils.BUFFOON_SIZE,
DataPropertiesUtils.BUFFOON_SPEED
,gameClinet
);
Java笔记五
制作人 徐杨
思路可能有点偏差,大体应该不差
时间:2020/11/17