文档库 最新最全的文档下载
当前位置:文档库 › JAVA课程设计坦克大战游戏(含代码)

JAVA课程设计坦克大战游戏(含代码)

JAVA课程设计坦克大战游戏(含代码)
JAVA课程设计坦克大战游戏(含代码)

Java课程设计

任务书

简单电子游戏坦克大战的设计

1、主要内容:

设计一个简单的坦克大战电子游戏,可以允许多位玩家在局域网

中同时对战

2、系统要求:游戏具有图形游戏界面,能让用户看到游戏所给出的反馈。有人机交互功能,使用户操作指定的游戏元素,并且坦克具有生命值,能攻击敌方,无法攻击友方,而且坦克的攻击具有视觉效果!

3、具体要求(包括技术要求等):

1.需要有图形游戏界面,让用户能看到游戏给出的反馈

2.有人机交互功能,使用户能操作指定的游戏元素

3.不同队伍的坦克,须显示不同外观,已分辨敌我

4.坦克能够开火,攻击敌方,但不能攻击队友

5需要有不可被子弹穿透的墙

6.坦克有生命值,并非被击中一次就会爆炸

7游戏结束后可重新开始

学习并掌握以下技术:Java、JavaBean 等

熟练使用以下开发工具:Myeclipse 等

实现系统上述的功能。

4、进度安排:

12月28日~ 12月29日:课程设计选题,查找参考资料

12月30日~ 1月1日:完成系统设计和数据库设计

1月2日~ 1月4日:完成程序代码的编写

1月4日~ 1月5日:系统测试与完善

1月5日~ 1月6日:完成课程设计报告,准备答辩

分工:

随着计算机的普及以及对电子游戏的认识,电子游戏已被越来越多的人选作放松、娱乐的休闲方式;电子游戏既不需要专门购买游戏器材,也不需要宽阔的游戏场地,只需要一台能独立完成任务的计算机即可,它可以是人们工作、学习时用的计算机,并不需要另行配置,这比起传统休闲游戏即省钱又省事。局域网游戏更是可以将现实空间中零散的计算机,组织起来,使其在逻辑空间中集中起来,使游戏的组织、开展变得轻松。如此轻松而又安逸的休闲方式,使得越来越多的人尝试,甚至已经将电子游戏作为主要休闲方式,既然有如此多的人使用,那其中必然存在巨大的商机,即使人们不愿意为一个小小的休闲游戏花费金钱,但在游戏中添加广告、游戏相关服务也包藏了巨大的财富;当然电子游戏的制作如今已是空前的火爆,大大小小的游戏公司横空出世,都想在电子游戏制作这个行业里占据一席之地,而一款成功的电子游戏需要精心的策划、分析、设计,只有这样才能获得游戏中包藏的财富,以及做出一款真正能够让玩家娱乐、放松的游戏,而不是骗取玩家钱财的工具。

关键字:电子游戏;坦克大战;

一、系统分析............................................................................................................................ - 1 -

可行性分析.......................................................................................................................... - 1 - 需求分析.............................................................................................................................. - 1 - 二、概要设计............................................................................................................................ - 2 -

工作流程图.......................................................................................................................... - 2 - 项目规划.............................................................................................................................. - 3 - 开发及运行环境.................................................................................................................. - 3 - 三、详细设计与算法实现........................................................................................................ - 4 -

游戏主窗口.......................................................................................................................... - 4 - 游戏元素................................................................................................. 错误!未定义书签。

四、测试....................................................................................................... 错误!未定义书签。

测试环境............................................................................................................................ - 17 - 测试结果............................................................................................................................ - 17 -

五、软件截图.......................................................................................................................... - 18 -

六、总结.................................................................................................................................. - 21 -

七、参考文献............................................................................................... 错误!未定义书签。

一、系统分析

可行性分析

技术可行性

软件使用swing、GUI、Socket、面向对象设计等技术实现,这些技术均已是非常成熟的技术,之前已有相当多使用这些技术的成功案例,故现使用这些技术是可行的。

经济可行性

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

需求分析

通过反复研究以及市场调查,得知游戏须具有以下功能:

?需要有图形游戏界面,让用户能看到游戏给出的反馈

?不同队伍的坦克,须显示不同外观,已分辨敌我

?坦克能够开火,攻击敌方

?坦克有生命值

?游戏结束时须判断哪一队胜利

?游戏结束后可重新开始

?游戏的操作、进度等须提供相应说明,以告知玩家

二、概要设计

工作流程图

程序开始

初始化游戏元素

根据游戏的元素属性,对

其进行操作和绘出去图

战斗结束?

项目规划

本游戏是一个典型的电子小游戏,应具有如下结构:

?游戏主窗口

游戏的一切效果、进度、消息等都将由游戏主窗口展示

?封装的游戏元素

游戏元素包括:坦克、子弹、等游戏必须的元素

开发及运行环境

开发时硬件环境

?CPU:Inter P7350

?显卡:NVIDIA GeForce 105M

?内存:金士顿2G/DDR2-667

?显示器:三星液晶14寸/分辨率:1280X800

开发时软件环境

?操作系统:Windows7

?JDK:1.5.0

?IDE:Eclipse3.4.0

运行时硬件环境

?CPU:Inter P7350

?显卡:NVIDIA GeForce 105M

?内存:金士顿2G/DDR2-667

运行时软件环境

?操作系统:Windows 7

?JRE:1.6.0

?显示器:三星液晶14寸/分辨率:1280X800

?

三、详细设计与算法实现

游戏主窗口

游戏主窗口是人机交互的窗口,对玩家而言,他们只和游戏主窗口打交道,并不关心游戏内部是如何实现的,所以游戏主窗口部分最重要的便是游戏数据的输入、输出。

在程序中须创建一个类TankClient,继承自Frame来创建一个窗口。

游戏数据的输入

游戏中坦克需要能往上、下、左、右四个方向运动,故须设立4个按键,使其能操作坦克,另须设一个键控制坦克开火。为方便操作,本游戏设置方向键分别表示上下左右,空格表示开火。

具体实现为在TankClient类中添加内部的适配器类代码如下:

/**

* 方向键被按下后标记被按下的键

* @param e 键盘事件

*/

public void keyPressed(KeyEvent e) {

int keyCode = e.getKeyCode();

switch (keyCode) {

case KeyEvent.VK_LEFT:

bL = true;

break;

case KeyEvent.VK_UP:

bU = true;

break;

case KeyEvent.VK_RIGHT:

bR = true;

break;

case KeyEvent.VK_DOWN:

bD = true;

break;

case KeyEvent.VK_CONTROL:

if (!this.hasMyMissile())

fire();

break;

case KeyEvent.VK_A:

superFire();

break;

case KeyEvent.VK_F2:

tc = null;

new TankClient("TankClient", 50, 10, 3);

break;

}

locateDirection();

}

/**

* 方向键被松开后标记被松开的键

* @param e 键盘事件

*/

