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

合集下载

Java实习报告范文5篇_Java实训报告总结

Java实习报告范文5篇_Java实训报告总结

Java实习报告范文5篇Java实习报告范文5篇_Java实训报告总结Java是一种编程语言,如果想要在未来从事Java相关工作,就必须要掌握理论知识以及拥有强大的实操能力。

那么Java实习报告该如何写呢?小编精选了一些关于实习报告的优秀范例,一起来看看吧。

↓↓↓点击下方链接获取“Java”相关内容↓↓↓java的个人总结java实习心得总结Java开发工程师工作职责java实训实习心得java实习实训报告心得体会java实习报告1一、实习目的通过实习,培养综合运用Java语言的面向对象编程能力;培养动手能力;培养良好编程规范、编程方法;以便能较全面地理解、掌握和综合运用所学的知识,提高自身的编程能力;增强自己的团队协作意识,了解软件开发的思考角度和主要流程。

通过理论与实际的结合、学校与社会的沟通,进一步提高自己的思想觉悟、业务水平,尤其是观察、分析和解决问题的实际工作能力,以便培养自己成为能够主动适应社会主义现代化建设需要的高素质的复合型人才。

为毕业之后能够更快地进入工作状态并且能够更好的工作,打好一定的基础。

二、实习单位基本情况介绍神丰信息技术(延边)有限公司(简称“神丰信息”),是一家由日方注资,专注于面向中国丰田汽车的软件开发设计、受托日本神丰信息系统株式会社开展系统开发,系统维护、面向中国的日资企业开展系统开发,以及面向中国国内的软件开发设计的IT企业。

公司成立于2005年8月12日,注册资金RMB2,000,000元(神丰信息系统株式会社100%投资),2006年04月04日成为延边朝鲜族自治州信息产业协会会员;2006年05月25日成为吉林省软件输出联盟会员;2006年05月30日被认定为吉林省科技企业;2007年09月25日通过双软认定(软件企业认定、软件产品认定)。

神丰信息一直秉承软件提高效率、与社会共创信息化新时代的理念,致力于为用户提供具有自主知识产权的系统软件、安全软件、平台软件、各类应用软件以及全方位的解决方案和相关服务。

坦克大战 实验报告

坦克大战 实验报告

本科实验报告课程名称: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;//此处为构造函数。

基于Java面向对象程序设计课程报告

基于Java面向对象程序设计课程报告

基于Java语言的简易坦克大战游戏设计课程报告摘要:本课程设计使用Java语言开发了一个简单坦克大战小游戏,主要采用面向对象程序设计思想来完成程序的需求分析,概念及逻辑设计,系统的详细实现等过程。

游戏主要实现了游戏场景的构造,坦克及子弹类的初始化,敌我坦克对战,游戏存盘及读档等功能。

关键词:Java;面向对象;敌我坦克对战;引言坦克大战是一个经典的单机对战游戏,其在青少年中非常流行,目前游戏开发商对其不断改进,已从简单的单机手游扩充为大型的网络对战游戏,但其基于面向对象程序设计思想仍未变。

本设计是为检验面向对象程序设计课程的知识运用而进行的实践,其主要目的是采用面向对象的思想,独立完成程序的各个过程,并在实践中应用学到的关于Java类与对象,接口,包,异常处理,多线程,事件处理及各类流的处理等知识。

1.系统分析1.1系统可行性分析在技术上,本系统的坦克大战是基于Java语言设计,并在Eclipse软件上具体实现的。

Java语言是一种跨平台,适合于分布式计算环境的面向对象编程语言,具有简洁,安全,面向对象,动态,体系结构中立,可移植,高性能,多线程,解释执行,分布式等特性。

Java现在主要用在WEB开发,手机游戏及一些平台游戏的开发,因为其具有良好的跨平台性,在各类电子产品上应用非常广泛。

本系统使用Swing,GUI,Socket,面向对象设计等技术实现,这些技术已非常成熟,广泛应用于各类程序开发,故现在使用这些技术是可行的。

在实用性上,坦克大战为一款经典射击游戏,其前身为1985年日本游戏公司在任天堂FC(FamilyComputer)平台上开发的红白单机游戏,游戏以坦克战斗及保卫基地为主题,凭借流畅的游戏体验,不错的游戏视觉效果风靡全世界。

直到今天,仍有游戏商家以其为模型开发出3D网络对战版坦克大战,可见其具有广大的市场效益。

本系统运用Java跨平台编程语言,在PC上重新实现这一经典游戏,探究其设计思路与实现方法,并且设计了关卡模式,新增了游戏存盘,读档功能,使游戏玩法更加丰富。

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应用程序Application。
做好充分的准备之后,按照面向对象的设计思想,根据坦克大战游戏的实际需求设计相关的类与接口,实现多态、重载等开发工作。
指导教师签字:、日期:
指导教师评语
成绩:指导教师签字:日期:
课程设计所需软件、硬件等
硬件要求能运行Windows 9.X操作系统的微机系统。JAVA程序设计语言及相应的集成开发环境,J2SDK和ECLIPSE开发工具。
课程设计进度计划
起至日期
工作内容
备注
2012.11
2012.12
程序设计构思,查阅Leabharlann 料程序设计实现,课程任务书
参考文献、资料索引
序号
文献、资料名称
信息科学与工程学院
课程设计任务书
题目:
学号:
姓名:
专业:
课程:
指导教师:职称:
完成时间:20年月----20年月
课程设计任务书及成绩评定
课程设计的任务和具体要求
本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA语言程序设计》课程后,进行的一次全面的综合训练,JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。
编著者
出版单位
(1)Java语言实用教程(第2版) 丁振凡 北京邮电大学出版社.
(2)Java语言实用教程实验指导(第2版)丁振凡北京邮电出版社

