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.mzph.cn/news/617156.shtml

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

相关文章

【ACL 2023】 The Art of Prompting Event Detection based on Type Specific Prompts

【ACL 2023】 The Art of Prompting: Event Detection based on Type Specific Prompts 论文:https://aclanthology.org/2023.acl-short.111/ 代码:https://github.com/VT-NLP/Event_APEX Abstract 我们比较了各种形式的提示来表示事件类型&#xff0…

生成式AI,发展可持续吗?

最近有消息透露,OpenAI预计在2024年实现16亿美元的年化收入。相较于去年10月预测的13亿美元,这一数字增长了3亿美元,增长部分主要来源于ChatGPT订阅、API接入以及其他业务。 与此同时,其竞争对手Anthropic预计年化收入至少为8.5亿…

Goby 漏洞发布|用友 NC registerServlet 反序列化远程代码执行漏洞

漏洞名称:用友 NC registerServlet 反序列化远程代码执行漏洞 English Name:Yonyou NC registerServlet Deserialize Remote Code Execute Vulnerability CVSS core: 9.8 影响资产数: 21320 漏洞描述: 用友 NC Cloud 是一种商…

UVa1308/LA2572 Viva Confetti

题目链接 本题是2002年ICPC亚洲区域赛金沢(日本)赛区的H题 题意 我已经把n个圆盘依次放到了桌面上。现按照放置顺序依次给出各个圆盘的圆心位置和半径,问最后有多少圆盘可见?如下图所示。 分析 《训练指南》的题解: 题目说“保证在对输入数据…

Kafka配置Kerberos安全认证及与Java程序集成

Background 本文主要介绍在 Kafka 中如何配置 Kerberos 认证,以及 java 使用 JAAS 来进行 Kerberos 认证连接。本文演示为单机版。 所用软件版本 查看 Kerberos 版本命令:klist -V 软件名称版本jdk1.8.0_202kafka2.12-2.2.1kerberos1.15.1 1、Kerberos …

vivado 使用项目摘要、配置项目设置、仿真设置

使用项目摘要 Vivado IDE包括一个交互式项目摘要,可根据设计动态更新命令被运行,并且随着设计在设计流程中的进展。项目摘要包括概览选项卡和用户可配置的仪表板,如下图所示。有关信息,请参阅《Vivado Design Suite用户指南&…

Python基础知识:整理11 模块的导入、自定义模块和安装第三方包

1 模块的导入 1.1 使用import 导入time模块,使用sleep功能(函数) import time print("start") time.sleep(3) print("end")1.2 使用from 导入time的sleep功能 from time import sleep print("start") slee…

高级分布式系统-第6讲 分布式系统的容错性--可靠的组通信

可靠的组通信 组内通信最好是每个进程之间都建立点到点的通信, 但实际中这样的组织结构不是有效的, 因为会浪费很大的通信带宽。 在平等组中, 多播是主要的组织结构。 但多播是具有同步性质的容错结构, 并不适用拜占庭模型。 多…

LeetCode刷题笔记

面试经典150题 1. 数组/字符串 1.1 合并两个有序数组 题目 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺…

spring Data Elasticsearch入门

1.Elasticsearch Elasticsearch提供了两种连接方式: transport:通过TCP方式访问ES。(已废弃) rest:通过HTTP API 方式访问ES。 描述: Spring Data Elasticsearch 项目提供了与Elasticsearch 搜索引擎的集成…

17. 电话号码的字母组合(回溯)

从第一个数字开始遍历其对应的字母&#xff0c;将其加入StringBuffer中&#xff0c;继续深度优先搜索&#xff0c;当访问到最后一个数字的时候&#xff0c;将StringBuffer存储到ans中&#xff0c;然后回溯到下一个对应字母。 class Solution {public List<String> lette…

instanceof、对象类型转化、static关键字

instanceof 与 对象类型转换 instanceof是判断一个对象是否与一个类有关系的关键字 先看引用类型&#xff0c;再看实际类型 *例子&#xff1a;obj instanceof A 先看obj的类型是否与A有关联&#xff0c;无关联则报错&#xff0c;有关联则判断obj的实际类型 因为obj的实际类…

系分笔记数据库反规范化、SQL语句和大数据

文章目录 1、概要2、反规范化3、大数据4、SQL语句5、总结 1、概要 数据库设计是考试重点&#xff0c;常考和必考内容&#xff0c;本篇主要记录了知识点&#xff1a;反规范化、SQL语句及大数据。 2、反规范化 数据库遵循范式的设计&#xff0c;使得多表查询和连接表查询较多的时…

【面试突击】网关系统面试实战

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

基于JAVA+ssm开发的中草药智能采购管理系统设计与实现【附源码】

基于JAVAssm开发的中草药智能采购管理系统设计与实现【附源码】 &#x1f345; 作者主页 央顺技术团队 &#x1f345; 欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; &#x1f345; 文末获取源码联系方式 &#x1f4dd; 项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.…

stable diffusion代码学习笔记

前言&#xff1a;本文没有太多公式推理&#xff0c;只有一些简单的公式&#xff0c;以及公式和代码的对应关系。本文仅做个人学习笔记&#xff0c;如有理解错误的地方&#xff0c;请指出。 本文包含stable diffusion入门文献和不同版本的代码。 文献资源 本文学习的代码&…

Android基于Matrix绘制PaintDrawable设置BitmapShader,以手指触点为中心显示原图像圆图,Kotlin(2)

Android基于Matrix绘制PaintDrawable设置BitmapShader&#xff0c;以手指触点为中心显示原图像圆图&#xff0c;Kotlin&#xff08;2&#xff09; 在 https://zhangphil.blog.csdn.net/article/details/135374279 基础上&#xff0c;增加一个功能&#xff0c;当手指在上面的图片…

【DevOps-08-3】Jenkins容器内部使用Docker

一、简要描述 构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker。 二、配置和操作步骤 1、修改宿主机docker.sock权限 # 修改docker.sock 用户和用户组都为root $ …

2024年甘肃省职业院校技能大赛信息安全管理与评估 样题二 模块二

竞赛需要完成三个阶段的任务&#xff0c;分别完成三个模块&#xff0c;总分共计 1000分。三个模块内容和分值分别是&#xff1a; 1.第一阶段&#xff1a;模块一 网络平台搭建与设备安全防护&#xff08;180 分钟&#xff0c;300 分&#xff09;。 2.第二阶段&#xff1a;模块二…

vue-virtual-scroll-list(可单选、多选、搜索查询、创建条目)

element-ui-解决下拉框数据量过多问题&#xff08;vue-virtual-scroll-list&#xff09;_element-ui下拉框数据太多如何优化-CSDN博客 的升级版 参考链接&#xff1a;封装el-select&#xff0c;实现虚拟滚动,可单选、多选、搜索查询、创建条目-CSDN博客 1.封装组件 select.v…