public void keyReleased(KeyEvent e) { int keyCode = e.getKeyCode();

switch (keyCode) {

case KeyEvent.VK_LEFT:

bL = false;

break;

case KeyEvent.VK_UP:

bU = false;

break;

case KeyEvent.VK_RIGHT:

bR = false;

break;

case KeyEvent.VK_DOWN:

bD = false;

break;

}

locateDirection();

}

/**

* 根据按下的键定位方向

*/

public void locateDirection() {

if (bL && !bU && !bR && !bD)

dir = Direction.L;

if (bL && bU && !bR && !bD)

dir = Direction.LU;

if (!bL && bU && !bR && !bD)

dir = Direction.U;

if (!bL && bU && bR && !bD)

dir = Direction.RU;

if (!bL && !bU && bR && !bD)

dir = Direction.R;

if (!bL && !bU && bR && bD)

dir = Direction.RD;

if (!bL && !bU && !bR && bD)

dir = Direction.D;

if (bL && !bU && !bR && bD)

dir = Direction.LD;

if (!bL && !bU && !bR && !bD) dir = Direction.STOP;

}

/**

* 根据方向移动坦克

*/

public void move() {

lastX = x;

lastY = y;

switch (dir) {

case L:

x -= SPEED;

break;

case LU:

x -= XYSPEED;

y -= XYSPEED;

break;

case U:

y -= SPEED;

break;

case RU:

x += XYSPEED;

y -= XYSPEED;

break;

case R:

x += SPEED;

break;

case RD:

x += XYSPEED;

y += XYSPEED;

break;

case D:

y += SPEED;

break;

case LD:

x -= XYSPEED;

y += XYSPEED;

break;

case STOP:

break;

}

if (dir != Direction.STOP)

ptDir = dir;

//控制坦克不出界

if (x < 0)

x = 0;

if (y < 30)

y = 30;

if (x > TankClient.WINDOW_WIDTH - this.RADIUS * 2) x = TankClient.WINDOW_WIDTH - this.RADIUS * 2;

if (y > TankClient.WINDOW_HEIGHT - this.RADIUS * 2) y = TankClient.WINDOW_HEIGHT - this.RADIUS * 2;

}

/**

* 根据坦克的位置和炮筒的方向发射炮弹

*/

public void fire() {

if (!this.live)

return;

int x = this.x + Tank.RADIUS - Missile.RADIUS;

int y = this.y + Tank.RADIUS - Missile.RADIUS;

Missile m = new Missile(x, y, this.good, ptDir, this, tc);

tc.missiles.add(m);

}

/**

* 画炮筒

* @param g Graphics对象

*/

public void drawPT(Graphics g) {

int x1 = this.x + Tank.RADIUS;

int y1 = this.y + Tank.RADIUS;

int x2 = this.x + Tank.RADIUS;

int y2 = this.y + Tank.RADIUS;

switch (ptDir) {

case L:

x2 = x1 - PT_LENGTH;

break;

case LU:

x2 = x1 - PT_XY;

y2 = y1 - PT_XY;

break;

case U:

y2 = y1 - PT_LENGTH;

break;

case RU:

x2 = x1 + PT_XY;

y2 = y1 - PT_XY;

break;

case R:

x2 = x1 + PT_LENGTH;

break;

case RD:

x2 = x1 + PT_XY;

y2 = y1 + PT_XY;

break;

case D:

y2 = y1 + PT_LENGTH;

break;

case LD:

x2 = x1 - PT_XY;

y2 = y1 + PT_XY;

break;

}

g.drawLine(x1, y1, x2, y2);

}

游戏数据的输出

玩家需要从游戏输出数据中获得游戏信息,如坦克在往上行驶、坦克发了颗子弹、坦克爆炸等,这些均需要通过游戏数据的输出来告知玩家。

由于TankClient继承自Frame,Frame类中的方法paint,可以在窗口中绘制图形,满足了游戏需要图形界面的需求

代码如下:

//主面版

public void paint(Graphics g) {

if (this == null)

return;

if (!myTank.isLive()) {

if (-- this.myTankNum > 0) {

myTank = new Tank(Tank_X, Tank_Y, true, this);

} else {

g.drawString("GameOver!", 350, 280);

g.drawString("按F2键重新开始..", 340, 300);

return;

}

}

if (tankAllNum == 0) {

g.drawString(".:恭喜过关!:.", 350, 280);

g.drawString("按F2键重新开始..", 340, 300);

return;

}

this.reinforceTank();

this.drawWalls(g);

this.drawMissiles(g);

this.drawMyTank(g);

this.drawEnemyTanks(g);

this.drawExplodes(g);

this.drawTreasure(g);

this.drawMessage(g);

}

/**

* 重写update方法,先将窗体上的图形画在图片对象上,再一次性显示

*/

public void update(Graphics g) {

if (offScreenImage == null) {

offScreenImage = this.createImage(WINDOW_WIDTH, WINDOW_HEIGHT);

}

Graphics gImage = offScreenImage.getGraphics();

Color c = gImage.getColor();

gImage.setColor(Color.GREEN);

gImage.fillRect(0, 0, WINDOW_WIDTH, WINDOW_HEIGHT);

gImage.setColor(c);

paint(gImage);

g.drawImage(offScreenImage, 0, 0, null);

}

/**

* 用线程重画,每隔一段时间重画窗体

* @author Magci

*

*/