java课设报告坦克大战

java课设报告坦克大战

java课设报告坦克大战什么是Java课设报告坦克大战?Java课设报告坦克大战是一个基于Java编程语言开发的游戏项目。

它模拟了坦克战争的场景,玩家需要操控一辆坦克,与其他玩家或者电脑控制的敌人进行战斗,完成各种任务。

这个项目旨在提高学生的Java编程能力和团队协作能力。

第一步:需求分析和设计在开始编写代码之前,我们需要进行需求分析和设计。

首先,确定游戏的功能和玩法。

例如,游戏应该具有地图、坦克、子弹等基本元素,玩家可以使用键盘控制坦克的移动和攻击,坦克和子弹应该有相应的属性和行为,坦克应该能够与其他坦克进行交互等等。

其次,我们需要设计游戏的界面和用户交互方式,包括游戏的开始菜单、游戏画面、得分、生命值等界面元素。

最后,我们应该考虑游戏的可扩展性,使得我们能够在后续的开发过程中添加更多的功能和元素。

第二步:编写代码在设计完成后,我们开始编写Java代码。

首先,我们创建一个Java项目,并进行必要的配置,例如添加游戏所需的外部库和资源文件。

然后,我们开始编写代码。

我们可以将游戏的不同元素,例如地图、坦克、子弹等,抽象成不同的类,并为每个类定义相应的属性和方法。

我们还可以使用设计模式和面向对象的编程思想,使得代码更加清晰和可维护。

同时,我们需要为游戏添加适当的事件处理器,以响应用户的操作和更新游戏状态。

我们还可以使用Java图形库或者相关的游戏引擎,使游戏具有更好的视觉效果和用户体验。

第三步:测试和调试在代码编写完成后,我们需要进行测试和调试。

我们可以编写一些测试用例,验证游戏的各个功能和元素是否正常工作。

同时,我们需要定期检查并修复可能存在的bug和错误,确保游戏的稳定性和可玩性。

在这个过程中,我们可以与团队成员合作,互相交流和帮助,提高解决问题的效率和质量。

第四步:项目上线和发布在完成测试和调试后,我们可以将游戏部署到服务器上,并发布给玩家。

我们可以选择通过应用商店或者网站进行发布,或者将游戏打包成可执行文件,供玩家下载和安装。

坦克大战实验报告

坦克大战实验报告

坦克大战实验报告班级: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类中实现事件监听。

最新java实训报告实训总结(优秀9篇)

最新java实训报告实训总结(优秀9篇)

最新java实训报告实训总结(优秀9篇)(经典版)编制人:__________________审核人:__________________审批人:__________________编制单位:__________________编制时间:____年____月____日序言下载提示:该文档是本店铺精心编制而成的,希望大家下载后,能够帮助大家解决实际问题。

文档下载后可定制修改,请根据实际需要进行调整和使用,谢谢!并且,本店铺为大家提供各种类型的经典范文,如报告大全、演讲致辞、规章制度、应急预案、方案大全、心得体会、祝福语、作文大全、教学资料、其他范文等等,想了解不同范文格式和写法,敬请关注!Download tips: This document is carefully compiled by this editor. I hope that after you download it, it can help you solve practical problems. The document can be customized and modified after downloading, please adjust and use it according to actual needs, thank you!Moreover, our store provides various types of classic sample essays, such as a comprehensive report, speeches, rules and regulations, emergency plans, plans, experiences, blessings, essays, teaching materials, other sample essays, etc. If you want to learn about different formats and writing methods of sample essays, please pay attention!最新java实训报告实训总结(优秀9篇)报告材料主要是向上级汇报工作,其表达方式以叙述、说明为主,在语言运用上要突出陈述性,把事情交代清楚,充分显示内容的真实和材料的客观。

JAVA关于坦克大战的课程设计报告

JAVA关于坦克大战的课程设计报告
枣庄学院 信息科学与工程学院
课程设计任务书
题目:
学 号: 姓 名: 专 业: 课 程: 指导教师:
职称:
完成时间: 20 年 月----20 年 月
枣庄学院信息科学与工程学院制
课程设计任务书及成绩评定
课程设计的任务和具体要求 本课程的程序设计专题实际是计算机相关专业学生学习完《JAVA 语言程
序设计》课程后,进行的一次全面的综合训练,JAVA 程序设计的设计目的是 加深对理论教学内容的理解和掌握,使学生综合运用所学知识,利用软件工程 为基础进行软件开发、并在实践应用方面打下一定基础。
2
二.系统分析 2.1 可行性分析
2.1.1 技术可行性 软件使用 swing、GUI、Socket、面向对象设计等技术实现,这些技术
均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现 使用这些技术是可行的。 2.1.2 经济可行性
本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件 暂无收入,待公布之后随着使用者越来越多,将添加相应的广告、服务, 从而增加收入,若使用者寥寥无几,将再次分析是否重新策划软件或者放 弃开发,以减少损失。
2.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.玩家坦克的游戏资格和电脑坦克不同。

java实习报告总结(范文二篇)

java实习报告总结(范文二篇)

java实习报告总结(范文二篇)本站小编为你整理了多篇相关的《java实习报告总结(范文二篇)》,但愿对你工作学习有帮助,当然你在本站还可以找到更多《java实习报告总结(范文二篇)》。

第一篇:java学生实习报告一转眼,历时两个多月的教学实习已经接近尾声了,虽然我为这个实习付出了很多精力和财力,但收获无疑还是重大且主要的。

我从这次实习中得到了太多对于我今后的工作而言极为宝贵的经验教训。

首先,专业知识必须扎实。

