作品展示
第一天:类(游戏端)继承Frame;
首先要创建一个方法去让游戏开始和结束
使用text执行这个游戏的方法(需要有游戏标题和游戏的界面)
创建一个背景图片变量(创建静态值static,只出现一遍)
定义一个值让他等于背景图片的路径
把这个值赋值给我们创建的这个背景图片变量,让他拥有路径
创建类CommonUtils(路径方法)
第二天:给各个类对象里创建游戏窗体属性,创建无参合有参的方法,和get,set方法和画笔方法,游戏端(类)里创建画笔方法各个实现
在需要做移动的时候例小丑移动在小丑移动里创建移动方法
第三天:在此基础要知道游戏是无法结束的,添加一个游戏结束的方法
在游戏端start方法中添加一个监听键盘系统(就是让你输出键盘方向可以反映到你控制的人物身上),在小丑这个类里创建一个移动的属性以及赋予get和set方法,将小丑移动方向方法点调进这个键盘系统里,创建一个thread方法,定义一个重新绘制画面的线程,再招一个工人去车间干活,创建游戏窗体并听过构造方法调用,创建润方法设置50毫秒执行一次绘制图像,在游戏系段开启重新绘制线程,创建车间工人,工人听取调度。
第四天:基于第三天成果,小丑人物可以动了,但是属于闪屏模式,首先创建一个解决闪屏的方法。其次我们将昨天的监听键盘系统进行优化,给小丑类里创建四个方向没有按下,将昨天的键位选项粘贴到小丑buffoon键盘按下确定人物移动方向和键盘松开方法里。方法里要有boolean判断。此时小丑可以八个方向动了,在小丑里创建子弹数组(扔帽子)和getset方法,创建让子弹(帽子)扔出去方法,在游戏端里用paint方法画出子弹;
第五天;基于前四天成功,小丑可以发出子弹了,今天我们需要让子弹(帽子)移动,并且需要给小丑设置出现的范围。并对之前的代码进行优化。
1.思路分析
1.发现类(对象)
人物-小丑(友方,敌方):buffoon
子弹-帽子:missile
墙体:wall
爆炸物:explode
2.发现属性
小丑:宽,高,位置(x,y),移动速度
帽子:宽,高,位置(x,y),移动速度
墙体:宽,高,位置(x,y)
爆炸物:宽,高,位置(x,y)
3.发现方法
小丑:
移动
攻击(发子弹)
人物撞边界
子弹:
移动
子弹撞墙子弹撞边界
墙体:
爆炸物:消失
2.难点在哪里
1.如何将图片加载到窗体里
背景图片加载 已完成
人物–小丑加载(已完成)
发射物–帽子加载(已完成)
墙体加载(已完成)
爆炸物加载(已完成)
2. 窗体如何创建
3.子弹如何放射??按键盘 键盘如何触发事件???
3.作品展示
1.创建游戏端方法
public void start(){
System.out.println("即将开始游戏,请玩家做好准备");
this.setTitle("原谅帽"); //设置标题
this.setBounds(0,0,1100,600);//设置窗口
this.setVisible(true);//让窗口显示出
System.out.println("GameOver!!!");
}
2.text实现游戏端方法
public static void main(String[] args) {
//text测试运行游戏端开始和结束
GameClient gameClient=new GameClient();
gameClient.start();
}
3.创建背景图片并且对背景图片增加路径
public static final String BG_PATH="images/bg.png";//定义一个量设置图片路径
private static Image image;//定义图片背景
static {
image= CommonUtils.getImage(BG_PATH);
} //静态块只需要加载一次
4.创建类CommonUtils
public class CommonUtils {
/**
* 读取图片资源, 转变为Java对象 Image
* @param imgPath 图片路径
* @return Image对象
*/
public static Image getImage(String imgPath) {
ImageIcon imageIcon = new ImageIcon(imgPath);
return imageIcon.getImage();
}
}
5.各个(类)里创建游戏窗体属性
//游戏窗体属性 因为小丑要在窗体中画画
protected GameClient gameClient;
6.各个(类)里创建有参无参方法
//无参构造
public Buffoon(){
}
//带参构造
public Buffoon(int x,int y,GameClient gameClinet){
this.x=x;
this.y=y;
this.width=50;
this.height=50;
this.speed=5;
this.gameClient=gameClinet;
}
7.各个(类)里创建paint画笔方法
/**
* 小丑里有自己的画画方法
*/
public void paint(Graphics g){
g.drawImage(buffoon_Image,this.x,this.y,this.width,this.height,this.gameClient);
}
8.各个(类)里创建get set方法
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
public int getWidth() {
return width;
}
public void setWidth(int width) {
this.width = width;
}
public int getHeight() {
return height;
}
public void setHeight(int height) {
this.height = height;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
}
9.游戏端创建各个类的对象
private Buffoon buffoon=new Buffoon(570,300,this);
private Missile missile=new Missile(550,300,this);
private Wall wall