private class PaintThread implements Runnable {

/**

* 每隔REFRESH_RA TE毫秒重画一次窗体

*/

public void run() {

while (true) {

repaint();

try {

Thread.sleep(REFRESH_RA TE);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

}

}

/**

* 监听键盘事件,按方向键控制坦克移动

* @author Magci

*

*/

private class KeyMonitor extends KeyAdapter {

/**

* 处理按键被按下事件

*/

public void keyPressed(KeyEvent e) {

myTank.keyPressed(e);

}

/**

* 处理按键被松开事件

*/

public void keyReleased(KeyEvent e) {

myTank.keyReleased(e);

}

}

/**

* 敌方坦克增援

*/

public void reinforceTank() {

if (tankNum < tankMaxNum && tankAllNum > tankNum) {

int i = rand.nextInt(10);

Tank enemyTank = new Tank(200 + 50 * i, 100, false, this);

if (!enemyTank.collidesWithTank(myTank, true) && !enemyTank.collidesWithTanks(enemyTanks, true)) {

enemyTanks.add(enemyTank);

this.tankNum ++;

}

}

}

/**

* 加入墙

* @param g Graphics对象

*/

public void drawWalls(Graphics g) {

for (int i = 0; i < walls.size(); i++) {

Wall wall = walls.get(i);

wall.draw(g);

}

}

/**

* 画我方坦克

* @param g Graphics对象

*/

public void drawMyTank(Graphics g) {

if (myTank != null) {

myTank.draw(g);

myTank.collidesWithWalls(walls);

if (trea != null)

myTank.eatTreasure(trea);

}

}

/**

* 画敌方坦克

* @param g Graphics对象

*/

public void drawEnemyTanks(Graphics g) {

for (int i = 0; i < enemyTanks.size(); i++) {

Tank enemyTank = enemyTanks.get(i);

enemyTank.draw(g);

enemyTank.collidesWithWalls(walls);

enemyTank.collidesWithTank(myTank, false);

enemyTank.collidesWithTanks(enemyTanks, false);

}

}

/**

* 画炮弹

* @param g Graphics对象

*/

public void drawMissiles(Graphics g) {

for (int i = 0; i < missiles.size(); i++) {

Missile m = missiles.get(i);

if (m != null) {

m.draw(g);

m.hitTanks(enemyTanks);

m.hitTank(myTank);

m.hitWalls(walls);

m.hitMissiles(missiles);

}

}

}

/**

* 加入爆炸

* @param g Graphics对象

*/

public void drawExplodes(Graphics g) { for (int i=0; i < explodes.size(); i++) {

Explode e = explodes.get(i);

e.draw(g);

}

}

/**

* 出现宝物

* @param g Graphics对象

*/

public void drawTreasure(Graphics g) { if (rand.nextInt(100) == 0)

trea = null;

if (rand.nextInt(300) == 0) {

int x = rand.nextInt(785);

int y = rand.nextInt(555);

trea = new Treasure(x,y + 30,15,15);

}

if (trea != null) {

trea.collidesWithWalls(walls);

trea.draw(g);

}

}

/**

* 打印信息

* @param g Graphics对象

*/

public void drawMessage(Graphics g) {

g.drawString("EnemyTanks Count: " + enemyTanks.size(), 10, 50);

g.drawString("All EnemyTanks Count: " + this.tankAllNum, 10, 70);

g.drawString("MyTank Count: " + this.myTankNum, 10, 90);

g.drawString("MyTank Life: " + myTank.getLife(), 10, 110);

}

/**

* 返回敌方坦克总数量

* @return 敌方坦克总数量

*/

public int getTankAllNum() {

return tankAllNum;

}

/**

* 设置敌方坦克总数量

* @param tankAllNum 敌方坦克总数量

*/

public void setTankAllNum(int tankAllNum) {

this.tankAllNum = tankAllNum;

}

/**

* 返回当前敌方坦克数量

* @return 返回当前敌方坦克数量

*/

public int getTankNum() {

return tankNum;

}

/**

* 设置当前敌方坦克数量

* @param tankNum 当前敌方坦克数量

*/

public void setTankNum(int tankNum) {

this.tankNum = tankNum;

}

}

class Tank {

/**

* 坦克水平垂直移动时X、Y轴上的速度

*/

public static final int SPEED = 5;

/**

* 坦克45度移动时X、Y轴上的速度

*/

public static final int XYSPEED = (int) (Math.sqrt(2) * SPEED / 2); /**

* 坦克的半径

*/

public static final int RADIUS = 15;

/**

* 炮筒长度

*/

public static final int PT_LENGTH = 20;

/**

* 45度炮筒的X、Y坐标偏移量

*/

public static final int PT_XY = (int) (Math.sqrt(2) * PT_LENGTH) / 2; /**

* 坦克初始生命值

*/

public static final int LIFE = 100;

// 坦克左上角位置

private int x, y;

// 标记方向键的状态:true表示被按下,false表示被松开

private boolean bL = false, bU = false, bR = false, bD = false;

// 定义八个方向和停止状态

enum Direction {

L, LU, U, RU, R, RD, D, LD, STOP

};

/**

* 坦克方向

*/

public Direction dir = Direction.STOP;

/**

* 坦克炮筒方向

*/

public Direction ptDir = Direction.U;

TankClient tc = null;

//标记敌我坦克,true表示我方坦克,false表示敌方坦克

private boolean good;

//标记坦克生命状态

private boolean live = true;

private Random rand = new Random();

//地方坦克改变一次方向需要的步数

private int step = rand.nextInt(10) + 3;

//坦克的上一个位置

private int lastX = -1, lastY = -1;

//坦克的生命值

private int life = LIFE;

//坦克生命条

LifeBar lb = new LifeBar();

/**

* 根据坦克位置和敌我状态创建一个坦克

* @param x 坦克左上角X坐标

* @param y 坦克左上角Y坐标

* @param good 坦克的敌我状态

*/

public Tank(int x, int y, boolean good) {

this.x = x;

this.y = y;

this.good = good;

}

/**

* 根据坦克位置,敌我状态和当前游戏窗体创建一个坦克* @param x 坦克左上角X坐标

* @param y 坦克左上角Y坐标

* @param good 坦克的敌我状态

* @param tc 当前游戏窗体

*/

public Tank(int x, int y, boolean good, TankClient tc) { this(x, y, good);

this.tc = tc;

}

/**

* 在窗体上画出坦克

* @param g Graphics对象

*/

public void draw(Graphics g) {

if (!this.live) {

if (!this.good)

tc.enemyTanks.remove(this);

tc.setTankNum(tc.getTankNum() - 1);

tc.setTankAllNum(tc.getTankAllNum() - 1);

return;

}

Color c = g.getColor();

if (good)

g.setColor(Color.RED);

else

g.setColor(Color.BLUE);

g.fillOval(x, y, RADIUS * 2, RADIUS * 2);

if (good)

lb.draw(g);

g.setColor(c);

drawPT(g);

//敌方坦克定位

if (!good) {

if (step == 0) {

Direction[] dirs = Direction.values();

int i = rand.nextInt(dirs.length);

dir = dirs[i];

if (rand.nextInt(20) == 0)

dir = Direction.D;

step = rand.nextInt(10) + 3;

}

step --;

if (!this.hasMyMissile())

fire();

}

move();

}

程序中共有如下游戏元素:

?Bullet:子弹

?Tank:坦克

?Boom:爆炸

?Treasurt:宝物

测试环境

测试时硬件环境

?CPU:Inter 105M

?显卡:NVIDIA GeForce 105M

?内存:金士顿2G/DDR2-667

测试时软件环境

?操作系统:Windows 7

?JRE:1.6.0

?显示器:三星液晶14寸/分辨率:1280X800

?

测试结果

在以上软硬件环境中测试,游戏过程正常,满足软件的功能需求,结果正确无误。

发现的BUG及不足

1.由于没有添加操作说明,使玩家不知如何操作,大大地影响了游戏的可操作

性。

2.在测试环境测试时,出现画面抖动现象,严重地影响了游戏的进行,必须找

到原因并改正。

解决方法

1.在程序启动时告知玩家游戏该如何操作,使玩家能清楚、正确地开始游戏。

2.经过反复测试、论证,得知画面抖动现象原因为测试环境JRE安装问题,在重

新安装JRE后,游戏画面恢复正常。

汇编课程设计汇本打字游戏

华北科技学院 课程设计说明书 专业:网络工程 课程名称: 汇编课程设计 设计题目: 打字游戏设计 设计时间: 2011-12-05 至2011-12-16 评语: ________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ _________________________________________ 评阅成绩:____评阅教师:___

课程设计报告的要求 1、需求分析 描述问题。简述课题要解决的问题是什么,有什么要求和限制条件。 2、总体设计(程序设计组成框图、流程图) 3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,过程调用关系描述等)) 4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施 5、测试结果,用几组测试数据进行测试算法设计的正确性。 6、附录。源程序清单和结果:源程序要加注释。结果要包括测试数据和运行结果。 《汇编语言》课程设计案例 一、问题述及其需求分析 要求:利用汇编语言编写一个小的打字游戏 容:编写程序,在打开的菜单页面中选择游戏的难度。 难度选择包括以下5个选择 (1)very slow (2)slow (3)normal (4)fast (5)very fast 在编写过程中包括以下几个部分: (1)初始化上部分的字母 (2)获得下落的字母 (3)字母下移,同时覆盖原来的字母 (4)判断是否有输入 (5)若无输入则下落到最后 (6)覆盖原来的字符

