☕循序渐进学Java笔记(Chapter16_坦克大战[1])
2024-4-26
| 2024-5-9
字数 1355阅读时长≈ 4 分钟
@ZZHow(ZZhow1024)
参考课程:
【韩顺平 循序渐进学Java】
本章 Project:

0568_坦克大战介绍

  • 项目:坦克大战1.0

0569_Java坐标体系

  • 坐标体系-介绍
    • 坐标原点位于左上角,以像素为单位。在 Java 坐标系中,第一个是 x 坐标,表示当前位置为水平方向,距离坐标原点 x 个像素;第二个是 y 坐标,表示当前位置为垂直方向,距离坐标原点 y 个像素。
  • 坐标体系-像素
      1. 重要的概念 ——— 像素
      1. 计算机在屏幕上显示的内容都是由屏幕上的每一个像素组成的。例如,计算机显示器的分辨率是 800 × 600,表示计算机屏幕上的每一行由 800 个点组成,共有 600 行,整个计算机屏幕共有 480000 个像素。像素是一个密度单位,而厘米是长度单位,两者无法比较

0570_绘图入门和机制

  • 案例:绘制一个圆
    • 绘图原理:
      • Component 类提供了两个和绘图相关最重要的方法:
          1. paint(Graphics g) 绘制组件的外观
          1. repaint() 刷新组件的外观
      • 当组件第一次在屏幕显示的时候,程序会自动的调用 paint() 方法来绘制组件
      • 在以下情况 paint() 将会被调用:
          1. 窗口最小化,再最大化
          1. 口的大小发生变化
          1. repaint 方法被调用
    案例演示:com.zzhow.draw 中的 DrawCircle.java

    0571_绘图方法

    • Graphics 类
      • Graphics 类可以理解成画笔,为我们提供了各种绘制图形的方法。
        1. 画直线 drawLine(int x1, int y1, int x2, int y2);
        1. 画矩形边框 drawRect(int x, int y, int width, int height);
        1. 画椭圆边框 drawOval(int x, int y, int width, int height);
        1. 填充矩形 fillRect(int x, int y, int width, int height);
        1. 填充椭圆 fillOval(int x, int y, int width, int height);
        1. 画图片 drawlmage(Image img, int x, int y, ...);
        1. 画字符串 drawString(String str, int x, int y);
        1. 设置画笔的字体 setFont(Font font);
        1. 设置画笔的颜色 setColor(Color c);
    案例演示:com.zzhow.draw 中的 GraphicsMethod.java

    0572_绘制坦克游戏区域

    • 坦克部分:
      • 父类:Tank.java
      • 我方坦克:MyTank.java
    • 游戏绘图区域:
      • MyPanel.java
      • 绘制灰色矩形
    • 入口程序:
      • TankGame01.java

    0573_绘制坦克

    • 绘制坦克封装到 drawTank 方法中

    0574_小球移动案例

    • 案例:让小球受到键盘控制,上下左右移动
    案例演示:com.zzhow.event 中的 BallMove.java

    0575_事件处理机制

    • 基本说明
      • Java 事件处理是采取 “委派事件模型”。当事件发生时,产生事件的对象,会把此 “信息” 传递给 “事件的监听者” 处理,这里所说的 “信息” 实际上就是 java.awt.event 事件类库里某个类所创建的对象,把它称为 “事件的对象”。
    • 示意图
      • Java 事件监听机制示意图
        Java 事件监听机制示意图
    • 事件处理机制深入理解
        1. 几个重要的概念:事件源、事件 和 事件监听器
        1. 事件源:一个产生事件的对象,比如按钮,窗口等
        1. 事件:承载事件源状态改变时的对象,比如当键盘事件、鼠标事件、窗口事件等等,会生成一个事件对象,该对象保存着当前事件很多信息,比如 KeyEvent 对象有被按下键的 Code 值。java.awt.event 包和 javax.swing.event 包中定义了各种事件类型
        1. 事件类型:
          1. 事件类型
            事件类型
        1. 事件监听器接口:
          1. 当事件源产生一个事件,可以传送给事件监听者处理
          2. 事件监听者实际上就是一个类,该类实现了某个事件监听器接口,比如案例中的 MyPanel 就是一个类,它实现了 KeyListener 接口,它就可以作为一个事件监听者,对接受到的事件进行处理
          3. 事件监听器接口有多种,不同的事件监听器接口可以监听不同的事件,一个类可以实现多个监听接口
          4. 这些接口在 java.awt.event 包和 javax.swing.event 包中定义。
          5. 事件监听器接口
            事件监听器接口

    0576_绘制坦克上下左右

    • 绘制坦克朝向上下左右时的情形

    0577_坦克动起来

    • Tank 类添加 direction 和 speed 属性
    • Tank 类添加 moveUp()、moveDown()、moveLeft() 和 moveRight() 方法

    0578_绘制敌人坦克

    • 分析:
        1. 代码在 MyPanel.java
        1. 以单开一个 EnemyTank 类
        1. 敌人坦克数量多且需要考虑多线程问题,可以放入到集合 Vector 中
  • 文字
  • 推荐
  • Java
  • 学技术
  • 循序渐进学Java笔记(Chapter17_多线程基础)循序渐进学Java笔记(Chapter15_泛型)
    Loading...