设计模式之Tank大战01

1.项目搭建

源码地址:坦克大战源码

开发工具:Jdk1.8 、idea

新建一个Java项目:File-->Project-->Java-->一路next-->输入自己的项目名称就可以了。

例如:

2.初识Frame

新建一个T类,创建一个窗口,设置窗口的宽度和高度,设置标题,并且添加监听事件

import java.awt.*;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

public class T extends Frame {
    public static void main(String[] args) {
        Frame frame = new Frame();
        //设置窗口的尺寸
        frame.setSize(800,600);
        //参数设置为true,当程序运行时,窗口显示
        frame.setVisible(true);
        //设置窗口标题
        frame.setTitle("Tank war");
        //点击窗口X关闭窗口,添加监听事件
        frame.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }
}

3.Tank大战初识

新建一个TankFrame,里面没有main方法,目的是为了把T.class里面的东西,封装到一个类,让别的类调用

1.写一个构造方法,初始化窗口,让别的类可以调用

public TankFrame(){
        //设置窗口的尺寸
        this.setSize(800,600);
        //设置窗口位置
        this.setLocation(500,200);
        //参数设置为true,当程序运行时,窗口显示
        this.setVisible(true);
        //设置窗口标题
        this.setTitle("Tank war");
        //点击窗口X关闭窗口,添加监听事件
        this.addWindowListener(new WindowAdapter() {
            @Override
            public void windowClosing(WindowEvent e) {
                System.exit(0);
            }
        });
    }

2.在TankFrame类里面重写paint方法:

 /**
     * 重写paint方法,然后在窗口中指定位置画出一个矩形
     * @param g
     */
    @Override
    public void paint(Graphics g){
        g.fillRect(200,200,25,25);
    }

3.新画出的这个方块,如何通过移动上下左右键让他动起来?

3.1添加键盘监听类

 /**
     * 键盘监听处理类
     */
    class MyKeyListener extends KeyAdapter{
        //按下一个键的时候
        @Override
        public void keyPressed(KeyEvent e) {
            int key = e.getKeyCode();
            switch (key){
                case KeyEvent.VK_LEFT:
                    x-=10;
                    break;
                case KeyEvent.VK_UP:
                    y-=10;
                    break;
                case KeyEvent.VK_RIGHT:
                    x+=10;
                    break;
                case KeyEvent.VK_DOWN:
                    y+=10;
                    break;
                    default:
                        break;
            }
        }
        //按键抬起的时候
        @Override
        public void keyReleased(KeyEvent e) {
            super.keyReleased(e);
        }
    }

3.2如果按键改变的不是每次+10或者减10,这时候又要改变源码,所以优化代码,请看篇二

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值