java记事本课程设计论文附源码

设计题目:记事本课程设计 专业:电子信息科学与技术 班级:电子1202班 学号:20121210606 姓名:王鹏 2015 年7月

XXX学院本科学生课程设计任务书

摘要 目前,很多新的技术领域都涉及到了Java语言,Java语言是面向对象编程,并涉及到网络、多线程等重要的基础知识,因此Java语言也是学习面向对象编程和网络编程的首选语言。此次课程设计主要通过编写一个简单的记事本程序使我们深入理解并实践在本课程中所学的有关JAVA程序设计方面的语言基础、异常处理、事件处理、小应用程序以及图形用户界面设计等内容。此简易记事本程序,使用Java程序编写,能够进行输入文字操作,并具有新建文件,打开文件,保存文件,退出,复制,粘贴,剪切等功能。该程序主要用到了Java swing和事件监听等。 关键词记事本程序,java语言,Java swing

目录 摘要 (1) 1 需求分析 (3) 1.1需求分析 (3) 1.2功能设计 (3) 2 概要分析 (4) 2.1概要设计思想 (4) 2.2程序运行界面 (4) 2.3程序模块说明 (4) 2.4流程图 (5) 2.5程序相关说明 (6) 3 程序详细设计与分析 (8) 3.1构建菜单栏及其下拉菜单 (8) 3.2“文件”菜单操作的事件监听 (8) 3.3“编辑”、“格式”等菜单的事件监听 (10) 3.4异常处理 (11) 4 测试分析 (12) 5 源程序清单 (15) 结论 (22) 参考文献 (23)

1 需求分析 1.1需求分析 现在网络上各种文档编辑器数不胜数,有EmEditor ,UEStudio ,GridinSoft Notepad ,Notepad++,win32pad ,SkimEdit,UniRed, xint 。功能也是应有尽有,有能改变字体的,有能改变文字颜色的。但是,这些软件又存在各种各样的瑕疵或问题:有的文件体积相对于一般文字编辑来说太大;有的功能太繁杂,使初级使用者一时难以掌握。仅从日常应用方面来说,一个文本编辑器只需一些简单实用的功能就够了。本程序设计就是依照这样一种使用需要设计了一个简单的记事本程序。 1.2功能设计 本程序要构建的记事本程序参照了Windows操作系统的记事本工具,其功能有以下几个方面: 1、菜单中有“文件”,“编辑”,“格式”,“查看”,“帮助”五个主菜单。 2、“文件”有“新建”“打开”“保存”“另存为”“退出”五个子菜单:分别用于新建文件,打开文件,保存文件,另存文件,退出记事本。 3、“编辑”中有“撤销”“剪切”“复制”“粘贴”“全选”“时间/日期”六个字菜单:用于撤销操作,剪切文字,复制文字,粘贴文字。全部选择,插入日期、时间。 4、“格式”菜单中有“自动换行”和“字体”两个子菜单。 5、“查看”菜单只是显示状态栏。 6、“帮助”菜单中只有“关于记事本”子菜单,主要用于显示该程序的名字,版本等信息。

10 C语言课程设计_坦克大战(提高篇)

C语言课程设计--坦克大战 一、游戏介绍 玩家坦克与敌方坦克在街道中进行巷战,玩家坦克被击中、玩家指挥部被击中或游戏时间到,一局游戏结束。 二、实验目的 综合应用C语言知识和设计知识开发一款小游戏。 三、实验内容 初始界面如下图。 按下空格键后游戏开始,“空格开始”消失,载入地图,并把玩家坦克设置在指挥部左侧。 游戏时间到,比如30秒,玩家坦克被敌方坦克摧毁,或者玩家指挥部被摧毁,一局游戏结束,游戏回到初始界面,并显示上一局的分数。 游戏区域为下图中最内部的黑色区域,左上角坐标[-26, -22],右下角坐标为[26, 22]。墙为正方形,边长为4,坦克也是正方形,比墙略小一点。 玩家用WASD键控制坦克上、下、左、右运行,按J键开炮。玩家坦克碰到墙就停下来,需要调转方向才能继续前进。玩家坦克开炮,一炮就能摧毁一块墙,或者一辆敌方坦克。玩家没摧毁一辆敌方坦克,加1分。 玩家指挥部被坦克或者炮弹(不管玩家还是敌方)碰上,都会被摧毁。 每隔几秒钟,比如3秒,就会产生一辆敌方坦克。敌方坦克每隔一段时间,比如1秒,就自动开炮。敌方坦克遇到墙就会停下来。停下来的坦克,前方的墙如果被摧毁了,又能继续前进。每隔几秒钟,比如2秒,敌方坦克就会顺时针变换一个方向前进。

四、实验准备 本实验中可能用到的C 语言标准库函数和FunCode API Stdio.h Math.h String.h

FunCode API

原图的角度 获得的旋转角度即为两张图片的

