java毕业设计——基于Java+Java ME的无线网络移动端的俄罗斯方块游戏设计与实现(毕业论文+程序源码)——俄罗斯方块游戏

基于Java+Java ME的无线网络移动端的俄罗斯方块游戏设计与实现(毕业论文+程序源码)

大家好,今天给大家介绍基于Java+Java ME的无线网络移动端的俄罗斯方块游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦

文章目录:

1、项目简介

  1. 本系统是一个基于Java ME平台的无线网络移动端的俄罗斯方块游戏,利用Java ME Wireless Toolkit(WTK)开发包工具在无线网络移动端上实现经典的俄罗斯方块游戏。论文开始部分对无线网络移动系统开发中常使用几种开发语言和环境作了比较,说明了选择Java ME Wireless Toolkit作为开发环境的的原因并对它作了相关的介绍。并展示了在WTK中打开一个项目、把源文件打包成JAR包、产生混淆包的方法和过程。在系统设计时,遵循了无线网络移动端程序的startApp、pauseApp、destroyApp的开发生命周期。在设计与实现方面,分成难度选择、游戏规则、方块处理这几个模块进行实现。在开发与实现的同时也讲解了俄罗斯方块这款古老而经典游戏的游戏背景、规则以及相关特性。最终展示了无线网络移动端的游戏开发的基本开发过程和设计思路。


2、资源详情

项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:9838个字29页
包含内容:整套源码+完整毕业论文+答辩PPT


3、关键词

无线网络移动端;Java ME;俄罗斯方块;游戏开发

4、毕设简介

提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。

1 引言
1.1 系统综述
综合运用以前所学专业知识,在Java ME开发平台上实现无线网络移动端的俄罗斯方块游戏。其研究主要包括以下内容:第一,克服有限的可视屏幕尺寸,使游戏正常显示;第二,解决有限的可用内存调用问题,实现游戏流畅运行;第三,俄罗斯方块游戏规则算法在Java ME平台的实现,保证游戏可玩性;第四,游戏开始、结束等逻辑在游戏进行中的判断。本系统在Windows XP的操作系统下,Java Micro Edition Wireless Toolkit 2.1为开发工具,用中文版UltraEdit做为代码编辑器而实现的。

1.2 Java ME游戏开发背景
游戏开发是艺术与编程技术相结合的完美表现。利用Java的“Write once,run anywhere”特性,可以真正达到程序只写一次,在任何平台都可以执行。同时Java语言对面向对象的良好支持,使开发具有高效性。所以Java ME(Java Micro Edition)是广大无线网络移动端游戏开发厂商和游戏开发爱好者的首选平台。

1.3 无线网络移动端游戏发展现状
省略

2 开发环境介绍
2.1 编程环境的选择
目前,移动开发有以下四种主流平台。Java Micro Edition(Java ME),Binary Runtime Environment for Wireless(BREW),Symbian和Window Mobile Smartphone。其中:
Binary Runtime Environment for Wireless(BREW)
BREW是基于高通公司的Code Division Multiple Acces(CDMA)技术的手机为开发平台。它使用C或C++结合BREW API来开发BREW设备上面的程序。和Java ME一样BREW能够作为游戏和地磁手机操作系统之间的一个中介。和Java ME不同,BERW也支持本地代码,能够专门针对某一手机的处理器而编译。本地代码通常比对应的解释版本要快很多,但在设备之间移植会花费很多技巧。在北美和亚洲有部分无限通信服务提供商。
省略

2.2 Java ME Wireless Toolkit(WTK)简介
Java ME Wireless Toolkit(WTK) 的全称是:Java ME无线开发工具包。这一工具包的设计目的是为了帮助开发人员简化Java ME的开发过程。它的功能包括了编译、打包、模拟执行MIDP应用程序。其中包括了字节码验证器、Java ME模拟器、KToolBar、预配置服务器(provisioning server)等很有用的工具。

省略

2.3 Java ME Wireless Toolkit(WTK)开发环境的简介
省略

3 游戏设计
3.1 俄罗斯方块游戏的背景
俄罗斯方块是俄罗斯人阿列克谢·帕基特诺夫(Alexey Pazhitnov)发明。人们一开始并没预料到它将会有如此广泛的吸引力。实际上,在游戏发明后的数年间,俄罗斯方块成了无数场专利官司和法律纠纷的目标,而许多公司也不遗余力地上阵厮杀,想要将游戏的创意据为己有。一个最初的版本是Spectrum Holobyte为IBM兼容机开发的游戏。1988年,俄罗斯方块在街机上也变得非常流行,这归功于Atari,因为他们发布了一个能让两名玩家同时游戏的版本。