不怕千招会,就怕一招熟,老师主要是为学生传播专业知识的,如果专业知识教不好,其他一切都是空谈,而在我的实习生涯中的永远的伤疤就是我在上专业课的时候出现了知识性的错误,虽然指导老师和谢老师都没有严厉批评我,但不批评比批评更让我难受,我误导了同学们,我对不起他们呀!所以我认为专业是根本,是基础。

基础不牢,地动山摇。

其次,书到用时方恨少。

老师最好有渊博的知识,因为有了渊博的知识老师才能把课讲得生动有趣。

学习知识理应是一件非常有意思的事情,任何一门学科之中都蕴藏着它独特的趣味性,很难想象真正乏味透顶的学科会流传到今天。

但老师在自己掌握这些知识的基础上再让学生兴趣盎然、滋滋有味地掌握这些知识却绝非易事。

能否让学生快乐听讲、快乐学习无疑是衡量优秀老师和平庸老师的一个主要标准。

而老师要想做到这一点就必须有渊博的知识、绝佳的口才,而这一切都是建立在读书的基础上的。

“书中自有黄金屋,书中自有颜如玉”,这句话既然流传千年就有它流传千年的理由。

为师者当恪守之。

再次,要以一颗仁爱之心对待学生。

“严师出高徒”这句话不全对,这就像“良药苦口利于病,忠言逆耳利于行”一样,为什么良药一定要苦口呢?为什么忠言一定要逆耳呢?在药片外抹点儿糖让人快乐服用,说忠言时讲究一下说话艺术让人欣然接受岂不更好。

同样,慈师和仁师照样也可以教出高徒。

平时要多考虑学生的感受,不能以“为学生着想”为借口去伤害他们。

学习不是学生的全部,他们还要学会生活;教书也不是教师工作的全部,他们还要学会育人。

项目-坦克大战-设计报告

项目-坦克大战-设计报告

《JA V A程序开发课程设计》项目设计项目名称:TankWar 软件专业:软件工程班级:13软工1班姓名:毛晨光学号:一、需求分析:基本功能:1.玩家控制的坦克能够四处移动并且打击敌方坦克;2.敌方坦克能够随机四处移动并且打击玩家控制的坦克;3.玩家控制的坦克拥有血量,而敌方坦克没有;4.坦克受到攻击时血条会缩短;5.敌方坦克被消灭完之后,提示游戏胜利;6.用户方坦克被消灭后提示游戏结束;特色功能:1.坦克具有图片,不单单只是个圈圈。

2.增加了血包功能,地图上会随机出现一个血包,我方坦克开过会增加血量。

二、系统设计:1.TankMap类:实现游戏界面地图的初始化。

2.PainTread类:绘制和重绘功能。

3.DirectionHandler:监听用户的键盘输入。

4.Tank类:实现坦克的初始化,绘制,移动,发射等功能。

5.EnemyTank:实现敌方坦克的初始化,绘制,移动,发射等功能。

6.Shell类:实现炮弹的初始化,绘制,移动,攻击功能。

7.Explor类:实现爆炸的初始化。

绘制功能,爆炸效果由绘制半径从小到大再到小的圆实现。

8.Direction类:包含枚举。

9.Blood类:用于实现血包的功能。

三、功能实现。