五、程序初步设计 如果程序规模比较小的时候,我们习惯一上手就写代码,边写边调整。但是当程序越来越大,代码越来越多的时候,如果我们还用这种方式编程,程序写到一半的时候,你可能会恨不得重写一遍。 此,我们在写代码之前,先把程序功能细化一下,并初步设计好程序结构,包括数据结构和自定义函数。有了比较清晰的思路以后,再开始开发程序。 在本项目中,我们要操作的对象有6个:玩家坦克、敌方坦克、玩家子弹、敌方子弹、墙、玩家指挥部。 其中,墙和指挥部都比较简单,主要是前4种,而且它们有共通性:名称、速度、位置,因此,可以考虑用一个结构体来表示。此外,我们需要用一种数据结构来管理它们。由于敌方坦克、子弹的数量都无法事先确定,所以我们选择链表而不是数组来管理它们。 struct Weapon{ char szName[128]; // 精灵名称 float fPosX, fPosY; // 精灵坐标 float fSpeedX, fSpeedY; // X和Y方向上速度 float fFireTime; // 敌方坦克距下一次开炮的剩余时间 int iHp; // 生命值 int iDir; // 朝向:0 - 上方;1 - 右方;2 - 下方;3 - 左方 int iType; // 类型: 0 - 我方坦克;1 - 敌方坦克;2 - 我方 // 子弹; 3 - 敌方子弹 Weapon* pNext; // 指向下一个节点的指针 }; 其中,iDir和iType用不同整数表示不同含义。如果在小程序中,我们可以在代码里直接调用这些整数,但是想象一下下面情况: 如果你连续写了三小时代码,你还能清晰记得1表示什么含义吗? 你时不时需要找到Weapon结构体定义查看这些数字的含义,然后再引用,出错的概率有多大? 如果你一不小心,在某处搞错了,比如要处理的是敌方坦克,你却引用2,需要多少时间才能把错误找出来? 因此,在做一个比较大的程序时,我们强烈建议用定义一个枚举类型,用我们熟悉的单词来表示这种数字的含义。 enum Direction{ UP = 0, // 上方 RIGHT = 1, // 右方 DOWN = 2, // 下方

汇编语言课程设计报告-打字练习程序

提供全套毕业设计,欢迎咨询 汇编语言课程设计报告 程序题目:打字练习程序 学生姓名:XX 班级:2010级计算机科学与技术专业4班学号:XXX 院系:计算机科学学院 指导教师:XXX

目录

1设计目的 本程序运行后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。通过课程设计,主要达到以下目的: 1. 增进对汇编语言的认识,加强用汇编语言编程的能力; 2. 掌握汇编语言的中断调用功能的应用,可以用汇编语言调用各种中断调用功能,并由此实现对硬件的控制等; 3. 了解和掌握汇编语言程序设计过程、方法及实现,为以后微机原理课程的学习打下良好基础; 4. 通过课程设计可以使我们更加了解书上的知识,了解书上的语句并且能够应用自己的程序中; 5. 掌握屏幕输出显示的设计方法。 2概要设计 2.1 系统总体分析 根据题目要求可以看到有以下几部分来实现打字练习:1.由26字母乱序组成一行显示行。2.字母自动落下。3.从键盘输入的字母与落下字母相同则该字母消失,并且下一个字母自动接着落下。4.按下“Ese”键则程序返回到主界面。5.按空格键游戏暂停。6.在主界面按“E”则程序退出。打字练习的主要功能由以上六部分组成,每一部分之间的联系都是比较紧密的。对于以上及部分,最主要的部分就是第二三两个部分,这是打字练习的重点,需要详细设计其所需要的功能。 2.2主模块框图及说明

是 否 否 是 是 图2-1程序设计流程图 程序的核心模块是打字,各个模块功能的实现主要是通过键盘输入指令来融合的,主要流程是先到主界面,然后选择你想要进行的指令ENTER 进入打字界面开始打字,E退出程序,空格在打字练习时执行暂停的功能,ESC是从打字界面返回到主界面。核心模块的流程大体如下面的流程图图2-1: 3 详细设计 3.1 主模块及子模块说明 主界面是程序的初始入口,也是其他功能模块的接入点。主模块是打字模块,也是核心模块,主要通过各个键盘符来控制各个子模块之间的协调。子模块分为判断输入字符判断模块(这当中包含两个小的子模块:主界面输入字符判断和打字模块输入字符判断)、暂停模块、退出模块(这当中包含两个小的子模块:打字界面返回主界面模块和主界面退出程序模块)

学生信息管理系统java课程设计含源代码完整版

学生信息管理系统j a v a 课程设计含源代码 HEN system office room 【HEN16H-HENS2AHENS8Q8-HENH1688】

JAVA程序设计课程设计报告 课题: 学生信息管理系统 姓名: 学号: 同组姓名: 专业班级: 指导教师: 1 2 1、功能模块划分 (3) 2、数据库结构描述 (4) 3、系统详细设计文档 (6) 4、各个模块的实现方法描述 (9) 5、测试数据及期望结果 (11)

一、系统描述 1、需求实现的功能 、录入学生基本信息的功能 学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。 、修改学生基本信息的功能 在管理员模式下,只要在表格中选中某个学生,就可以对该学生信息进行修改。 、查询学生基本信息的功能 可使用“姓名”对已存有的学生资料进行查询。 、删除学生基本信息的功能 在管理员模式下,只要选择表格中的某个学生,就可以删除该学生。 、用户登陆 用不同的登录权限可以进入不同的后台界面,从而实现权限操作。 、用户登陆信息设置 可以修改用户登陆密码 2、设计目的 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,其强大的

VB坦克大战代码

Private Sub Form_Load() La.Top = 4000 La.Left = 3000 La.Height = 800 La.Width = 900 Lb.Top = 4300 Lb.Left = 3900 Lb.Height = 200 Lb.Width = 900 Lc.Top = 4300 Lc.Left = 4560 Lc.Height = 200 Lc.Width = 200 End Sub Private Sub Form_keypress(keyascii As Integer) If keyascii = 106 Then La.Enabled = False Lb.Enabled = False If La.Top - Lb.Top = 900 And Lb.Left - La.Left = 300 Then Lc.Top = La.Top - 900 Lc.Left = La.Left + 300

Lc.Visible = True Timer 1."Enabled = True Timer 2."Enabled = False Timer 3."Enabled = False Timer 4."Enabled = False ElseIf La.Left - Lb.Left = 900 And Lb.Top - La.Top = 300 Then Lc.Top = La.Top + 300 Lc.Left = La.Left - 900 Lc.Visible = True Timer 1."Enabled = False Timer 2."Enabled = True Timer 3."Enabled = False Timer 4."Enabled = False

打字练习游戏程序

摘要 汇编语言(Assembly Language)是面向机器的程序设计语言,汇编语言是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。在汇编语言中,用助记符(Mnemonic)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言。因此汇编语言亦称为符号语言。 关键字:汇编语言、程序设计、助记符

目录 摘要 0 目录 (1) 前言 (2) 第1章系统分析 (3) 第2章系统总体设计 (4) 2.1打字程序包括以下五个子程序: (4) 2.2算法的整体设计思路 (4) 2.3程序的主要特点 (4) 第3章详细设计 (5) 3.1主界面伪代码 (5) 3.2等级界面伪代码 (5) 3.3游戏界面伪代码 (6) 3.4清屏子程序设计 (6) 3.5密码程序设计 (7) 3.6宏代码 (8) 3.6.1在指定位置显示彩色字符串 (8) 3.6.2显示背景 (9) 3.6.3画横向边框的宏 (9) 3.6.4画竖边框的宏 (10) 3.7功能的进一步完善 (11) 3.7.1完善代码一 (11) 3.7.2完善代码二 (12) 3.7.3完善代码三 (12) 第4章软件使用说明书 (14) 4.1密码界面图: (14) 4.2主界面图: (14) 4.3等级选择界面: (14) 4.4游戏界面: (15) 参考文献 (17) 致谢 (18) 源代码: (19)

前言 随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。而汇编语言作为计算机专业大学生必修课,每个作为本专业的学生对汇编的理解和学习就显得尤为重要。汇编语言是计算机能够提供用户使用的最快而又最好最有效的与言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。因而,对程序的空间和时间要求很高的场合,汇编语言的应用就显得必不可少了,一些直接控制硬件的应用场合,则更是非用汇编语言不可了。 《打字游戏程序设计》课程设计是在教学实践基础上进行的一次大型实验,也是对该课程所学理论知识的深化和提高。因此,要求我们能综合应用所学知识,设计与制造出具有较复杂功能的应用系统,并且在实验的基本技能方面上进行一次全面的训练。通过具体的问题分析、设计、调试、运行程序。在实际问题中锻炼提高自己,增加了对本门课程内容的理解,锻炼了动手能力。就这个程序具体而言:调用宏,显示背景和主界面,通过选择不同的选项,可以进入不同的界面;采用BIOS功能的中断,可以在任何时候退出当前所在的界面并通过选择进入其他的界面。这个程序最终通过菜单所提示的信息选取所要进入的界面,获得所要的功能。

学生信息管理系统java课程设计(含源代码)

JAVA程序设计课程设计报告 课题: 学生信息管理系统 姓名: 学号: 同组姓名: 专业班级: 指导教师: 设计时间: 评阅意见: 评定成绩:

目录 一、系统描述 (2) 1、需要实现的功能 (3) 2、设计目的 (3) 二、分析与设计 (3) 1、功能模块划分 (3) 2、数据库结构描述 (4) 3、系统详细设计文档 (6) 4、各个模块的实现方法描述 (9) 5、测试数据及期望结果 (11) 三、系统测试 (16) 四、心得体会 (23) 五、参考文献 (24) 六、附录 (24)

一、系统描述 1、需求实现的功能 、录入学生基本信息的功能 学生基本信息主要包括:学号、姓名、年龄、出生地、专业、班级总学分,在插入时,如果数据库已经存在该学号,则不能再插入该学号。 、修改学生基本信息的功能 在管理员模式下,只要在表格中选中某个学生,就可以对该学生信息进行修改。 、查询学生基本信息的功能 可使用“姓名”对已存有的学生资料进行查询。 、删除学生基本信息的功能 在管理员模式下,只要选择表格中的某个学生,就可以删除该学生。 、用户登陆 用不同的登录权限可以进入不同的后台界面,从而实现权限操作。 、用户登陆信息设置 可以修改用户登陆密码 2、设计目的 学生信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校相关工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要。所以学生信息管理系统应该能够为用户提供充足的信息和快捷的查询手段。但一直以来人们使用传统人工的方式管理文件档案、统计和查询数据,这种管理方式存在着许多缺点,如:效率低、保密性差、人工的大量浪费;另外时间一长,将产生大量的文件和数据,这对于查找、更新和维护都带来了不少困难。随着科学技术的不断提高,计算机科学日渐成熟,

坦克大战程序代码

import java.awt.* ; import javax.swing.* ; import java.awt.event.*; import java.util.EventListener; class f extends JFrame { f(String title) { this.setTitle(title) ; this.setSize(608 , 630) ; this.setLocation(300 , 100) ; this.setBackground(Color.BLACK) ; MyTank mp = new MyTank() ; this.add(mp) ; this.addKeyListener(mp) ; new Thread(mp).start() ; } public static void main(String[] args) { f h = new f("坦克大战(版本1.0)") ; h.setVisible(true) ; } } //主战坦克 class MyTank extends JPanel implements KeyListener , Runnable { int x = 280, y = 280 ;//坦克的初始位置 int op = 1 ;//坦克的移动方向 int color = 0 ; int tankspeed = 8 ;//坦克的速度 int tankbullet = 8 ;//坦克的子弹速度 int tankfbullet = 4 ;//敌军的子弹速度 int shengming = 100 ;//生命 int fenshu = 0 ; int nandu = 5 ; //设置游戏难度 //子弹 int dx = 295 , dy = 295 ; int dx1 = 295 , dy1 = -10 ; int dx2 = 600 , dy2 = 295 ;

打字游戏

湖南农业大学东方科技学院 课程设计报告 课程名称:微机原理与接口技术 设计题目:打字游戏程序设计 学生姓名:罗英杰 学号: 2 年级专业:2008级计算机科学与技术 班级: 3 班 指导老师:王兴波 学院:东方科技学院 湖南·长沙 提交日期:2009年12月

一、任务与要求 1. 开始界面的提示信息:进入游戏,退出 2. 打字游戏:字母从屏幕上方下落,若用户在字母下落过程中输入正确字母,字母消失, 输入不正确,字母继续下落 3. 空格键退出游戏 二、分析与规划 1、结构分析图,如下 2、布局分析: 首先,出现菜单主界面起到提示作用。然后进入游戏,接着完成游戏的退出。

三、实现过程 1、出现菜单主界面: ZK db "WELCOME TO PLAY$" no db "shejiren: Luo Yingjie 2009/12/09 $" meg db "press Enter key to continue.......$" meg1 db "when a letter is dropping,please hit it!$" meg2 db "press space key to pause!$" meg3 db "press ESC key to return main interface!$" meg4 db "press letter 'E' to exit!$" 上面的代码菜单主界面的内容 clear_screen 00d,00d,24d,79d Init_game 00d,00d,0ah,dl,80d,nextsign1 Init_game 24d,00d,0ah,dl,80d,nextsign2 Init_game 00d,00d,0ah,dh,25d,nextsign3 Init_game 00d,79d,0ah,dh,25d,nextsign4 menu 05d,15d,ZK ;菜单信息的宏调用 menu 07h,15d,no menu 09d,15d,meg menu 11d,15d,meg1 menu 13d,15d,meg2 menu 15d,15d,meg3 menu 17d,15d,meg4 clear_screen 01d,01d,23d,78d ;清屏宏调用 clear_screen 01d,01d,23d,78d Init_game 23d,01d,01h,dl,78d,nextsign5 mov ah,02h mov bh,00h mov dh,01h

Java课程设计实验报告及全部源码流程图

课程设计 一、实验目的 1.加深对课堂讲授内容的理解,掌握解决实际应用问题时所应具有的查阅资料、技术标准和规范,以及软件编程、调试等能力,掌握面向对象的编程思想及Java语言程序设计的规律与技巧,为进一步学习web应用开发及今后从事专业工作打下基础。 2. 使用本学期学习的Java SE技术(也可以使用课堂教学中没有学习过的Java技术,但是应当以Java SE技术为主)完成多功能日历GUI程序的设计,使之具有如下基本功能:一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。 3.在完成基本功能的基础上发挥自己的想象力与创造力,使程序凸显出与众不同的特点与功能,形成本小组的特性色。 二、实验要求 1.问题描述准确、规范。 2.程序结构合理,调试数据准确、有代表性.。 3.界面布局整齐,人机交互方便。 4.输出结果正确。 5.正确撰写实验报告。 三、实验内容 编写一个GUI程序实现日历的功能。一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期以及当前农历,可以为每页日历选择背景图片。可以实现显示时钟,时钟能进行整点报

时。可以实现备忘记事功能,能在每天添加、修改、删除记事等操作。 四、实验步骤 1.在上机实验前,小组成员进行选题讨论,确定小组感兴趣而又伸缩性强的题目多功能日历。 2.在第一次上机实验时讨论分工,分工明确之后,分头合作进行。 3.各成员完成自己的任务后,最后进行统筹合并,以及程序最后的优化。 4. 根据实验结果,写出合肥工业大学实验报告。实验报告应当包括:实验内容,程序流程图,类结构,程序清单,运行结果,以及通过上机取得的经验。 5.详细的上机实验步骤见任务分工及程序设计进度表。 五、实验结果 经过小组成员的共同努力,最终我们小组设计的多功能日历程序能够实现实验的基本要求——一年日历用12页显示,每页显示一个月的日历。日历可以按年或月前后翻动,能够显示当前的日期,可以为每页日历选择背景图片。另外,在完成基本要求的基础上,我们增添了显示农历、显示时钟、添加备忘录、修改备忘录等功能。整体程序运行流畅、功能齐全、符合操作习惯。 下面是程序运行效果截图: 日历主界面(可以实现每个月的日历,可以按年或按月前后翻动,能够显示当前日期,并能够选择背景图片):

VB坦克大战代码

Private Sub Form_Load() La.Top = 4000 La.Left = 3000 La.Height = 800 La.Width = 900 Lb.Top = 4300 Lb.Left = 3900 Lb.Height = 200 Lb.Width = 900 Lc.Top = 4300 Lc.Left = 4560 Lc.Height = 200 Lc.Width = 200 End Sub Private Sub Form_keypress(keyascii As Integer) If keyascii = 106 Then La.Enabled = False Lb.Enabled = False If La.Top - Lb.Top = 900 And Lb.Left - La.Left = 300 Then Lc.Top = La.Top - 900 Lc.Left = La.Left + 300 Lc.Visible = True Timer1.Enabled = True Timer2.Enabled = False Timer3.Enabled = False Timer4.Enabled = False ElseIf La.Left - Lb.Left = 900 And Lb.Top - La.Top = 300 Then Lc.Top = La.Top + 300 Lc.Left = La.Left - 900 Lc.Visible = True Timer1.Enabled = False Timer2.Enabled = True Timer3.Enabled = False Timer4.Enabled = False ElseIf Lb.Top - La.Top = 900 And Lb.Left - La.Left = 300 Then Lc.Top = La.Top + 1600 Lc.Left = La.Left + 300 Lc.Visible = True Timer1.Enabled = False Timer2.Enabled = False Timer3.Enabled = True Timer4.Enabled = False ElseIf Lb.Left - La.Left = 900 And Lb.Top - La.Top = 300 Then

funcode C++课程设计坦克大战

课程设计一坦克大战 一、游戏介绍 相信大部分同学都玩过或看过“坦克大战”这款经典游戏。现在,就由我们自己动手来开发它。只要大家具备了C++语言和面向对象的基础知识,然后按照实验指南的指导一步一步进行下去,相信我们每个同学都能把这款经典游戏做出来。 二、实验目标 综合运用C++及其面向对象的知识开发一款小游戏。 三、实验内容 在一个战场上,玩家控制坦克,消灭敌方坦克,并防止敌方坦克摧毁我方基地。游戏的具体要求如下: 1、游戏有一个初始页面,如下图。 2、按下任意键开始游戏,玩家控制坦克在战场上穿梭,碰到墙时,不能通过。 3、敌方坦克自由移动,每隔2秒改变一个方向,每隔3秒发射一发子弹。 4、敌方坦克每隔5秒出现一辆,从屏幕上方的左、中、右三个位置依次出现。 5、当玩家被消灭或者我方基地被摧毁或者游戏时间大于30秒的时候,游戏结束。 游戏开始前 进入游戏

四、游戏的整体框架 五、实验指南 实验准备 打开FunCode,创建一个新的C++项目。注意:项目名称必须为英文和数字,且不能有空格。 点击“项目”→“导入地图模板”,从对话框中选取名称为TankWar的模板导入。导入成功后,界面如下: 实验一游戏开始 【实验内容】 1、设置游戏标题 2、按空格键,提示图片消失,游戏进入开始状态. 【实验运行结果】 游戏开始前 按下空格键后 【实验思路】

按下空格键是键盘按下事件,可在CSystem::OnKeyDown函数中编写响应代码。为了保证程序结构的清晰、一致,更好的办法是在CGameMain类中添加一个相应的键盘按下事件处理函数,然后在CSystem::OnMouseClick函数中进行调用。 g_GameMain是CGameMain类的对象,它是全局变量,在程序运行时最先被创建。【实验指导】 1、C++程序的执行入口是主函数。FunCode的主函数名称叫WinMain,写在Main.cpp 文件中。CSystem::SetWindowTitle是设置程序运行窗口标题的函数,修改如下:CSystem::SetWindowTitle("坦克大战"); 2、参考CSystem::OnKeyDown函数,为CGameMain类创建一个OnKeyDown函数。 CGameMain类的头文件是LessonX.h文件,实现代码写在LessonX.cpp文件中。因此,先在LessonX.h文件对函数进行声明。函数的返回值和参数列表都与 CSystem::OnKeyDown函数保持一致。访问权限应该是public。代码如下: voidOnKeyDown(constintiKey,constboolbAltPress,constboolbShiftPress,cons tboolbCtrlPress); 3、接着,在Lesson.cpp文件中对该函数进行定义: voidCGameMain::OnKeyDown(constintiKey,constboolbAltPress,constboolbShif tPress,constboolbCtrlPress) { }

5_Java课程设计源代码

package zhouchuan; import java.applet.*; import java.awt.*; import java.awt.event.*; import https://www.wendangku.net/doc/6c7370476.html,.*; public class zhouchuan extends Applet implements ActionListener { AudioClip clip; Button buttonPlay, buttonLoop, buttonStop; public void init(){ try{ URL url=new URL("file:"+"F://ding.wav"); clip=getAudioClip(url);}catch(Exception e){ } buttonPlay=new Button("开始播放"); buttonLoop=new Button("循环播放"); buttonStop=new Button("停止播放"); buttonPlay.addActionListener(this); buttonStop.addActionListener(this); buttonLoop.addActionListener(this); add(buttonPlay); add(buttonLoop); add(buttonStop); } public void stop(){ clip.stop(); } public void actionPerformed(ActionEvent e){ if(e.getSource()==buttonPlay) clip.play(); else if(e.getSource()==buttonLoop) clip.loop();

坦克大战java源代码审批稿

坦克大战j a v a源代码 YKK standardization office【 YKK5AB- YKK08- YKK2C- YKK18】

有些图片路径会出错要注意package ; import 坦克类 class Tank { int x=0; int y=0; int color=0; int speed=1; int direct=0; boolean isLive=true; public Tank(int x,int y) { =x; =y; } public int getX() { return x; } public void setX(int x) { = x; } public int getY() { return y; } public void setY(int y) { = y; } public int getDirect() { return direct; } public void setDirect(int direct) { = direct; }

public int getColor() { return color; } public void setColor(int color) { = color; } } ; import .*; import .*; import .*; public class MyTankGame4 extends JFrame implements ActionListener{ MyPanel mp=null; MyStartPanel msp=null; quals("New Game")) { (msp); mp=new MyPanel(); Thread mt=new Thread(mp); (); (mp); (mp); (true); } } } etImage"/.jpg")); etImage"/")); image2=().getImage"/")); image3=().getImage"/"));

