02. 坦克大战项目-准备工作和绘制坦克

02. 坦克大战项目-准备工作和绘制坦克

01. 准备工作

1. 首先我们要创建四个类

1. Tank类

介绍:Tank 类主要用来表示坦克的基本属性和行为

public class Tank {
   
    private int x;//坦克的横坐标
    private int y;//坦克的纵坐标

    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 Tank(int x, int y) {
   
        this.x = x;
        this.y = y;

    }
}
2. Hero类

介绍:Hero 类:
继承自 Tank 类,表示游戏中的主角坦克。
通过 super(x, y) 调用父类构造方法,初始化主角坦克的位置。

public class Hero extends Tank{
   
    public Hero(int x, int y) {
   
        super(x, y);
    }
}
3. MyPanel类

介绍:MyPanel类:
继承自 JPanel,用于绘制游戏的绘图区域。
包含一个名为 heroHero 对象,表示游戏中的主角坦克。
在构造方法中初始化主角坦克的位置。
重写了 paint 方法,用于绘制游戏区域。当前代码中只是填充了一个黑色矩形,表示游戏区域。

import javax.swing.*;
import java.awt.*;

public class MyPanel extends JPanel {
   
    //定义我的坦克
    Hero hero = null;
    public MyPanel() {
   
        hero = new Hero(100, 100);//初始化自己坦克
    }

    @Override
    public void paint(Graphics g) {
   
        super.paint(g);
        g.fillRect(0, 0, 1000, 750);//填充矩形,默认黑色
    }
}
4. YzjTankGame01类

介绍:YzjTankGame01 类:
继承自 JFrame,表示游戏的主窗口。
包含一个名为 mpMyPanel 对象,用于绘制游戏的绘图区域。
在构造方法中初始化 MyPanel 对象,并将其添加到主窗口中。设置了主窗口的大小、关闭操作,并显示主窗口。

import javax.swing.*;

public class YzjTankGame01 extends JFrame {
   
    //定义MyPanel
    MyPanel mp = null;
    public static void main(String[] args) {
   
        YzjTankGame01 yzjTankGame01 = new YzjTankGame01();
    }
    public YzjTankGame01() {
   
        mp = new MyPanel();
        this.add(mp);//把面板(就是游戏的绘图区域)
        this.setSize(1000, 750);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

02. 绘制坦克

1. 思路

  1. 对于坦克的绘制首先我们要有一个思路
  2. 采用两个相同的矩形作为坦克侧面,一个矩形和一个圆和一条线作为坦克的主体

2.开始绘制

package com.yzjedu.tankgame;

import javax.swing.*;
import java.awt.*;

/**
 * 4.0 坦克大战的绘图区域
 **/
public class MyPanel extends JPanel {
   
    //定义我的坦克
    Hero hero = null;
    public MyPanel() {
   
        hero = new Hero(100, 100);//初始化自己坦克
    }

    @Override
    public void paint(Graphics g) {
   
        super.paint(g);
        g.fillRect(0, 0, 1000, 750);//填充矩形,默认黑色

        //画出坦克-封装方法
        drawTank(hero.getX(), hero.getY(), g, 0, 0);
    }
    //编写方法,画出坦克

    /**
     *
     * @param x 坦克的左上角x坐标
     * @param y 坦克的左上角y坐标
     * @param g 画笔
     * @param direct 坦克方向,上下左右
     * @param type 坦克类型
     */
    public void drawTank(int x, int y, Graphics g, int direct,int type) {
   

        switch (type) {
   
            case 0: //我们坦克
                g.setColor(Color.cyan);
                break;
            case 1: //敌人坦克
                g.setColor(Color.yellow);
                break;
        }
        //根据坦克的方向来绘制坦克
        switch (direct) {
   
            case 0: //表示向上
                g.fill3DRect(x, y, 10, 60, false);//画出坦克左边的轮子
                g.fill3DRect(x + 30, y, 10, 60, false);//画出坦克右边的轮子
                g.fill3DRect(x + 10, y + 10, 20, 40, false);//画出坦克主体
                g.fillOval(x + 10, y + 20, 20,20);//画出坦克盖子
                g.drawLine(x + 20, y + 30, x + 20, y);
                break;
            default:
                System.out.println("其他暂时不做处理");
        }
    }
}

这样我们一个基础的坦克就完成了,后续章节进入进一步的完善
坦克

相关推荐

  1. pygame--坦克大战(二)

    2024-01-13 02:10:06       39 阅读
  2. 项目-坦克大战

    2024-01-13 02:10:06       29 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-01-13 02:10:06       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-01-13 02:10:06       106 阅读
  3. 在Django里面运行非项目文件

    2024-01-13 02:10:06       87 阅读
  4. Python语言-面向对象

    2024-01-13 02:10:06       96 阅读

热门阅读

  1. 69、python - 利用向量内积来优化卷积运算

    2024-01-13 02:10:06       49 阅读
  2. 如何解决TCP拥塞问题?

    2024-01-13 02:10:06       62 阅读
  3. LeetCode878. Nth Magical Number

    2024-01-13 02:10:06       53 阅读
  4. vue3中el-table实现表格合计行

    2024-01-13 02:10:06       66 阅读
  5. [ECE]1.3 Basic logic operations

    2024-01-13 02:10:06       48 阅读
  6. 3 微信小程序

    2024-01-13 02:10:06       51 阅读
  7. 面试题-回溯算法解法模板

    2024-01-13 02:10:06       55 阅读
  8. 数据库面经---10则

    2024-01-13 02:10:06       61 阅读