俄罗斯方块经常被称为拼图游戏。玩家需要找出如何能把各块积木最好的拼在一起的方法。俄罗斯方块相当于直角的智力拼图游戏,或者其它一种“在这有限空间内组织几何体”的拼图。俄罗斯方块为了创造真正引人入胜的游戏,它巧妙的平衡了拼图游戏与动作游戏的机制。因而每个人玩这个游戏都会有一次不同的体验。俄罗斯方块所用到的一种动作游戏机制是越来越逼近的威胁感,留给玩家的时间总是非常有限。俄罗斯方块中积木是从上面落下来。如果玩家不在积木落到屏幕底下或翻转它,不能给它找一个最有利的位置,这块积木就可能会堵住某处,而它下面的几行也就没有办法拼接完整,玩家也就离游戏结束又靠近了一行或几行。在游戏进程中,积木落下来的速度越来越快,这样对玩家的挑战也就越来越大,游戏的难度也逐步增加。

3.2 俄罗斯方块游戏的规则
俄罗斯方块游戏的玩法非常简单易学,游戏界面是一个很高的长方形2D盒子,方块出现在盒子的上方,这些方块都由四个小方块组成,并按照各种方式排列,其中每一个方块都至少和另一个方块相连。然后,这些积木慢慢地落向盒子底部,玩家可以把这些方块左右移动或旋转。一旦这个方块碰到阻碍,比如盒底或者另一个方块,它就会停止,而玩家可以对之加以操作。当屏幕底端的方块拼满一横行时,这个层的方块就会消失,而这一行以上的所有方块都会下降一层。而当那些没有拼完的横行填满整个长方形盒子,新的方块无法再出现时,游戏就结束了。

3.3 俄罗斯方块游戏的特性
(1)单屏游戏:
俄罗斯方块全部反映在一个屏幕上。玩家可以在同一时间看到整个游戏环境,在此基础上决定怎么处理手上的这块积木。这个游戏当中没有任何探险成分在内,它不会让玩家真正大吃一惊,玩家能够看到让游戏顺利进行下去的所有信息,所以玩家输了的话只能怪他自己。

(2)无限游戏:
只要积木还没有堆到盒顶,俄罗斯方块就允许玩家一直玩下去,不管他做出了多少错误的决定。每次游戏都以失败而告终,没有人真正能打败这个游戏。玩家们总是能找到提高玩俄罗斯方块技艺的方法,这就是俄罗斯方块和传统拼图游戏的根本不同。一旦玩家拼好了一幅拼图,只要他还记得他是怎么拼的,那么这个拼图就对他再也无挑战了。所以人们通常不会多次玩一个拼图,但一个设计精巧的游戏却总能让人玩上一遍又一遍。俄罗斯方块正是这样一个游戏。

(3)多条生命:
和大多数的街机游戏不同,最早的俄罗斯方块只给玩家一条生命。积木一堆到盒子顶部,玩家就输了。但是游戏的设计允许玩家出现错误,同时还不会立即败下阵来。当积木叠在长方盒子的底部时,玩家可以看到自己所犯的错误,在游戏结束前,他还是有时间想一想如何把后面的积木拼放得更合理些。这样,俄罗斯方块虽然没有给玩家多条生命,但却在玩家重新开始前,给玩家一个改善游戏技巧、获得一些小小成就的机会。

(4)最高分机制:
俄罗斯方块引入一个计分模式,它给玩家计分并把分数记录在高分排行榜上。实际上,因为玩家不可能击败这个游戏,所以,取得一个更高分数的可能性就成为玩家反复玩这个游戏真正的动力所在。

(5)简单易学,容易操作:
俄罗斯方块的真正杰出之处在于它的游戏机制简单平朴,浅显易懂。玩好这个游戏只需极少的键位,所有操作都在屏幕上一览无余。这意味着,不论是否熟悉计算机游戏,任何人都可以走过来并立即开始玩它。然而,玩家永远不可能完全掌握这个游戏,因为这个游戏的难度与是递增并且它在理论上可以玩无限长的时间。