Java语言坦克大战游戏设计(附有代码和图片)

JISHOU UNIVERSITY 本科生毕业设计 题目:基于java语言坦克大战游戏开发作者: 学号: 所属学院:信息科学与工程学院 专业年级: 指导教师:职称: 完成时间: 吉首大学教务处制

目录 基于java语言坦克大战游戏开发 (1) 摘要 (1) Based on the development of Java language Tank Wars Game (2) 第一章游戏简要说明 (3) 第二章开发环境介绍 (4) 2.1 开发环境 (4) 2.2 java语言特点简介 (4) 2.3 Eclipse开发工具的简介 (5) 第三章系统总体设计 (6) 3.1程序功能的总和 (6) 3.2主体模块 (6) 3.3子弹模块 (6) 3.4坦克模块 (7) 3.5 墙模块 (7) 3.6血液模块 (7) 3.7爆炸模块 (8) 第四章游戏详细设计过程 (9) 4.1创建游戏窗口 (9) 4.2改变游戏背景颜色。 (11) 4.3创建坦克 (11) 4.4 让坦克动起来 (12) 4.5改变窗口的大小 (13) 4.6让坦克受控制 (14) 4.7创建一个Tank类 (15) 4.8让坦克向8个方向移动 (16)

4.9修改4.8中所设计的不足 (18) 4.10添加子弹类 (19) 4.11根据己方坦克的位置,打出子弹 (21) 4.12修改坦克停下来不能打出子弹的问题 (21) 4.13让坦克能够打出多发子弹 (23) 4.14解决炮弹不消亡和坦克出界的问题 (23) 4.15增加敌方坦克 (24) 4.16击毙出现的敌方坦克 (25) 4.17加入爆炸效果 (26) 4.18添加多辆敌方坦克 (27) 4.19让敌方坦克智能化 (29) 4.20建立游戏障碍物 (31) 4.21阻止坦克互相穿越 (32) 4.22为我方坦克添加大招和血条 (33) 4.23添加血块 (34) 4.24重新载入敌军或我军坦克 (35) 4.25加入图片 (35) 第五章游戏的可行性测试 (37) 5.1游戏界面介绍 (37) 5.2游戏运行测试 (40) 第六章总结 (43) 参考文献 (44)

