Java面向对象---原谅帽游戏

本文档详细记录了一个使用Java开发的面向对象游戏——原谅帽射击游戏的制作过程,涵盖了从游戏构思、难点突破到具体实现的各个步骤。游戏包括小丑、子弹、墙体和爆炸物等对象,涉及图片加载、窗口创建、键盘监听以及防止闪屏等技术。通过游戏结束方法、线程重新绘制图像等机制,实现了游戏的流畅运行。
摘要由CSDN通过智能技术生成

作品展示

在这里插入图片描述
第一天:类(游戏端)继承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
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值