4 游戏系统分析设计
4.1 系统解决方案
本系统在Windows XP的操作系统下,以Java Micro Edition Wireless Toolkit 2.1为开发工具,用中文版UltraEdit做为代码编辑器而实现的。在KToolBar开发包的DefaultColorPhone模拟器下进行调试。

4.2 系统总体结构
系统开发的主要任务是俄罗斯方块游戏在无线移动端的实现。本系统的主要实现功能模块分为:难度选择模块、方块处理模块、游戏规则模块。

4.2.1 难度选择模块
用户在title屏按键数字键选择0-9种游戏难度,进入相对应游戏关卡。
在这里插入图片描述

4.2.2 方块处理模块
方块处理模块定义方块的7种状态,每种状态都是由四个小方块组合而成,如下:
在这里插入图片描述

图7 方块形状模块图

4.2.3 游戏规则模块
游戏规则模块主要实现俄罗斯方块游戏基本规则。比如,积满一行后消减;能够快速直接的下落;记录游戏最高分;方块翻转;分数计算;随机生成方块,见下图:
在这里插入图片描述

图8 游戏规则模块图
4.3 游戏中断处理流程
中断处理是移动设备程序生命周期的重要组成特性,包括下图三种阶段:
在这里插入图片描述

图9 系统生命周期图

5 系统实现与测试
5.1 系统源文件结构
本系统由10个类组成并实现全部功能。项目名字为TetrisMidlet,其项目文件结构如下图:
在这里插入图片描述

图10 项目结构图
在项目源文件中,src文件夹下为实现系统的源文件。建了两个包作为功能划分,分别为:ui包和model包。

5.2 难度选择模块
5.2.1 难度选择模块结构
ui包里包含以下类:
InfoBox.java 用于显示数字的信息框
TitleBox.java 显示title屏,包含当前高分提示选择一个难度
NextPieceBox.java 显示下一个激活方块
TetrisCanvas.java 处理程序的所有UI
DisplayBox.java 在屏幕上显示Box
其结构图如下:
在这里插入图片描述

图11 ui包结构图
其中核心类DisplayBox.java的方法图如下:
在这里插入图片描述

图12 类DisplayBox的方法图
在DisplayBox.java中方法paint()实现了title屏的显示,其代码如下:

public final void paint(Graphics g) {
		g.setColor(this.bgColor);
		g.fillRect(x, y, width, height);	// box的背景
		g.setColor(this.fgColor);
		g.drawRect(x, y, width, height);	// 边框
		this.paintBoxContents(g);}
下面是TerisCanvas.java中绘制方块paintBlock()方法的实现代码:
private void paintBlock(int x, int y, int blockType, Graphics g) {
		int blockX = this.boardX + (this.blockSize * x);
		int blockY=this.boardY+(this.blockSize* (y - TetrisConstants.TOP_VISIBLE_ROW));
		if(TetrisConstants.BLOCK_EMPTY != blockType) {
			// 绘制下落时的阴影
			g.setColor(TetrisConstants.COLOR_BLACK);
	g.fillRect(blockX + 1, blockY + 1, this.blockSize - 1, this.blockSize - 1);
			// 绘制一个实际的方块覆盖在阴影上
			this.setColor(blockType, g);
			g.fillRect(blockX, blockY, this.blockSize - 1, this.blockSize - 1);
		}  else {
			//绘制颜色
			g.setColor(TetrisConstants.COLOR_WHITE);
			g.fillRect(blockX, blockY, this.blockSize, this.blockSize);}}

其中,TOP_VISIBLE_ROW为TetrisConstants下定义,Y坐标的从行0开始索引的位置,初始值为2。
BLOCK_EMPTY为TetrisConstants下定义的空方块,初始值为-1。
COLOR_BLACK为TetrisConstants下定义的预设RGB颜色,初始值为0x00000000。
COLOR_WHITE为TetrisConstants下定义的预设RGB颜色,初始值为0x00ffffff。

5.2.2 难度选择模块功能
模拟器程序运行,在应用程序列表里显示可以载入运行的模拟程序
点击运行程序后,在title屏显示游戏名称、作者、最高分记录和按键提示,点击数字键输入0-9中的一个数字,以选择不同难度的关卡,如下图:

在title屏,也可以点击左软键退出程序。

5.3 游戏规则模块功能
5.3.1 游戏规则模块结构
游戏规则模块包含3个类:
DropThread.java 处理方块下落问题
TetrisConstants.java 常数定义
TetrisMidlet.java 游戏规则和对键盘输入的捕捉,以及中断的处理
其结构图如下:
在这里插入图片描述

