编程知识 cdmana.com

Java写的第一个小游戏

实现思路

1.如何分析?

第一步:发现类(对象)

           	人物-小丑(敌方-友方):
	        子弹-帽子:
     墙体:
	     爆炸物:

第二步:发现属性

	        小丑:  宽高 , 位置(x y), 移动速度
            帽子:  宽高 , 位置(x y), 移动速度
		墙体:  宽高 , 位置(x y)
		爆炸物:宽高 , 位置(x y)

第三步:发现方法

		小丑:   移动 , 攻击 , 人物撞边界 ,
		子弹:   移动 , 子弹撞墙 , 子弹撞边界 ,
		墙体:   静止不动
      爆炸物: 爆炸物消失

2.难点在哪里?

1 如何将图片加载到窗体里

  • 背景图片加载
  • 人物-小丑加载
  • 发射物-帽子加载 Missile
  • 墙体-加载 Wall
  • 爆炸物-加载 Explode

2 如何创建窗体

3 如何发射子弹(如何使用键盘触发事件的)

3.二期版本

  • 接入网络,多人作战

第一天的实现

1.创建一个项目(ylm)

2.导入需要使用到的图片文件到Java

3.在项目的src中创建包(com.ytzl.ylm1)

4.在com.ytzl.ylm1包中创建子包——工具包(util)并写调用图片方法

public static Image getImage(String imgPath) {
   
   
    ImageIcon imageIcon = new ImageIcon(imgPath);
    return imageIcon.getImage();
}

5.在com.ytzl.ylm1包中创建游戏客户端类(GameClient)并继承Frame类

6.实现游戏窗口

//定义背景图片的路径
public static final String BG_PATH = "images/bg.png";
// 定义一个图片的静态变量
private static Image image;
// 静态块,所有资源(图片,音频,视频)只需要加载一次
static {
   
   
    image =  CommonUtils.getImage(BG_PATH);
}
/**
 * 游戏入口
 */
public static void main(String[] args) {
   
   
    GameClient gameClient = new GameClient();
    // 开始游戏
    gameClient.start();
}

/**
 * 开始游戏
 */
public void start() {
   
   
    System.out.println("游戏马上开始,请玩家做好准备");
    //TODO 游戏业务
    //设置标题
    this.setTitle("原谅帽带战");
    //设置窗体的大小以及位置
    this.setBounds(0, 0, 700, 500);
    // 让窗体显示出来
    this.setVisible(true);
    System.out.println("Game Over!!!");
}

7.插入背景图片

/**
 * 画画,重写父类的paint方法
 * Graphics 画笔类
 *
 * @param g 画笔
 */
@Override
public void paint(Graphics g) {
   
   
    // 画背景图
    g.drawImage(image, 0, 0, 700, 500, this);

}

8.插入人物图片(创建人物类 Buffoon)

// 人物图片属性
public static final Image buffoonImage= CommonUtils.getImage("images/body/s-left.png");
// 人物-横坐标
private int x;
// 人物-纵坐标
private int y;
// 图片-宽度
private int width;
// 图片-高度
private int height;
// 人物-速度
private int speed;

8.1插入人物图片(客户端实现)

// 创建人物-小丑
private Buffoon buffoon = new Buffoon();
// 画人物图-小丑
g.drawImage(Buffoon.buffoonImage, 160, 100, 50, 50, this);

9.插入帽子图片(创建帽子类)

//发射物图片路径属性
public static final Image missileImage = CommonUtils.getImage("images/missile.png");
// 帽子-高度
private int height;
// 帽子-长度
private int width;
// 帽子-速度
private int speed;
// 帽子-横坐标
private int x;
// 帽子-纵坐标
private int y;

9.1插入帽子图片(客户端实现)

// 创建发射物-帽子
private Missile missile = new Missile();
// 画发射物图-帽子
g.drawImage(Missile.missileImage,200,200,20,20,this);

10.插入障碍物图片(创建障碍物类Wall)

//横墙体图片属性
public static final Image wallImageH = CommonUtils.getImage("images/wall-h.png");
//纵墙体图片属性
public static final Image wallImageZ = CommonUtils.getImage("images/wall-v.png");
//墙体-高度
private int height;
//墙体-长度
private int width;
//墙体-横坐标
private int x;
//墙体-纵坐标
private int y;

10.1插入障碍物图片(在客户端实现)

// 创建墙体
private Wall wall=new Wall();
// 画墙
g.drawImage(Wall.wallImageH,220,120,70,30,this);
g.drawImage(Wall.wallImageZ,430,230,30,70,this);

11.插入爆炸物图片(创建爆炸物类Explode)

//发射物图片路径属性
public static final Image explodeImage = CommonUtils.getImage("images/explode.png");
//墙体-高度
private int height;
//墙体-长度
private int width;
//墙体-横坐标
private int x;
//墙体-纵坐标
private int y;

11.1插入爆炸物图片(在客户端实现)

// 创建爆炸物
private Exception exception=new Exception();
// 画爆炸物
g.drawImage(Explode.explodeImage,500,300,70,70,this);

第一天(完成)效果图如下:

在这里插入图片描述

版权声明
本文为[osc_jmtenr3d]所创,转载请带上原文链接,感谢
https://my.oschina.net/u/4330404/blog/4713997

Tags java
Scroll to Top