C#打字游戏课程设计

C# 打字游戏程序核心代码主要部分: 设计程序流程图:

主窗体代码: using System; using System.Collections.Generic; using https://www.wendangku.net/doc/6c7370476.html,ponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; //课程名称 C# 程序设计实践 //设计题目打字游戏 //专业计算机科学与技术 //班级 //学号 //姓名 //指导老师 namespace Typing_Game { public partial class FrmTyping : Form { public FrmTyping() { InitializeComponent();

public int right = 0; //正确个数计数 public int wrong = 0; //错误个数计数 public int sum = 0; //总个数技术 public int count = 0; //按键总次数 public float accuracy; //正确率 public int Minute = 1; //设置默认没局游戏时间 public int minute; //设置游戏中的倒计时分 public int second; //设置游戏中的倒计时秒 private void FrmTyping_Load(object sender, EventArgs e) { } //在状态栏中显示当前系统时间 private void timerSys_Tick(object sender, EventArgs e) { DateTime now = DateTime.Now; this.tsslSysTime.Text = "系统时间: " + now.Hour.ToString() + ":" + now.Minute.ToString() + ":" + now.Second.ToString()+'\t'; } //开始&结束按钮 private void tsmiStratOrOver_Click(object sender, EventArgs e) { if (tsmiStratOrOver.Text == "开始") { tsmiStratOrOver.Text = "结束"; timerWord.Start(); timerGame.Start(); timerGT.Start(); //在游戏开始时暂停&继续按钮可用 tsmiPauseOrContinue.Enabled = true; //在游戏未开始时选择游戏等级与设置游戏按钮无效 tsmiLevel.Enabled = false; tsmiOption.Enabled = false; //游戏开始初始化游戏数据 right = 0; wrong = 0;