图15 游戏规则模块结构图
其中核心类DropThread.java实现了方块的下落,它的方法图如下:
在这里插入图片描述

图16 类DropThread方法图
其中run()方法实现循环下落,代码如下:

public void run() { //运行方法
while(this.running) {
// 当前下落的方块
if(this.skipNextTick) {
this.skipNextTick = false;
} else {
this.game.tick();
}
try {
Thread.sleep(this.game.getTickSpeed()); // 线程睡眠
} catch(InterruptedException ie) {
}}}

5.3.2 游戏规则模块功能
游戏规则模块实现俄罗斯方块游戏的主要功能包括,消减积满的行、快速下落、方块翻转、分数计算、下落碰撞检测、随机生成方块。
下面是消减积满行功能代码,如下:

private int clearCompletedRows(TetrisPiece piece) {
TetrisBoard board = this.getBoard();
// 检查方块的每一行,看是否以完成
for(int i = 0; i < TetrisConstants.FOUR_BLOCKS; i++) {
int rowY = piece.getBlockY(i);
// 如果一行被填充满,则标记为完成
if(board.checkRowCompleted(rowY)) {
this.markRowCompleted(rowY, true);
}
}
int numClearedRows = 0;
for(int y = TetrisConstants.HEIGHT - 1; y >= 0; y–) { //从下到上重复
if(numClearedRows > 0) {
board.dropRow(y, numClearedRows);
}
if(this.isRowCompleted(y)) {
numClearedRows++;
this.markRowCompleted(y, false); // 为下一次重置
}
}
// 清除最上面的完成行数
for(int i = 0; i < numClearedRows; i++) {
board.clearRow(i);
}
return numClearedRows;
}

为了增加玩家在游戏过程中的游戏性,下落的方块设置成随机生成,这里利用rand.nextInt方法得到随机数,下面是随机生成方块功能的部分代码,如下:

private int getRandomPieceType() {
return Math.abs(rand.nextInt() % TetrisConstants.NUM_PIECE_TYPES) + 1;
}
首先用rand.nextInt()方法得到随机数后,用随机数除以TetrisCanstants中定义的表示方块类型数的常量NUM_PIECE_TYPE,其值初始值为7,取余后加1取其绝对值。实现效果如下图:
在这里插入图片描述

图17 游戏进行状态图
在前面4.3部分通过图9的系统生命周期流程图,已经了解了游戏中断处理的过程。在游戏运行时可以按右软键调用程序生命周期中pauseApp()方法暂停游戏,方块会停在暂停位置,直到玩家再次点击右软键恢复游戏,pauseApp()方法代码如下:

protected void pauseApp() {
		// 挂起程序使游戏进入暂停状态
		if(TetrisConstants.RUNNING_STATE == this.gameState) {
			this.pauseGame();
		} }
在pauseApp方法中调用了pauseGame()方法,其实现代码如下:
private void pauseGame() {
		// 把暂停命令替换成恢复命令
		this.gameCanvas.removeCommand(this.pauseCommand);
		this.gameCanvas.addCommand(this.resumeCommand);
		// 进入暂停状态并停止下落
		this.setGameState(TetrisConstants.PAUSED_STATE);
		this.dropThread.stopThread();}

5.4 方块处理模块
5.4.1 方块处理模块结构
俄罗斯方块游戏中出现的七种方块是由4个小块组合而成。方块处理模块包含在model包中:
TetrisPiece.java 当前下落方块的处理
TetrisBoard.java 定义方块格子的状态
其类结构图如下:
在这里插入图片描述

图20 方块处理模块结构图
核心类TetrisPiece中实现了七种方块下落时翻转方式的下落,方块翻转方式分三种方式:自由翻转(Free)、两面翻转(Toggle)、不能翻转(None),下图是判断图示:
在这里插入图片描述

图21 方块翻转方式判断图示
在四个组成的方块的小块中,有一个中心点小块(1,1)在翻转的时候坐标是不会变化的,这个坐标在参数设置类TetrisConstants.java中,名称为:PIVOT_INDEX,其初始值为1。
下面用方块I举例说明其进行翻转判断的代码:

