坦克大战实验报告

合集下载

坦克大战 实验报告

坦克大战 实验报告

本科实验报告课程名称:Java语言程序设计实验项目:TankWar实验地点:致远楼B403专业班级:软件工程1219 学号:2012005496 学生姓名:柴丁方指导教师:任少斌2014年 1 月7 日import java.awt.*;import java.awt.event.*;public class TankWarClient extends Frame {//构造游戏开始的界面public void KaiShiJieMian() {this.setLocation(400,200); //游戏窗口的左上点在屏幕的位置this.setSize(800, 600);//游戏窗口的尺寸//使按窗口的“X”时,可以关闭程序较上一次实验添加的代码段为:public void paint (Graphics g) {Color c = g.getColor();//color类是 java。

awt 中的,因此可以直接 color cg.setColor(Color.green);// 类 java.awt.Graphics 中的方法,将此图形上下文的当前颜色设置为指定颜色。

g.fillOval(50, 50, 30, 30);//int x, int y,int width,int height,分别为坐标与椭圆的长宽g.setColor(c);}变更2:较上一次实验添加的代码段为:1.更改如下代码段中的“常量值”为“x”“y”,使所填充的椭圆位置可以随值改变,为静态的图形动起来打下了基础。

static int x=50,y=50;实验四:从版本0.4到版本0.41变更1:变更2:较上一次实验添加的代码段为:1.public class TankWarClient extends Frame {Image offScreenImage = null;}//先把内存的offScreenImage清空较上一次实验添加的代码段为:1.TankWarClient类中:2.3.较上一次实验修改的代码段为:public class Tank {public static final int XSPEED = 5;public static final int YSPEED = 5;private int x, y;private boolean bL=false, bU=false, bR=false, bD = false;enum Direction {L, LU, U, RU, R, RD, D, LD, STOP};private Direction dir = Direction.STOP;//此处为构造函数。

拓展项目——坦克大战(共5则)

拓展项目——坦克大战(共5则)

拓展项目——坦克大战(共5则)第一篇:拓展项目——坦克大战坦克大战明阳天下拓展项目简介团队的所有成员在规定的时间和规则的约束下,进行角色分配后,蒙上双眼依次进入模拟战场,在躲避地雷的同时用炮弹尽可能的击中对手,最终战场剩余人数最多的小组获胜。

项目规则1、每队队员同时蒙眼进入雷区,听由场外队员指挥捡炮弹,中途如有触碰地雷,该队员视为中弹身亡,由下一名队员顶替;2、场内队员蒙眼听从场外队员的指挥,捡起炮弹,击中对方队员身体任意部位,即可淘汰对方队员继续存活;3、场外队员只能在限定的区域内活动,不可触发到其他组的区域;4、最后场外留有人数最多组获胜。

项目目标有效沟通,战略与决策,在特殊的情况下如何和其他学员进行有效沟通;团队的力量如何发挥才能体现最大的力量;怎样才能是更合理的指挥方式;默契程度和信任度的考验。

北京明阳天下拓展培训机构是国内体验培训领域的“黄埔军校”。

在体验式培训、户外教育理论、专项主题研究、软件实操开发等软件设施方面已走在行业前列;而硬件拓展设备、拓展器材、拓展设施设计建造和大型独资实操基地等硬件设施方面同样领先全国。

强大的课程研发队伍,与国际接轨的先进培训理念,完善的硬件设备,优越的服务意识,明阳天下拓展始终秉承“专业致胜,效果为王”的理念,为成千上万的客户打造专业化、高标准的拓展培训方案。

第二篇:坦克大战大报告大作业题目:坦克大战程序一、需求分析功能需求坦克大战其中包括对主战坦克的编写、坦克的初始位置的编写、坦克的移动方向的编写、坦克的速度的编写、坦克的子弹速度的编写、敌军的子弹速度的编写、设置游戏难度的编写、子弹的编写、敌军坦克的编写、构造函数的编写,初始化敌军坦克的位置和状态的编写、键盘控制坦克的移动的编写、发弹的编写、判断是否被击中的编写、判断是否击中敌军的编写等。

通过上下左右键进行对坦克的移动,通过F键发射子弹,其它坦克可以随机移动。

构造主窗口中所需要的类,并将坦克加到窗口中,实现坦克的四个方向的移动并创建炮弹类,并让屏幕中的坦克能发射炮弹,让坦克可以朝对方信息统计功能,在游戏界面左上角,显示当前屏幕子弹数。

JAVA坦克大战课程设计

JAVA坦克大战课程设计

JAVA坦克大战课程设计实验报告专业班级:计算机学号:201110000姓名:指导老师:JAVA坦克大战课程设计一、课程设计目的Java坦克大战程序设计的课程程序设计是我们学习完Java语言程序设计课程后,进行的一次全面的综合设计,其目的是加深对理论教学内容的理解和掌握,使学生综合运用.学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下基础。

二、课程设计的预备知识和实验环境熟悉Java语言以及eclipse开发工具,实验环境为JDK1.6。

三、课程设计的主要内容坦克大战游戏是在eclipse环境下编程的游戏,其中包括对主坦克的编写、坦克的初始位置的编写、坦克移动方向的编写、坦克的速度的编写、坦克子弹速度的编写、敌对坦克子弹速度的编写、敌对坦克的编写等等。

游戏主要实现的功能有:1.能够四处移动2.能够打击敌人3.敌人能够移动4.能够模拟爆炸5.能够产生障碍6.能够增长生命四、程序具体设计1.版本0.1~0.2实现的主要功能:产生一个不能修改大小的窗体,并实现关闭窗体的事件处理。

源代码如下:2.版本0.3~0.5实现的主要功能:画出代表坦克的同心圆;让坦克运动起来;使用双缓冲来消除坦克移动时的闪烁现象;利用代码重构将以后可能需要多处修改的量定义为常量,例如窗体的宽度和高度(常量名一般为大写)主要代码如下: public class TankClient extends Frame {int x = 50, y = 50;public void paint(Graphics g) {Color c = g.getColor();g.setColor(Color.RED);g.fillOval(x, y, 30, 30);g.setColor(c);y += 5;}使用paint 方法来画出坦克,并将坦克的位置设置成变量来实现坦克的移动。

p ublic void lauchFrame() {this.setLocation(400, 300);this.setSize(800, 600);this.setTitle("TankWar");this.addWindowListener(new WindowAdapter() {public void windowClosing(WindowEvent e) {System.exit(0);}this.setResizable(false);this.setBackground(Color.GREEN);setVisible(true);new Thread(new PaintThread()).start();}public static void main(String[] args) {TankClient tc = new TankClient();uchFrame();}private class PaintThread implements Runnable {public void run() {while(true) {repaint();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}}}}使用update来实现双缓冲结局移动时的闪烁问题public void update(Graphics g) {if(offScreenImage == null) {offScreenImage = this.createImage(GAME_WIDTH, GAME_HEIGHT);}Graphics gOffScreen = offScreenImage.getGraphics();Color c = gOffScreen.getColor();gOffScreen.setColor(Color.GREEN);gOffScreen.fillRect(0, 0, GAME_WIDTH, GAME_HEIGHT);gOffScreen.setColor(c);paint(gOffScreen);g.drawImage(offScreenImage, 0, 0, null);}在lauchFrame方法中启动线程,来实现坦克的移动,并加入sleep方法使移动出现延时。

坦克大战设计报告

坦克大战设计报告

手机版疯狂坦克游戏设计与开发摘要Java良好的跨平台特性在移动平台的开发中显示出了巨大的威力。

Java语言面向对象的优势也使得开发游戏变得非常容易。

随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。

本论文着眼于J2ME技术的应用,开发一款可商用的手机游戏程序——坦克大战。

本程序的界面和运作方式继承于日本任天堂公司在20世纪80年代开发的Battle City游戏,将老少皆宜的经典作品移植到手机上来,为更流行的硬件平台提供应用软件。

本论文介绍了任天堂红白机的软硬件特性、J2ME的相关技术及本程序的结构分析和具体功能的实现。

关键词:J2ME,手机游戏,Java,坦克大战目录1 绪论 (3)1.1开发背景 (3)1.2 开发工具 (3)1.3 开发意义 (3)2 需求分析 (6)2.1功能需求分析 (6)2.2界面需求分析 (6)3 总体设计 (7)3.1主要功能 (7)3.2 程序流程 (8)4 详细设计和具体实现 (9)4.1游戏进入前的选择 (9)4.2主游戏逻辑及其涉及到的若干类 (10)4.3坦克的共同行为 (13)4.4玩家坦克的功能属性 (14)4.5敌人坦克的功能属性 (15)4.6子弹的运行和控制 (19)4.7记分系统 (21)5.测试与实现 (22)6 程序的总结和展望 (23)1 绪论1.1开发背景在信息社会中,手机及其他无线设备越来越多的走进普通百姓的工作和生活,随着信息网络化的不断进展,手机及其他无线设备上网络势在必行。

但是传统手机存在以下弊端:1. 传统手机出厂时均由硬件厂商固化程序,程序不能增加、删除,有了错误也不能更新、修改,若要增加新功能必须另换一部手机。

2. 传统手机访问互联网是通过WAP(Wireless Application Protocal),所有网络资源必须接通网络才能在线访问,非常耗时、费用亦很高。

坦克大战实验报告总结

坦克大战实验报告总结

坦克大战实验报告总结坦克大战实验报告总结实验报告总结是对坦克大战实验进行全面回顾和总结的部分。

在这个实验中,我们设计了一个多人在线坦克对战游戏,并对其进行了测试和评估。

首先,我们通过分析游戏的玩法和功能需求,确定了实验的目标和要求。

我们的目标是创建一个具有协同和竞争性元素的多人在线游戏,通过实验测试其稳定性、可玩性和用户体验。

在实验中,我们使用了Unity引擎和C#编程语言来开发游戏。

我们设计了一个简单的地图,玩家可以在其中驾驶坦克进行对战。

我们为坦克添加了各种功能,例如移动、射击和受伤机制,以增加游戏的策略性和挑战性。

为了评估游戏的性能和用户体验,我们进行了一系列测试。

我们首先进行了功能测试,确保游戏的各项功能正常运行。

然后,我们进行了性能测试,测试游戏在不同网络环境下的延迟和帧率。

最后,我们进行了用户体验测试,收集玩家对游戏的反馈和建议。

通过实验,我们得出了以下结论:1. 游戏的核心功能运行正常,并且具有一定的可玩性和挑战性。

2. 在低延迟的网络环境下,游戏的表现良好,但在高延迟的网络环境下会出现一些延迟和卡顿的问题。

3. 玩家对游戏的操作和画面质量表示满意,但希望增加更多的地图和游戏模式来增加游戏的可玩性。

基于这些结论,我们对游戏进行了改进和优化。

我们减少了游戏的网络通信量,以降低延迟和提高游戏的流畅度。

我们还增加了更多的地图和游戏模式,以增加游戏的可玩性。

综上所述,通过本次实验,我们成功地设计并开发了一个多人在线坦克对战游戏,并对其进行了评估和改进。

我们的实验结果表明,游戏具有良好的可玩性和用户体验,但还有一些地方需要进一步优化。

我们相信,在未来的工作中,我们可以进一步改进游戏,使其更加完善和出色。

坦克大战项目总结

坦克大战项目总结

坦克项目总结一、需求分析:要实现一个坦克大战游戏。

游戏中包括我方坦克、对方坦克、障碍物(可摧毁的墙、不可摧毁的墙、草地、水面)、我方的基地。

双方坦克都不能穿越除草地以外的障碍物;游戏的玩家通过键盘控制我方坦克的前进、后退、向左、向右移动;对方坦克可以在窗体内自主移动,撞墙或边界后自动改变方向;我方坦克与对方坦克都可以发射子弹,双方坦克被敌对方的子弹打中都会有火花产生,被子弹打中后我方坦克生命值减1并且回到初始位置,对方坦克被移除;双方子弹打到墙上都有火花产生,打中后子弹被移除,可摧毁的墙被子弹打中后也会被移除;双方子弹移出窗体后被移除;当我方坦克生命值减为0或我方基地被摧毁,玩家输,游戏结束;当对方坦克全部被子弹打中,玩家赢,游戏结束。

二、游戏的设计图游戏中的类及类的关系三、游戏效果图:游戏主体图游戏结束提示1 游戏结束提示2游戏结束提示3四、游戏设计中的问题:1、我方坦克的绘制及移动问题问题描述:创建我方坦克,使其在主窗口中显示出来;按下不同的键,画出不同方向的我方坦克,然后我方坦克向不同方向移动。

解决方法:我方坦克的属性继承于坦克,所以我们现在父类Tanke中完成坦克的属性(高度,宽度,速度和位置);在My Tanke类中添加一个构造函数,在构造函数中添加我方坦克的位置;public MyTanke(){_Location = new Point(300, 600);}在主程序中添加一个paint的刷新窗体的事件,在paint方法中绘制我方坦克;void GameManager_Paint(object sender, PaintEventArgs e) {_MyTankeObj.Draw(e.Graphics);}在Tank抽象类中,定义Direction,然后在我方坦克的属性中定义坦克的四个方位,当我们按下不同的键时,改变我方坦克的方向;在MyTanke的Draw方法中,根据传过来的方向,画出不同方向的我方坦克;同样,在MyTanke的Draw方法中,根据传过来的方向,解决我方坦克的移动问题。

户外游戏案例分析《坦克大战》

户外游戏案例分析《坦克大战》

坦克大战2022.5幼儿园给孩子们准备了木质的枪以后户外自主游戏孩子们对打仗游戏非常喜欢,其中“坦克大战”游戏更是男孩子们的喜爱。

户外自主游戏材料的丰富,使孩子们的游戏玩法也多了起来。

一、搭建一个房子户外自主游戏孩子们玩着打仗游戏,每人手里拿着一把枪,在操场上跑来跑去的,我说:你们这样跑来跑去不怕被打死了?这个时候李沐泽和张宇航小朋友想起来想盖一个房子,李沐泽说:有了房子才能保护自己,坏人打不到我们,他俩先用了两个体操垫搭建房子,但这个房子总是立不住,这个时候我问他们:为什么你们的房子总是倒呢?李沐泽说:因为没有当住的东西,我说:那你们再想想还用什么材料可以利用一下呢?他们在操场上观察了半天,李沐泽突然发现了滚筒,他说:老师滚筒可以挡住体操垫,我说:那你可以试试,然后李沐泽和张宇航过去搬过来几个滚筒挡在体操垫后面,这回体操垫真的不倒了,他们又把两个滚筒放在一起,上面又放了一个体操垫当房顶,很快就盖起了一个房子,这个时候好几个小朋友看见了他们的房子,手里拿着枪又跑过来进房子里,开始了他们的打仗游戏。

图片1 搭建房子图片2 滚筒也可以保护自己教师的思考:今天的户外活动几个小朋友一开始只是没有目标的拿着木头枪来回跑,于是我就顺嘴引导了一下,你们这样跑来跑去不怕被打死了?孩子们自发的想到了要搭建一个房子,用来保护自己,幼儿想到了用体操垫盖房子保护自己,但光用体操垫总是立不住,但是幼儿没有放弃,又寻找其他的材料,用滚筒和体操垫组合起来搭建房子,这回真的成功了,最后还盖了个房顶,从这简单的搭建一个房子能看出来幼儿用材料的组合,用滚筒来当辅助支撑,表现除了积极主动、遇到问题自己想办法解决,发散创造性的思维品质、再一次体验了主动学习主动探究的完整过程,并出现了更多合作行为,发展了交往技能。

二、搭建初步的坦克户外自主游戏时孩子们连续玩了好几天打仗游戏,今天早晨做计划时候钟梓辰小朋友说:老师我要今天搭一个坦克,这样子弹也打不进来,我说好啊,你这个主意很不错,我问他那你用什么材料呀?他说:我要用安吉箱和轮胎,我说行,那你一会出去搭建一个坦克吧。

坦克大战系统《Java程序开发实训》综合实训报告

坦克大战系统《Java程序开发实训》综合实训报告

《Java程序开发实训》综合实训报告题目:坦克大战系统**:**学号:**********班级:10软件(2)班一、系统实现的主要功能及运行结果截图选择的语言的原因游戏本身是一种娱乐方式,带给人无尽的乐趣,而且游戏行业的发展也将是带动周边行业的发展。

同样对做出游戏的人的要求也会越来越高一满足游戏爱好者的要求。

本次期末设计就是设计一种娱乐性较强的小游戏坦克大战,说到大战其实是不敢当的。

但游戏基本拥有可玩性。

java语言是一种跨平台,适合与分布计算环境的面向对象编程语言,java主要用在web开发,手机游戏及一些平台游戏的开发,他有很好的跨平台性。

所以本次的设计坦克游戏选择的是java。

系统软件的软件环境1.网络服务器操作系统:Window是 XP以上2.开发工具:Eclipse3运行环境:J2sdk4.编程语言:java语言。

人机对战模式功能1.能够发射子弹打击敌人2.敌人能够移动3.能够模拟爆炸4.能够产生障碍5能够增长生命6.能够使用超级子弹坦克可以发射子弹玩家坦克被击中血量减少。

被击中的坦克发生爆炸并且吃血块可以加血量。

玩家坦克可以从把方向发射超级子弹自己的TankHealth为<=0时,。

说明玩家坦克已死亡。

游戏结束本系统的坦克大战是基于java语言设计的开发,具有较高的人工智能和相对的图形处理。

游戏可一人作战每次电脑方有10辆坦克,此一举消灭全部的敌方坦克为目的。

在这过程中坦克有机会得到血块来添加自己的生命值。

从而变得强大。

也利用wall来形成阻击敌人。

游戏拥有开挂的功能。

可以穿过墙体来攻击敌方坦克。

还给玩家坦克置了超级炮弹。

从八个方向同时射出炮弹来摧毁敌方坦克。

主要功能简单罗列如下:1.屏幕左上方显示游戏的状态,当玩家方坦克全数为0是游戏结束2.敌方坦克只在空地上行走,不可通过Wall3.游戏打坏敌方坦克后,可随机位置随机出现血块奖励。

坦克经过该位置可获得相应的生命值加成。

4.玩家坦克的游戏资格和电脑坦克不同。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

坦克大战实验报告班级:1205 姓名:许广龙学号:121010182一、系统简介使用JAVA编写一个人机游戏,有开始启动面板(Stage 1),并有闪烁效果。

在开始面板中有游戏(G)和帮助(H)两个菜单。

其中游戏(G)菜单中有开始游戏(N)、退出游戏(E)、保存游戏(S)、继续游戏(C)选项;帮助(H)菜单中有关于坦克如何操作的提示信息。

玩家有1辆坦克(有3条命),电脑有6辆坦克,我的坦克可以通过键盘控制进行移动和发射子弹,敌人坦克可自由运动并自动发射子弹。

敌人坦克相互之间不能重叠,敌人坦克与我的坦克不能重叠,我的坦克与敌人坦克不能重叠。

当子弹击中坦克时坦克死亡,并显示爆炸效果。

当我的坦克生命为0时游戏结束(显示GAMEOVER),当敌方的所有坦克死亡时游戏结束(显示VICTORY)。

二、需求分析设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来,界面能够接受用户的操作,具有人机交互功能。

用户可以选择开始游戏(N),退出游戏(E),保存游戏(S),继续游戏(C),游戏帮助(H)。

界面中包含我的坦克和敌人坦克以及坦克发出的子弹和爆炸后的效果。

坦克:坦克分为两种,敌人坦克和我的坦克。

我的坦克和敌人坦克均可以发射子弹,可以改变路径行走,且在行走过程中碰到边界或碰到其它坦克会自动换方向,坦克之间不能相互穿越。

子弹:子弹可以由敌方坦克和我的坦克发射,且发射出去的子弹可以直线移动,直到碰到其它坦克或超越边界就消失。

坦克受到一颗子弹攻击便死亡,死亡后坦克消失。

爆炸:当子弹射击到坦克身上时,要产生爆炸效果。

方向:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹的方向从属于坦克的方向。

具体功能:1、坦克可以上下左右移动2、坦克可以发子弹(可以连发,最多5发子弹)3、当坦克中弹时,坦克消失,并显示爆炸效果。

4、我的坦克被击中后显示爆炸效果5、防止敌人坦克重叠运动、我的坦克与敌人坦克重叠运动、敌人坦克与我的坦克重叠运动6、玩游戏时可以保存游戏和继续游戏7、记录玩家的成绩三、系统设计程序流程图:总体框架:项目名:TankGame1主类文件:MyFrame.java坦克父类文件:Tank.java坦克子类(我的坦克):MyTank.java坦克子类(敌人坦克):EnemyTank.java我的面板:MyPanel.java子弹类:Shot.java开始面板:MyStartPanel.java记录类:Recorder.java爆炸类:Bomb.java四、详细设计(一) 、画坦克1、Tank类class Tank{int x,y;//坦克的位置int direct;//坦克的方向int color;//坦克的颜色,值为0时为的我的坦克,为1时为敌人的坦克int speed;public Tank(int x, int y) {this.x = x;this.y = y;}setter与getter方法(代码略)public void moveUp(){//向上移动,y坐标值减,方向值为0y-=speed;this.setDirect(0);}public void moveDown(){//向下移动,y坐标值增,方向值为2y+=speed;this.setDirect(0);}public void moveRight(){//向右移动,x坐标值增,方向值为1x+=speed;this.setDirect(0);}public void moveLeft(){//向左移动,x坐标值减,方向值为3x-=speed;this.setDirect(0);}}2、我的坦克类MyTankclass MyTank extends Tank{public MyTank(int x, int y) {super(x, y);}}3、主类MyFramepublic class MyFrame extends JFrame{MyPanel mp=null;public static void main(String[] args) {MyFrame tankGame1=new MyFrame();MyFrame.setVisible(true);}public MyFrame() {mp=new MyPanel();this.add(mp);this.setBounds(200,200,600,500);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);}}4、在MyFrame.java中创建MyPanel类class MyPanel extends JPanel{MyTank mytank=null;public MyPanel(){mytank=new MyTank(200,200);//创建我的坦克并设置其初始位置}//重载MyPanel类的paint函数以实现画坦克public void paint(Graphics g)//窗口大小改变或重绘窗口时,执行repaint()时会自动调用{super.paint(g);g.fillRect(0,0,600,500);this.drawTank(mytank.getX(),mytank.getY(),mytank.getDirect(),mytank.getColor(), 5, g); }//在MyPanel画坦克的函数,参数包括坦克的位置、方向、类型(用于设置颜色)、画笔:public void drawTank(int x, int y, int direct, int color, int size,Graphics g) {switch (color) {case 0://我的坦克的颜色g.setColor(Color.cyan);break;case 1:g.setColor(Color.yellow);break;case 2://敌人坦克的颜色g.setColor(Color.green);break;}switch (direct) {case 0:g.fill3DRect(x, y, size, 6 * size, false);g.fill3DRect(x + 3 * size, y, size, 6 * size, false);g.fill3DRect(x + size, y + size, 2 * size, 4 * size, false);g.fillOval(x + size, y + 2 * size, 2 * size, 2 * size);g.drawLine(x + 2 * size, y, x + 2 * size, y + 3 * size);break;case 3:g.fill3DRect(x, y, 6 * size, size, false);g.fill3DRect(x, y + 3 * size, 6 * size, size, false);g.fill3DRect(x + size, y + size, 4 * size, 2 * size, false);g.fillOval(x + 2 * size, y + size, 2 * size, 2 * size);g.drawLine(x, y + 2 * size, x + 3 * size, y + 2 * size);break;case 1:g.fill3DRect(x, y, 6 * size, size, false);g.fill3DRect(x, y + 3 * size, 6 * size, size, false);g.fill3DRect(x + size, y + size, 4 * size, 2 * size, false);g.fillOval(x + 2 * size, y + size, 2 * size, 2 * size);g.drawLine(x + 6 * size, y + 2 * size, x + 3 * size, y + 2 * size);break;case 2:g.fill3DRect(x, y, size, 6 * size, false);g.fill3DRect(x + 3 * size, y, size, 6 * size, false);g.fill3DRect(x + size, y + size, 2 * size, 4 * size, false);g.fillOval(x + size, y + 2 * size, 2 * size, 2 * size);g.drawLine(x + 2 * size, y + 6 * size, x + 2 * size, y + 3 * size);break;}}(二)、移动坦克(事件监听)在主类注册键盘事件监听,在MyPanel类中实现事件监听。

在这里,本文通过另一种新的方法来实现坦克的移动,通过实现keyPressed(KeyEvent e)与keyReleased(KeyEvent e)这两个事件处理方法,再创建一个action()方法,即可达到坦克移动更加敏捷顺畅,并且可为后面坦克发射子弹做重要铺垫,即可做到坦克边移动,边发射子弹的效果。

//L表示向左,R表示向右,U表示向上,D表示向下boolean L = false, R = false, U = false, D = false;@Overridepublic void keyPressed(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_W) {U = true;} else if (e.getKeyCode() == KeyEvent.VK_D) {R = true;} else if (e.getKeyCode() == KeyEvent.VK_S) {D = true;} else if (e.getKeyCode() == KeyEvent.VK_A) {L = true;}}@Overridepublic void keyReleased(KeyEvent e) {if (e.getKeyCode() == KeyEvent.VK_W) {U = false;} else if (e.getKeyCode() == KeyEvent.VK_D) {R = false;} else if (e.getKeyCode() == KeyEvent.VK_S) {D = false;} else if (e.getKeyCode() == KeyEvent.VK_A) {L = false;}}public void action() {if (U) {this.mytank.setDirect(0);this.mytank.moveUp();} else if (R) {this.mytank.setDirect(1);this.mytank.moveRight();} else if (D) {this.mytank.setDirect(2);this.mytank.moveDown();} else if (L) {this.mytank.setDirect(3);this.mytank.moveLeft();}}// 重新绘制窗口this.repaint();}再将action()方法放到run()中。

相关文档
最新文档