飞机大战1.1

任务一:

  1. 游戏窗口可以使用鼠标调大小。

不允许窗口的大小可调。setResizable(false)

  1. 设置窗口的位置在屏幕的正中间

setLocationRelativeTo(null);

  1. 设置窗口的大小为400*600,这样的方式后期修改很困难。

把这两个数据存在变量中,后期修改变量的值就行了。

存放大小的变量定义到一个专门存放游戏需要修改的数据的类GameData类中。

 

任务二:

在游戏窗口中包含一个游戏面板。

思路:

  1. 创建游戏面板的类

继承于一个面板的父类,javax.swing包中的JPanel

初始化大小和背景色

setSize();

setBackground(Color.RED)

  1. 创建游戏面板的对象

GamePanel gamePanel; 类体中声明对象

在GameWindow构造方法中产生对象

gamePanel = new GamePanel();

  1. 把游戏面板的对象放入游戏窗口对象中。

this.add(gamePanel);

 

任务三: 为了验证游戏面板的大小是不是400*600

在游戏面板中画一个椭圆400*600。

?谁画的游戏面板,谁画的游戏窗口

游戏面板,游戏窗口都从他们的父类那里继承了一个paint()方法,这个方法就是绘制组件的方法。

如果我们想画其他的内容,需要重写这个方法。

在GamePanel类中,鼠标右击

 

 (1)、GameData类

package dsj;

public class GameData {
//    设置游戏宽度和高度
    public static int GameWidth = 400;
    public static int GameHeight = 600;
}

(2)、GamePanel类

package dsj;

import java.awt.Color;
import java.awt.Graphics;

import javax.swing.JPanel;

public class GamePanel extends JPanel {
    public GamePanel() {
        //初始化大小
        this.setSize(GameData.GameWidth, GameData.GameHeight);
        //设置背景色
        this.setBackground(Color.CYAN);
    }

    @Override
    public void paint(Graphics g) {
        // TODO 自动生成的方法存根
        super.paint(g);
        //绘制一个椭圆
                g.fillOval(0, 0, GameData.GameWidth, GameData.GameHeight);
    }


}

(3)、GameWindow类

package dsj;

import javax.swing.JFrame;
    
public class GameWindow extends JFrame {
    GamePanel gamePanel;
//        写窗口类的构造方法,初始化窗口对象
        public GameWindow() {
//            设置窗口大小
            this.setSize(GameData.GameWidth,GameData.GameHeight);
//            窗口的可见性
            this.setVisible(true);
//            设置标题
            this.setTitle("飞机大战");
            //设置窗口的位置在上层组件或屏幕的中间。
            this.setLocationRelativeTo(null);
            
            //产生GamePanel的对象
            gamePanel = new GamePanel();
            //在当前的窗口对象中添加这个GamePanel的对象
            this.add(gamePanel);

        }

}

效果展示

 

posted @ 2020-06-18 08:09  贫僧敲代码  阅读(139)  评论(0)    收藏  举报