private void setAsNewIPiece(int x, int y) {
this.pieceType = TetrisConstants.I_PIECE;
this.rotationType = TetrisConstants.ROTATION_TYPE_TOGGLE;//只能进行两个方向的旋转,设置类型为TOGGLE
		this.rotationToggle = true;	// 设置TOGGLE标志为TURE
		this.setBlockCoords(0, x - 1, y);		
		this.setBlockCoords(1, x    , y);
		this.setBlockCoords(2, x + 1, y);
		this.setBlockCoords(3, x + 2, y);}

其中rotate()方法实现了方块的旋转,(x,y)为小方块坐标,其翻转实现算法如下:

在这里插入图片描述

图23 方块翻转算法流程图
方块翻转算法流程实现代码如下:

public void rotate(int pivotX, int pivotY, boolean rotateDirection) {
		if(TetrisConstants.ROTATION_TYPE_TOGGLE == this.rotationType) {
			// 如果翻转类型为TOGGLE
			rotateDirection = this.rotationToggle; //判断翻转方向
			this.rotationToggle = !this.rotationToggle; // 如果与canRotate匹配,中心点方块将被使用
		}
		// 重构四个小块,每个都转动
		for(int i = 0; i < TetrisConstants.FOUR_BLOCKS; i++) {
			int blockX = this.getBlockX(i);
			int blockY = this.getBlockY(i);
			//  左旋转:交换x和y坐标,x坐标取反
			//  右旋转:交换x和以坐标,y坐标取反
			int dx = blockY - pivotY;
			int dy = blockX - pivotX;
			if(rotateDirection) {
				// 如向左旋转
				dx *= -1;
			} else {
				// 如向右旋转
				dy *= -1;
			}
			int rotateX = pivotX + dx;
			int rotateY = pivotY + dy;
			this.setBlockCoords(i, rotateX, rotateY);//得到翻转后的新坐标
		}
}

5.4.2 方块处理模块功能
对当前下落方块的处理,主要功能是及时刷新图像,保证方块状态及时更新。核心类TetrisBoard.java实现了此功能,其方法图如下:
在这里插入图片描述

图24 类TetrisBoard方法结构图
当下落方块顶端积满后,游戏系统判断游戏结束。在TetrisBoard.java中的checkRowCompleted()方法实现了此功能,其代码如下:

public boolean checkRowCompleted(int rowY) {
for(int x = 0; x < TetrisConstants.WIDTH; x++) {
if(TetrisConstants.BLOCK_EMPTY == this.getBlockType(x, rowY)) {
// 有空方块,行不被填充
return false;
}
}
return true;
}

如下图:
在这里插入图片描述

图25 方块下落游戏图像刷新状态图
当游戏结束时立即显示title屏,计算并显示出这次游戏的最高分。同时等待玩家键入数字,选择游戏难度开始新的游戏。其实现由init()方法控制,其代码如下:

private void init() {
	this.board = new TetrisBoard();
	this.gameCanvas = new TetrisCanvas(this);
	this.activePiece = new TetrisPiece(); //方块处理
	this.completedRows = new boolean[TetrisConstants.HEIGHT]; //初始化数组
	this.hiScore = this.openAndReadHiScore();	// 从RMS得到当前存储的高分
		this.nextPieceType = TetrisConstants.UNINITIALIZED;
		this.rand = new Random();
		// 设置exit/pause/resume命令
		this.setupCommands();
		this.gameCanvas.addCommand(this.exitCommand);
		// 显示title屏
		this.setGameState(TetrisConstants.TITLE_STATE);}

Title屏将显示如下图:
在这里插入图片描述

图26 结束并重新开始游戏状态图

结 论
本系统是一个基于Java ME平台的无线网络移动端的俄罗斯方块游戏,利用Java ME Wireless Toolkit(WTK)开发包工具在无线网络移动端上实现经典的俄罗斯方块游戏。论文开始部分对无线网络移动系统开发中常使用几种开发语言和环境作了比较,说明了选择Java ME Wireless Toolkit作为开发环境的的原因并对它作了相关的介绍。并展示了在WTK中打开一个项目、把源文件打包成JAR包、产生混淆包的方法和过程。在系统设计时,遵循了无线网络移动端程序的startApp、pauseApp、destroyApp的开发生命周期。在设计与实现方面,分成难度选择、游戏规则、方块处理这几个模块进行实现。在开发与实现的同时也讲解了俄罗斯方块这款古老而经典游戏的游戏背景、规则以及相关特性。最终展示了无线网络移动端的游戏开发的基本开发过程和设计思路。

