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);//初始化自己坦克}@Overridepublic 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 {//定义MyPanelMyPanel 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);//初始化自己坦克}@Overridepublic 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("其他暂时不做处理");}}
}

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/344056.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pandas十大练习题,掌握常用方法

文章目录 Pandas分析练习题1. 获取并了解数据2. 数据过滤与排序3. 数据分组4. Apply函数5. 合并数据6. 数据统计7. 数据可视化8. 创建数据框9. 时间序列10. 删除数据 代码均在Jupter Notebook上完成 Pandas分析练习题 数据集可从此获取: 链接: https://pan.baidu.co…

基于Linux的Flappy bird游戏开发

项目介绍 主要是使用C语言实现,开启C项目之旅。 复习巩固C语言、培养做项目的思维。 功能: 按下空格键小鸟上升,不按下落; 显示小鸟需要穿过的管道; 小鸟自动向右飞行;(管道自动左移和创建&a…

数字图像处理常用算法的原理和代码实现详解

本专栏详细地分析了常用图像处理算法的数学原理、实现步骤。配有matlab或C实现代码,并对代码进行了详细的注释。最后,对算法的效果进行了测试。相信通过这个专栏,你可以对这些算法的原理及实现有深入的理解!   如有疑问&#xf…

NVMe系统内存结构 - PRP与PRP List

NVMe系统内存结构 - PRP与PRP List 1 为什么需要PRP2 PRP3 PRP List4 PRP寻址算法4.1 仅PRP1指向数据4.2 PRP1指向数据,PRP2指向数据4.3 PRP1指向数据,PRP2指向PRP List 本文属于《 NVMe协议基础系列教程》之一,欢迎查看其它文章。 1 为什么…

逆向分析爬取网页动态

本例子以爬取人民邮电出版社网页新书的信息为例 由于页面是动态的,信息会不停地更新,所以不同时间的爬取结果会不同。

每天刷两道题——第十四天

1.1矩阵置零 给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用原地算法。 输入:matrix [[0,1,2,0],[3,4,5,2],[1,3,1,5]] 输出:[[0,0,0,0],[0,4,5,0],[0,3,1,0]] 原地算法(…

Github项目推荐-Insomnia

项目地址 GitHub地址:GitHub - Kong/insomnia 官网:The Collaborative API Development Platform - Insomnia 项目简述 想必大家都知道PostMan吧。Insomnia可以说是PostMan的开源平替。页面ui很不错,功能强大,使用也比较方便。…

vue项目之.env文件.env.dev、test、pro

.env文件是vue运行项目时的环境配置文件。 .env: 全局默认配置文件,所有环境(开发、测试、生产等)均会加载并合并该文件 .env.development(开发环境默认命名) 开发环境的配置,文件名默认为.env.development,如果需要改名也是可以的&#xf…

Asp .Net Core 系列: 集成 Consul 实现 服务注册与健康检查

文章目录 什么是 Consul?安装和运行 ConsulAsp .Net Core 如何集成 Consul 实现服务注册和健康检查Consul.AspNetCore 中的 AddConsul 和 AddConsulServiceRegistration 方法 究竟做了什么?AddConsul 方法AddConsulServiceRegistration 方法 配置 Consul 检查服务封…

【Spring 篇】基于XML的Spring事务控制详解

Spring框架作为Java开发中的瑞士军刀,提供了许多方便而强大的功能,其中之一就是事务管理。事务是数据库操作中的关键概念,它确保一系列操作要么全部成功,要么全部失败。今天我们将深入探讨基于XML配置的Spring事务控制&#xff0c…

计算机找不到msvcr100.dll的多种解决方法分享,轻松解决dll问题

msvcr100.dll作为系统运行过程中不可或缺的一部分,它的主要功能在于提供必要的运行时支持,确保相关应用程序能够顺利完成编译和执行。因此,当操作系统或应用程序在运行阶段搜索不到该文件时,自然会导致各类依赖于它的代码无法正常…

服务器应用相关代码

1:建立基本网络服务器 我们的ESP866-NodeMCU虽然也能实现网络服务器的一些功能,但是毕竟它的运算能力是无法与那些昂贵的服务器电脑相媲美的,因此ESP8266-NodeMCU只能实现一些基本的网络服务功能。网络服务是一个很宽泛的概念,我…