java课程设计2013级大纲以及设计报告

珠海学院课程教学大纲 课程名称:java程序课程设计 适用专业: 2013级计算机科学与技术 课程类别:专业基础课 制订时间:2014年12月 计算机科学与技术系制

目录 1java程序课程设计教学大纲 2 java程序课程设计说明书 3 java程序课程设计报告(模板) 4 java程序课程设计成绩评定表 java程序课程设计教学大纲 (2011年制订,2014年修订) 一、课程编号: 二、前修课程:java程序设计 三、学分:2学分 四、学时: 32学时 五、课程性质与任务: 1.课程性质:《java程序课程设计》是吉林大学珠海学院计算机科学与技术系为本科生各专业开设的专业实践课。计算机科学与技术系本科生在完成《java 程序设计》课程学习后,通过本课程进入专业实践训练环节,其主要目的是使学生深入理解并实践在《java程序设计》课程中所学的有关知识,通过课程设计增强学生的实践动手能力,提高学生独立分析和解决实际问题的能力。培养学生配合完成任务的能力,为学生毕业后的实际工作打好基础。 课程设计是培养学生综合运用所学知识锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程。Java语言的应用十分广泛,例如大型信息系统、通信、网络控制等。java课程设计对增强学生对基础知识的掌握和综合运用是非常必要,对后续许多专业课程的学习和实践训练都具十分重要的意义。 2.课程任务:本课程要求学生在学习了java基础编程的相关技术后,将课本中多个章节的编程技术灵活运用到一些复杂的综合例题中去,使学生了解应用问题

的分析方法和设计解决实际问题的具体过程,掌握应用java进行程序设计的基本规范和技巧,掌握面向对象编程的设计思想,重点掌握java的基本语法规则、输入输出方法、网络编程、多线程编程、小应用程序、数据库编程的综合应用。通过编程掌握调试java程序的基本技巧、模块化应用程序和测试运行复杂应用程序的基本流程。 六、课程教学基本要求提供足够多的程序设计选题,题目应覆盖面较为广泛,部分题目要具有开放性,要求每个学生根据自己的实际情况选择题目,经教师批准后即可进入实际工作阶段。 课程设计结束对每个学生进行验收,要求每个学生提交合格的课程设计报告,还要保证程序能够运行,能够讲清楚自己的工作。老师在检查过程中可针对程序提出问题,学生回答,若程序无法运行得到结果并且具有大量编译错误,而且对程序的内容无法正确解释,则实践老师可以根据实际情况给予评分为不及格,若程序可以运行,但完成的界面以及方法不够完善,则酌情扣分,若程序运行无问题,则提问回答不好的也要相应扣分。课程设计课程集中安排在第十一周。每个同学都要提交初期、中期和最后的文档,提交课程设计报告,要求在规定时间内提交文档。最后验收时,若文档不全,成绩受到一定影响。 七、学时分配表 2011年 12 月8日 java程序课程设计说明书

相关文档
相关文档 最新文档