和桌面电脑游戏以及家用游戏系统游戏开发一样,无线网络移动端游戏开发必须要掌握和组合应用各种软件开发技术。同时它也是计算机科学技术与艺术结合的产物,也许正是艺术和技术技能的这种独特混合,使游戏开发具有独特魅力。种种调查数据可以证明无线网络移动端游戏市场的繁荣,如今没有人会怀疑它的美好未来。在Java ME这种面向对象、高移植性的语言平台进行开发是大多数无线网络移动端游戏开发者的首选。它一定会随着无线网络移动端游戏的创新不断发展壮大。

参考文献
[1] Michael Morrsion.J2ME手机游戏编程入门[M].北京:人民邮电出版社,2005。
[2] 李振鹏,龚剑.J2ME手机游戏开发技术详解[M].北京:清华大学出版社,2006。
[3] Richard Rouse.游戏设计原理与实践[M].北京:电子工业出版社,2004。
[4] 王森.Java手机/PDA程序设计入门[M].北京:电子工业出版社,2005。
[5] 刘斌.J2ME手机开发入门[M].北京:人民邮电出版社,2006。
[6] Qusay H. Mabmoud.无线Java入门[M].北京:清华大学出版社,2002。
[7] Joshua Bloch,Neal Gafter.Java解惑[M].北京:人民邮电出版社,2006。
[8] Joshua Bloch.Effective Java[M].北京:机械工业出版社,2005。
[9] 殷兆麟.Java语言程序设计[M].北京:高等教育出版社,2004。
[10] 黄斐.MS Project2002项目管理与应用[M].北京:科学出版社,2004。

致 谢
省略


5、资源下载

本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。

序号毕业设计全套资源(点击下载)
本项目源码基于Java+Java ME的无线网络移动端的俄罗斯方块游戏设计与实现(源码+文档)_java_Java ME_俄罗斯方块游戏.zip
  • 1
    点赞
  • 2
    收藏
  • 打赏
    打赏
  • 0
    评论
/* *游戏说明:此为我边学边做的,但有很多的BUG,参照了我从网上下载的游戏方块设计 * 一、游戏的BUG * 1、提示分数那地方,玩过游戏后,长了分数后,再玩时,后面的数据没清掉 * 2、重级BUG:当在游戏过程中,切换了一个旁边的后,再切换回来后, * 刚才的方块不显了,而且游戏区的数据也不见了。 * 3、我在刚开始做时,没有要窗口上的关闭,现在想要,但不知道怎么加。 * 4、如果用鼠标点了菜单后,再回到游戏区,数据方块又不见了。 * * 二、此游戏没有版权,可以乱改,反正我也是在学习,谢谢那些无私的网友们,不过 * 请你们下次提交上来的源程序有个说明好不好,看得我头都大了,流程图也没得, * 设计说明也没有,完全看源代码,很费力的!谢谢对新人的支持。 * * 三、如果那位高手愿意,请收我为徒弟吧,我学过c/c++、数据结构、编译原理、操作系统等( * 计算机专业的),但对于VC这个大东西来说,,好像一点用也没有,现在在边学边做,门不好入呀! * * 四、请高手们帮帮我,请给分析一下问题在哪,谢谢,我对VC还不是很清楚,在文件目录下 * 有设计时的流程图。设计说明我没有写,我是针对每一个流程图模块来设计和编码的。 * * 五、在游戏中,我加了很多注释,以方便理解,主要的代码都在CChileView.h、CChileView.CPP中 * 我想的是,如果新人也想看看的话,可能理解起来快点。不过有点乱,编码中有些冗余。没来 * 得及改。如果你改好了,请给我一份,我想学学。谢谢! * *================================================================================================ * *编译环境: * 1、操作系统 :WindowsXP SP2 * 2、编译器 :Visual C++ 8.0 * *包含文件:所有源文件都在此。 * * *编译参考:此目录下有一个文件名为:Russia.sln的文件,用Visual C++ 8.0 打开,直接就可编译 * 此游戏是我编译通过后,才压缩的。如果编译不了,请联系我,下面有我的QQ和email。 * * *其它事宜:如果还有什么问题我没有提到的,请联系我,愿向你学习。 * *================================================================================================ * *Version :BUG Edtion * *Aauthor :lin_liu60 * *E-mail :lin_liu60@163.com * *QQ :994165 (网名:刘羽峰) * *Date :2006/9/27 * */

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:深蓝海洋 设计师:CSDN官方博客 返回首页
评论

打赏作者

毕业设计方案专家

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值