一.绘制地图功能:public class TankMap extends Frame{//定义地图的尺寸。

public static final int MAPWIDTH=800;public static final int MAPHEIGHT=600;//我方坦克Tank t=null;//定义随机出现的血包Random r=new Random();Image bufferImage=null;//地方坦克集合->enemys=new ArrayList<EnemyTank>();//爆炸集合public.static.jav//敌方坦克数量默认10个public int enemyCount=5;//主方法public static void main(String[] args) {TankMap tv=new TankMap();tv.init();}public void drawImage(){}//地图初始化方法public void init(){//初始化地图this.setSize(MAPWIDTH,MAPHEIGHT);this.setTitle("TankWar");this.setVisible(true);//添加键盘监听器this.addKeyListener(new DirectionHandler()); //添加穿口关闭监听器this.addWindowListener(new WindowAdapter(){ public void windowClosing(WindowEvent arg0){ System.exit(0);}});//初始化我方坦克t=new Tank(this);//初始化敌方坦克for(int i=0;i<enemyCount;i++){enemys.add(new EnemyTank(40+30*i,80,Color.YELLOW)); }//启动绘制线程new Thread(new PaintThread()).start();}//@Overridepublic void paint(Graphics g){//画地图Color c=g.getColor();g.setColor(Color.GREEN);g.fillRect(0,0,MAPWIDTH,MAPHEIGHT);g.setColor(Color.RED);g.drawString("当前炮弹数目:"+shells.size(),20,40);g.drawString("生命值:",20,60);g.fillRect(65,55,t.getLife(),5);g.setColor(c);//画坦克t.draw(g);if(r.nextInt(10)==9 && bloods.size()==0)bloods.add(new Blood());if(r.nextInt(60)==7 && bloods.size()==1)bloods.remove(0);for(int i=0;i<enemys.size();i++){EnemyTank et=enemys.get(i);et.draw(g);}//画爆炸for(int i=0;i<explors.size();i++){Explor e=explors.get(i);e.draw(g);}//绘制血包for(int i=0;i<bloods.size();i++){Blood b=bloods.get(i);b.bloodb(t);b.draw(g);}//画炮弹for(int i=0;i<shells.size();i++){Shell s=shells.get(i);if(s.islive&&s.isgood){s.hitTanks(enemys);}else if(s.islive&&!s.isgood){s.hitTank(t);}s.draw(g);}}//双缓冲,防止游戏地图“频闪”public void update(Graphics g){paint(g);if(bufferImage==null){bufferImage=this.createImage(MAPWIDTH,MAPHEIGHT);}Graphics gbuffer=bufferImage.getGraphics();Color c=gbuffer.getColor();gbuffer.setColor(Color.GREEN);gbuffer.fillRect(0, 0, MAPWIDTH, MAPHEIGHT);gbuffer.setColor(Color.RED);gbuffer.drawString("当前炮弹数目:"+shells.size(),20,40);gbuffer.drawString("生命值:", 20, 60);gbuffer.fillRect(65,55,t.getLife(),5);gbuffer.setColor(c);paint(gbuffer);g.drawImage(bufferImage, 0, 0, null);}//内部类,主要通过调用repaint方法,实现绘图功能class PaintThread implements Runnable{@Overridepublic void run(){while(true){repaint();try{Thread.sleep(260);}catch(InterruptedException e){e.printStackTrace();}}}}//内部类,键盘监听器class DirectionHandler extends KeyAdapter{@Overridepublic void keyPressed(KeyEvent arg0){t.checkDirection(arg0);}}二.绘制坦克功能:public class Tank {//坦克的尺寸和移动速度public static final int WIDTH=50,HEIGHT=50,xspeed=5,yspeed=5;//坦克的初始位置public int x=400,y=300;//坦克的初始化方向,STOP即停止,Direction是自定义的枚举常量,见枚举源代码public Direction direction=Direction.STOP;//地图TankMap tm;//坦克是否存活boolean isLive=true;//坦克属于哪一方,true为用户方,false为敌方boolean isgood=true;//坦克初始化生命值int life=100;//定义坦克的初始化方向,以便插图坦克的图片public int zhuanxiang=1;//获取和设置存活状况public boolean isLive(){return isLive;}public void setLive(boolean isLive){this.isLive=isLive;}//获取和设置生命值public int getLife(){return life;}public void setLife(int life){this.life=life;}//构造方法public Tank(){};public Tank(TankMap t){tm=t;}//绘制坦克//根据坦克的移动方向,插入不同的坦克的图片public void draw(Graphics g){if(zhuanxiang==1){ImageIcon icon=new ImageIcon("Etank_shang.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}else if(zhuanxiang==-2){ImageIcon icon=new ImageIcon("Etank_you.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}else if(zhuanxiang==2){ImageIcon icon=new ImageIcon("Etank_zuo.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}else{ImageIcon icon=new ImageIcon("Etank_xia.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}/*Color c=g.getColor();g.setColor(Color.RED);g.fillOval(x,y,WIDTH,HEIGHT);g.setColor(c);*/move(direction);}//根据方向,移动坦克,不允许坦克移出地图尺寸public void move(Direction d){if(d==Direction.STOP){}else if(d==Direction.UP){zhuanxiang=1;y -= yspeed;if(y<=20)y=20;}else if(d==Direction.RIGHT){zhuanxiang=-2;x+=xspeed;if(x>=800-WIDTH)x=800-WIDTH;}else if(d==Direction.DOWN){zhuanxiang=-1;y+=yspeed;if(y>=600-HEIGHT)y=600-HEIGHT;}else if(d==Direction.LEFT){zhuanxiang=2;x-=xspeed;if(x<=0)x=0;}}//确定用户单机的方向键,修正坦克即将移动的方向public void checkDirection(KeyEvent k){if(k.getKeyCode()==KeyEvent.VK_UP){direction=Direction.UP;}else if(k.getKeyCode()==KeyEvent.VK_RIGHT){ direction=Direction.RIGHT;}else if(k.getKeyCode()==KeyEvent.VK_DOWN){ direction=Direction.DOWN;}else if(k.getKeyCode()==KeyEvent.VK_LEFT){ direction=Direction.LEFT;}if(k.getKeyCode()==KeyEvent.VK_F){fire();}}//发射炮弹的方法public void fire(){}//返回坦克当前位置矩形,便于判断是否与敌方坦克或炮弹重叠public Rectangle getRec(){return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT); }}三.敌方坦克的绘制方法public class EnemyTank extends Tank{//初始化敌方坦克的属性public static final int WIDTH=50,HEIGHT=50,xspeed=5,yspeed=5; public int x=400,y=300;public Direction direction=Direction.DOWN;public boolean islive=true;Color color=Color.YELLOW;TankMap tm;//随机数产生器,供敌方坦克随机产生前进方向使用Random r=new Random();public int zhuanxiang;//方向更改限制,避免敌方坦克每移动一次就更改方向int randomCount=r.nextInt(10)+5;//构造方法public EnemyTank(){}public EnemyTank(int wx,int wy,Color c){x=wx;y=wy;color=c;}@Overridepublic void draw(Graphics g){//根据敌方坦克的移动方向插入不同的坦克图片if(zhuanxiang==1){ImageIcon icon=new ImageIcon("Etank_shang.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}else if(zhuanxiang==-2){ImageIcon icon=new ImageIcon("Etank_you.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}else if(zhuanxiang==2){ImageIcon icon=new ImageIcon("Etank_zuo.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}else{ImageIcon icon=new ImageIcon("Etank_xia.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}move();}public void move(){//当方向更改限制为0时,产生一个随机方向if(randomCount==0){Direction dirs[]=Direction.values();direction = dirs[r.nextInt(dirs.length-1)];randomCount = r.nextInt(10)+5;}//方向更改限制减1randomCount--;//随机发射炮弹,当产生的随机数大于35时,发射炮弹if(r.nextInt(40)>36){fire();}//确定敌方的坦克的移动if(direction==Direction.UP){y-=yspeed;zhuanxiang=1;if(y<=HEIGHT)y=HEIGHT;}else if(direction==Direction.RIGHT){x+=xspeed;zhuanxiang=-2;if(x>=800-WIDTH)x=800-WIDTH;}else if(direction==Direction.DOWN){y+=yspeed;zhuanxiang=-1;if(y>=600-HEIGHT)y=600-HEIGHT;}else if(direction==Direction.LEFT){x-=xspeed;zhuanxiang=2;if(x<=0)x=0;}}@Overridepublic void fire(){Shell(this.x+WIDTH/2,this.y+HEIGHT/2,this.direction,tm,Color.BLUE,false));}public Rectangle getRec(){return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT);}}四.炮弹绘制方法public class Shell {//初始化炮弹的基本属性public final int WIDTH=5,HEIGHT=5,xspeed=14,yspeed=14;public int x,y;Direction dir=Direction.STOP;public boolean islive=true;TankMap tm=null;Color color=Color.RED;boolean isgood=true;boolean isLive=true;//构造方法public Shell(){}public Shell(int xd,int yd,Direction d,TankMap t){ x=xd;y=yd;dir=d;tm=t;}public Shell(int xd,int yd,Direction d,TankMap t,Color c,boolean g){x=xd;y=yd;dir=d;tm=t;color=c;isgood=g;}//绘制炮弹public void draw(Graphics g){if(islive){Color c=g.getColor();g.setColor(color);g.fillOval(x,y,WIDTH,HEIGHT);g.setColor(c);move(dir);}else{}}//炮弹的移动,如果炮弹移动出了地图尺寸,则设定炮弹死亡public void move(Direction d){if(d==Direction.UP){y-=yspeed;if(y<=0)islive=false;}else if(d==Direction.RIGHT){x+=xspeed;if(x>=800)islive=false;}else if(d==Direction.DOWN){y+=yspeed;if(y>=600)islive=false;}else if(d==Direction.LEFT){x-=xspeed;if(x<=0)islive=false;}}public Rectangle getRec(){return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT); }//打击坦克方法public boolean hitTank(Tank t){if(this.isLive&&t.isLive&&this.getRec().intersects(t.getRec()) ){//用户坦克生命值减20t.setLife(t.getLife()-20);//如果用户坦克生命值《=0,游戏结束if(t.getLife()<=0){t.setLive(false);t.direction=Direction.STOP;JOptionPane.showMessageDialog(tm,"Game Over!");System.exit(0);}//炮弹死亡this.isLive=false;//产生爆炸Explor e=new Explor(x-3,y-3,this.tm);return true;}return false;}//用户坦克打击敌方坦克的方法public boolean hitTanks(List<EnemyTank>enemyTanks){EnemyTank e;for(int i=0;i<enemyTanks.size();i++){e=enemyTanks.get(i);if(this.getRec().intersects(e.getRec())){e.setLive(false);this.isLive=false;Explor ex=new Explor(x-3,y-3,this.tm);return true;}}return true;}}五.爆炸类源代码:public class Explor {//初始化爆炸属性int x,y;TankMap tm;boolean islive=true;int diameter[]={5,9,13,18,25,31,21,12,6};int step=0;//构造方法public Explor(){}public Explor(int x,int y,TankMap t){this.x=x;this.y=y;this.tm=t;}//绘制爆炸public void draw(Graphics g){//如果爆炸已经发生过,从地图的爆炸集合中移出该爆炸if(!this.islive){return;}//判断爆炸是否发生完if(step==diameter.length){this.islive=false;step=0;return;}Color c=g.getColor();g.setColor(Color.ORANGE);g.fillOval(x, y, diameter[step], diameter[step]);step++;g.setColor(c);}}六.枚举方向源代码package tank;//定义枚举public enum Direction{UP,RIGHT,DOWN,LEFT,STOP;}七.随机血包产生的方法public class Blood{public final int WIDTH=30,HEIGHT=30;public int x= new Random().nextInt(800),y= new Random().nextInt(600);TankMap tm;public void draw(Graphics g){ImageIcon icon=new ImageIcon("blood.gif");Image tankImage=icon.getImage();g.drawImage(tankImage,x,y,null);}public boolean bloodb(Tank t){if(t.isLive&&this.getRec().intersects(t.getRec())){if(t.getLife()<=60){t.setLife(t.getLife()+40);}else{t.setLife(100);}}return false;}public Rectangle getRec(){return new Rectangle(this.x,this.y,this.WIDTH,this.HEIGHT);}}四、总结。

程序设计实训坦克大战实验报告

程序设计实训坦克大战实验报告

程序设计实训报告坦克大战专业班级:装控1401 实习时间:2015年7月10日至7月14日实习地点:微401 成员 1:赵振华成员 2:许晨欢成员 3:蒋绪涛一、作品概述1.1 创新点:1、自定义并命名树林和钢板精灵,设置树林属性为不接受碰撞可以自由穿梭,钢板为接受任何碰撞但不做任何处理(即子弹和坦克均不能摧毁钢板)。

2、添加坦克发炮、击中目标和坦克移动的特殊声效。

1.2 概述:这款游戏是我们QWER小组以经典90版坦克大战为背景制作的坦克大战的改编款,玩家通过控制坦克摧毁敌方坦克来保卫主基地不被摧毁。

当敌我双方坦克相碰或己方基地被子弹摧毁时游戏结束(敌我双方子弹均可摧毁基地),每隔3秒钟出现一辆敌方坦克,游戏最大时长为100秒。

此款游戏与经典90版坦克大战较为相似,操作简单,能唤起我们对童年的回忆。

二、功能设计玩家坦克与敌方坦克在街道中进行巷战,玩家坦克被击中或与敌方坦克相撞、玩家指挥部被击中或游戏时间到,一局游戏结束。

按下空格键后游戏开始,“空格开始”消失,载入地图,100秒倒计时开始,并把玩家坦克设置在指挥部左侧。

游戏时间到,玩家坦克被敌方坦克摧毁,与敌方坦克相撞,或者玩家指挥部被摧毁,一局游戏结束,游戏回到初始界面,并显示上一局的分数。

玩家用W、A、S、D键控制坦克上、下、左、右运行,按J键开炮。

坦克行进过程中有特殊声效,坦克发射或击中目标都有相应的声效。

玩家坦克碰到墙和钢板就停下来,需要调转方向才能继续前进。

玩家坦克开炮,一炮就能摧毁一块墙或者一辆敌方坦克,但不能摧毁钢板,玩家可穿梭于树林中。

玩家每摧毁一辆敌方坦克,加1分。

玩家指挥部被坦克或者炮弹(不管玩家还是敌方)碰上,都会被摧毁。

每隔3秒钟,就会产生一辆敌方坦克。

敌方坦克每隔一段时间,就自动开炮。

敌方坦克遇到墙就会停下来。

停下来的坦克,前方的墙如果被摧毁了,又能继续前进。

每隔几秒钟,敌方坦克就会顺时针变换一个方向前进。

每局最大时长为100秒。

java实现坦克大战课程设计报告书

java实现坦克大战课程设计报告书

Java实现坦克大战小游戏摘要Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。

我的课程设计是用java来做一个简单的坦克大战小游戏。

我将这个程序细分了多个部分,每个部分都建了独立的类,比如:坦克的模型类,河道,树和坦克方向等等。

之所以将之细分,是遵循了java的万事万物皆对象的原理。

在实现每个类时,最简单但也是最繁琐就是建立界面与实例化坦克,因为这牵扯了界面布局,监听的建立等;而有一些类,比如;河道、墙、坦克,这些类这可以依样画葫芦的编写。

在编写过程,借鉴了他人的一些图片模型,实现的功能也并不是和经典的FC坦克大战相同,但是每个坦克之间的互动还是实现了的。

关键词:万事万物皆对象界面布局坦克之间的互动USE JAVA TO REALIZE BATTLE CITY MINI-GAMEABSTRACTJava is a object oriented program design language what can compose cross platform application software. My curriculum design is using JAVA language to make a simple small game called Tank Battle. I break down this program into multiple parts, each part is to establish an independent class, such as: Tank Model class, River Course class, Tree class, The Direction of Tank class and so on. The reason divides into multiple parts, is because follow the principle of JAVA that everything is an object. When implements every class, the most simple but also the most troublesome is build interface and instantiate Tank class, because it is involved of the interface layout, monitoring the establishment. While there are some classes, such as: River Course class, Wall class and Tank class, can write like stick closely to the pattern given.In the preparation process, I refer some pictures of models of others, the function of the retaliate isn’t like FC Tank Battle, but the interaction between ach tank is realized.Key words: everything is an object, the interface layout, the interaction betweeneach tank目录1 课程目的与要求 (1)1、1课程目标 (1)1、2 课程的实现环境 (1)2 概要设计 (2)3 详细设计 (3)4 测试结果与心得体会………………………………………………………………………5 参考文献……………………………………………………………………………………附录……………………………………………………………………………………………源程序代码……………………………………………………………………………………1 课程的目的与要求1、1课程目标JAVA程序设计的设计目的是加深对理论教学内容的理解和掌握,使学生较系统地掌握程序设计及其在网络开发中的广泛应用,基本方法及技巧,为学生综合运用所学知识,利用软件工程为基础进行软件开发、并在实践应用方面打下一定基础。

坦克大战实验报告摘要

坦克大战实验报告摘要

一、实验背景与目的在本次程序设计实训中,我们小组以经典90版坦克大战为原型,设计并实现了一款名为“坦克大战”的游戏。

本实验旨在通过实践,加深对程序设计基础知识的理解,提高编程能力,并锻炼团队协作和项目管理的经验。

通过本次实验,我们希望实现以下目标:1. 熟练运用C++等编程语言进行游戏开发。

2. 学习并应用游戏引擎和相关技术,如碰撞检测、图形渲染等。

3. 培养团队协作和项目管理能力。

二、作品概述本次实验作品名为“坦克大战”,是一款改编自经典90版坦克大战的游戏。

玩家通过控制坦克在街道上进行巷战,摧毁敌方坦克以保卫主基地。

游戏规则如下:1. 玩家坦克被击中或与敌方坦克相撞、玩家指挥部被敌方子弹摧毁时游戏结束。

2. 敌我双方子弹均可摧毁基地。

3. 每隔3秒钟出现一辆敌方坦克。

4. 游戏最大时长为100秒。

三、创新点1. 自定义精灵与属性:在游戏中,我们自定义并命名了树林和钢板精灵。

树林属性设置为不接受碰撞,可以自由穿梭;钢板属性设置为接受任何碰撞,但不做任何处理(即子弹和坦克均不能摧毁钢板)。

2. 特殊声效:为坦克发炮、击中目标和坦克移动等动作添加了特殊声效,使游戏更具沉浸感。

四、功能设计1. 玩家控制:玩家通过键盘操作控制坦克移动、射击等动作。

2. 敌方坦克生成:每隔3秒钟,游戏场景中会自动生成一辆敌方坦克。

3. 碰撞检测:游戏实现了敌我坦克碰撞和子弹与基地的碰撞检测,确保游戏规则的有效执行。

4. 图形渲染:游戏采用了图形渲染技术,使坦克、子弹、基地等元素在屏幕上呈现出来。

5. 得分与生命值:游戏设置了得分和生命值系统,玩家需要尽量摧毁敌方坦克,同时保证自己坦克的生命值。

五、实验过程与成果1. 前期准备:我们小组在实验前进行了充分的前期准备,包括查阅相关资料、学习编程语言和游戏开发技术等。

2. 分工协作:在实验过程中,我们根据个人特长和兴趣进行了分工,确保每个成员都能发挥自己的优势。

3. 编程实现:我们运用C++等编程语言,结合游戏引擎和相关技术,实现了坦克大战游戏的基本功能。

java坦克大战课程设计报告

java坦克大战课程设计报告

《Java语言程序设计》课程设计报告题目:坦克大战专业:软件工程学号:姓名:指导教师:成绩:2011年 12 月18日目录一、系统分析 (3)可行性分析 (3)需求分析 (3)二、概要设计 (4)项目规划.................................................................................................... 错误!未定义书签。

工作流程图................................................................................................ 错误!未定义书签。

开发及运行环境 (5)三、详细设计与算法实现 (5)游戏主窗口 (5)游戏数据的输出 (5)封装的游戏元素 (8)四、测试.......................................................................................................... 错误!未定义书签。

测试环境 (9)测试结果 (9)五、软件截图 (10)六、总结.......................................................................................................... 错误!未定义书签。

七、参考文献 (11)一、系统分析可行性分析1.技术可行性软件使用swing、GUI、Socket、面向对象设计等技术实现,这些技术均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现使用这些技术是可行的。

2.经济可行性本软件为免费软件,将免费提供软件的下载、运行和维护服务,软件暂无收入,待公布之后随着使用者越来越多,将添加相应的广告、服务,从而增加收入,若使用者寥寥无几,将再次分析是否重新策划软件或者放弃开发,以减少损失。

《java桌面开发项目实训》实训报告之坦克大战

《java桌面开发项目实训》实训报告之坦克大战

广东工贸职业技术学院java桌面应用系统开发学期项目实训报告课程实训题目java版坦克大战专业计算机软件班级学号1313344姓名洪朝亮指导教师鲁庆完成时间2014/6/16----2014/7/4一、课程实训任务书及成绩评定二、课程实训进度计划三、课程实训所需要软件、硬件等资源说明◆Windows 7及以上操作系统;◆JDK1.6及以上版本、eclipse或者myEclipse等软件。

四、可参考的资料、文献1) 教材《Java语言实用教程》,杨晓燕主编,清华大学出版社,2009.042) 上课讲解演示的代码、所给的一些资料、ppt3)图书馆、网上相关内容五、实训内容及代码详细说明(请从此处开始写)1.1、初始化界面:import java.awt.*;import java.awt.event.KeyEvent;import java.awt.event.KeyListener;import java.io.File;import java.io.IOException;import java.util.Vector;import javax.imageio.ImageIO;import javax.swing.*;public class TankGame7 extends JFrame { MyPanel mp = null;public static void main(String[] args) { TankGame7 demo1 = new TankGame7();}public TankGame7() {mp = new MyPanel();mp.setBackground(Color.black);// 启动mp线程Thread t = new Thread(mp);t.start();// 将mp添加到窗体上this.add(mp);// 注册事件监听this.addKeyListener(mp);this.setSize(400, 300);this.setTitle("13软件班案例");// 关闭jvmthis.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);this.setVisible(true);}}1.2、在界面上绘制出敌我坦克,自己坦克1辆,敌人坦克不少于5辆。

java坦克大战实训总结

java坦克大战实训总结

java坦克大战实训总结
本次 java 坦克大战实训让我收获颇丰,简单总结如下:
一、了解了游戏设计的基本流程
在实训中,我通过分析需求,设计游戏逻辑,编写代码实现游戏逻辑,制作游戏素材等环节,了解了游戏开发的整个流程。

二、提高了编程能力
在实训中,我巩固了 java 和面向对象编程的基础知识,并通过编写坦克在地图上的运动、射击等功能代码,增强了自己的编程能力。

三、锻炼了沟通协作能力
在与组内成员的沟通中,我学会了向他人清晰地表达自己的想法,并且听取不同意见和建议,不断改进和完善自己的设计方案。

在实现代码时,我与组内成员紧密协作,分工合作,力争在规定的时间内完成实训任务。

四、了解了团队协作开发中的版本控制
在团队协作开发中,版本控制是一项非常重要的工作。

在实训中,我们采用了GitHub 来管理版本。

通过使用各种 Git 命令,我掌握了代码的远程上传和下载、版本合并等操作,提高了我的团队协作开发能力。

总的来说,这次实训让我更深入地了解了 java 编程以及坦克大战游戏的设计流程。

同时,它也是一个很好的锻炼自己编程能力和团队协作能力的机会,让我更加自信和熟练地应对未来的工作和生活。

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

《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.玩家坦克的游戏资格和电脑坦克不同。

TankClient类设计流程游戏系统类关联图TankClient类此类主要功能是利用java中包来实现的坦克游戏的主主窗口,以及对其他类调用和实例化Blood类此类主要定义坦克的生命值,有可以控制玩家坦克加血等操作方法。

Missile类此类主要的是游戏中的炮弹类,其中有炮弹的大小以及移动等成员。

BaoZha类此类定义的是坦克被攻击的爆炸,其中有坦克击毁的图形变化等成员。

Tank基本类功能分析Tank类中,封装了一些变量属性,包括坦克自己的大小。

运动速度方向控制、生死控制、好坏控制。

Tank类中没有main函数,不是主类,它当中只封装一些变量属性和静态方法,被TankClient类调用来实现坦克的一系列动作Tank类主要方法如下:1.getRect()方法public Rectangle getRect(){Return new Rectangle(x,y this.WIDTH,this.HEIGHT)}Rectangle类是碰撞检测的辅助类,通过得到子弹x,y的坐标。

检测是否碰撞.2.draw()方法:负责将所有的活动在屏幕上画出来;3.move()方法:主要负责坦克的移动,包括八个方向的控制以及坦克一个移动速度;4.boolean()方法:设定键盘事件。

控制坦克移动5.KeyRelesed()方法:处理按键抬起事件,安“J”键时,发射普通炮弹。

抬起“K”键发射超级炮弹6.locationDirection()方法:定义炮筒的方向,可以向八个方向发射炮弹7.fire()方法:处理发送子弹的方法;Missile类的基本功能分析Missile(子弹)类和Tank类一样,只封装一些变量属性和静态方法,主要包括:子弹的大小,运动的速度,Missile类持有一个TankClient类的引用tc,TankClient类要执行发射炮弹操作是调用Missile类中的方法。

Missile类中的方法主要如下:1.draw()方法:负责画出子弹的所有活动2.move()方法:先判断方向在移动。

并且给一定的移动速度。

3.个头Rect方法:负责取得子弹的方形,为碰撞做准备;4.hitTank()方法:检测子弹是否撞到坦克撞到返回ture,否则返回false。

BaoZha类的基本功能分析BaoZha(爆炸)类也是封装自己的变量和方法的外部包装类,没有main方法,供TankClient主类需要时调用它的draw()方法,当子弹击中坦克是需要产生爆炸。

下面是爆炸的图片:二、综合实训过程中遇到的问题及解决方法遇到的问题:炮弹不消失坦克出界解决方案:加入控制炮弹生死的量live(Missile)当炮弹死去的就不需要对其重画当炮弹飞出边界就消失但炮弹死亡就从界面上消失三、本次综合实训中的收获及体会学习java两个学期来,有自己的一些见解。

Java是面向对象的,具有平台无关性,现在被广泛应用很多领域。

也是因为老师在开始讲课是给我们讲解过,所以有兴趣去学习java程序设计。

首先要明白Java体系设计到得三个方面:J2SE,J2EE,J2ME(KJAVA)。

J2SE,Java 2 Platform Standard Edition,我们经常说到的JDK,就主要指的这个,它是三者的基础,属于桌面级应用开发,这部分如果学得好很容易拓展J2EE和J2ME。

J2ME,The Micro Edition of the Java 2 Platform。

主要用于嵌入式Java,如手机,PDA等等。

J2EE,Java 2 Platform,Enterprise Edition,就是所谓的企业级Java,适合企业的大型应用开发。

我感觉学习java应该是循环渐进,有始有终,按部就班,脚踏地.java是一门有着阶梯性的一门语言,如果要学习它.我觉得最好还是按照java的学习体系,先学习什么,在学习什么,只有这样,我们在学习中才会遇到更少的麻烦.感觉java 是一门更倾向于网络的语言.不要上来就学习JSP,这样不好,因为这没有基础.在以后的学习中很可能遇到很多的麻烦,这就不好了.信心,恒心,毅力是最重要的.这是我们必须具备的心理素质.要是学习这门语言开始的时候很有兴趣,遇到苦难就退缩,这样最终会放弃学习java,没有经历风雨怎么见彩虹.编程就是有的时候就是那么.会遇到很多的困惑.但是一旦你弄懂了,或者是你把问题解决了,你会感到很兴奋,编程的快乐就在此了。

多看看一些资料,多多的向高手请教,这样才好.要学会总结和领会.,当然,学习java一个人有一个人的想法,也有自己的独学习方法.总之适合自己的就是最好的,要听老师讲的,理解他的思路,然后试着写老师讲的代码,不会的时候可以看看老师的代码,关键是要知道代码为什么这样写,还要学会检查异常,解决异常,这一点也很重要。

我觉得我学习这么多天,就是写代码,改错。

代码写的多了,自然就知道该怎么写了。

本系统基本实现了坦克游戏的可玩性,希望自己以后多做这方面的练习四、对本课程教学的建议从打开始我们软件(2)班的所有同学都上过魏晓东老师您的课。

现在又有你教的java课。

说是对本课程教学的一点建议。

其实还真的找不出本课程中教学中老师您教学的任何毛病。

只能说说我对java课程学习的一些要求及和别人分享下java学习中的一点心得。

在课程教学中,我们要跟上老师的步伐。

要积极在老师的分享java题目中理解。

并且能向更高层攀爬。

要积极的抄写代码。

也正如老师说的。

在抄写代码的过程中学会理解。

然后把书或资料蒙上,也能写出来。

这样就可以在学习中进步,才能更好的在学习java中发展下去。

其次要多问问老师及同学,这是在所有学习知识中不可缺少的一部分。

我们之所以能学习。

那不是天生的,而是一步一步的在不断听取别人意见中改变的。

所以这样的要求也是不可或缺的。

这也不需要我多加申明。

我想每个人都有不一样的经历但有相同的体会。

还有下面我想对学校课程安排上的一些建议。

就是在我们安排的课程表上你会发现所有的java课都在同一天的下午。

4节连堂感觉压力很大。

而且都是上机课。

这让我们身上在加了一座山。

这对本来视力不太好的我也是一个打击。

我想对老师也是一种考验。

不仅要考虑我们的感受。

想我们能不能接受这课程的内容,还有就是自己精力的问题,给谁都会很疲惫的。

在这里祝愿所有老师身体健康。

所以建议学校不要安排课程在一起太多。

还有就是希望注重学生综合素质的培养。

我想这里我多说无意。

学校应该有自己安排培养的一套计划。

同时我希望在java学习中能适当的培养团队的精神。

老师可以安排几个人一组一段时间完成一些小的程序作为作业。

这样为以后工作提供帮助。

也培养了同学之间的感情。

最后在这里谢谢老师。

您辛苦了。

相关文档
最新文档