c语言程序设计罗朝盛综合程序练习题.ppt_第1页
c语言程序设计罗朝盛综合程序练习题.ppt_第2页
c语言程序设计罗朝盛综合程序练习题.ppt_第3页
c语言程序设计罗朝盛综合程序练习题.ppt_第4页
c语言程序设计罗朝盛综合程序练习题.ppt_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

综合程序练习题,大型程序设计的要求 9个大型程序设计题目分析,综合程序练习题,大型程序设计的要求,题目要求:每道题都给出了问题的描述、基本要求、高级要求、难点分析、主要数据结构及主要算法提示等,以便供大家选择练习。 其中“基本要求”和“高级功能”是两个不同层次的功能要求。,综合程序练习题,大型程序设计的要求 9个大型程序设计题目分析,综合程序练习题,大型程序设计题目分析: 1 打字练习 2 电子琴 3 简易画图板 4 贪吃蛇 5 五子棋 6 搬运工 7 大富翁 8 赛车 9 坦克大战,1问题描述 2基本功能 3高级功能 4难点分析 5程序总体结构 6主要数据结构提示 7主要算法提示,综合程序练习题打字练习,1:问题描述 打字练习是一个非常有用的小程序,电脑初学者可以借助它来熟悉键位,新手可以利用它来提高打字速度。 2:基本功能 键位练习、单词练习、文本练习 3:高级功能 增加音效、暂停功能、继续上次未完成的练习,综合程序练习题打字练习,难点分析,1)虚拟键盘由于有很多按键所以绘制时会比较繁琐。至于如何反像显示一个按键,我们会在在算法提示部分给出。 2)键位练习部分由于有些键是没有对应的ASCII码的,所以我们无法使用ASCII码来识别用户的按键,应当使用键盘码来识别它。函数bioskey可以获得按键的键盘码。,综合程序练习题打字练习,设计及实现要点,打字练习程序的总体结构,综合程序练习题打字练习,主要数据结构分析(一),1)struc rect结构代表屏幕上的一个矩形区域。它的结构如下:,struct rect int left,top; /*矩形左上角的坐标值*/ int right,bottom; /*矩形右下角的坐标值*/ ,综合程序练习题打字练习,主要数据结构分析(二),2)在键位练习的部分,由于要经常对虚拟键盘上的某个键进行绘制,为了绘制时的方便我们可以使用一个结构来表示虚拟键盘上的每个按键。,struct key struct rect keyRect; int keyNum; char keyName10; ;,keyRect就代表了按键在屏幕上占据的一个矩形区域。 keyNum是按键的键盘码。 keyName是按键的名称,绘制时显示在按键上。,综合程序练习题打字练习,主要数据结构分析(三),3)使用struct key keyArrayMAXKEY数组来保存所有要绘 制的按键,struct key keyArrayMAXKEY;,综合程序练习题打字练习,主要算法提示,1)随机产生按键:通过产生一个随机数作为索引值访问keyArray数组,来随机产生需要用户输入的按键。然后将对应的按键反像显示。 2)反像显示一个按键:假设 R1是我们要反像显示的按键在屏幕上占据的一个矩形区域。(注:R1是一个struct rect结构的对象,R1的值可以从keyArray数组中获得。 3)getimage的作用是将一个矩形区域的图像复制到buff中,而putimage的作用是将buff中的图像输出到屏幕中的某个位置。而参数NOT_PUT的作用是告诉putimage在输出时将图像反像显示。,综合程序练习题电子琴,1:问题描述 设计一个键盘电子琴,通过键盘输入来模拟敲击琴键,并发出对应的琴声,使用户能在PC机上弹奏电子琴。现要求利用Turbo C 2.0来实现该游戏。 2:基本功能 图形界面显示。界面分三部分,背景色为蓝色。 菜单功能 电子琴。系统分3种模式:实时模式、播放模式、编辑模式。 3:高级功能 界面显示波形图、菜单帮助快捷键、鼠标功能,综合程序练习题电子琴,难点分析,1)曲目文件的格式设计。业界广泛采用midi文件,但程序员新接触时,需要了解它的格式等技术,解码、编码也都存在难度。可自行设计一种格式,记录键盘按键及时间间隔。这样编码和解码都很简单。 2)图形描绘。这是本程序最主要的工作。在考虑如何设计出一个美观的图形时,好要考虑其它很多方面:背景色、菜单颜色、菜单大小、琴键颜色、琴键的形状、显示琴键被按下、显示波形图等。 3)响应鼠标事件。在DOS环境下响应鼠标操作比较有难度。,综合程序练习题电子琴,设计及实现要点,电子琴程序的总体结构,综合程序练习题电子琴,主要数据结构分析(一),/*系统状态*/ enum sytem_status system_status_normal, system_status_paused ,/*系统模式*/ enum sytem_modul system_modul_intime, system_status_play, system_status_edit ,/*定义颜色枚举*/ typedef enum color int blue, int red, . COLOR;,定义系统常量,综合程序练习题电子琴,主要数据结构分析(二),#define menu_item_height /*菜单项的高度*/ #define menu_item_width /*菜单项的宽度*/ #define menu_item_color /*菜单项的颜色*/ #define menu_group_distance /*菜单组间间隔*/,typedef struct ctrlKey char* name; int firstkey; int secondkey; CTRL_KEY;,2)菜单的一些常量定义,3)定义控制键。一般是ctrl/alt和另外一个键的组合,综合程序练习题电子琴,主要数据结构分析(三),typedef struct menu_item_node char * name; CTRL_KEY hotkey; menu_item_node *next; MENU_ITEM; #define menu_item_list MENU_ITEM,typedef struct menu_group char* name; CTRL_KEY hotkey; menu_item_list itemList; /*文件菜单组下有几个菜单项*/ MENU_GROUP;,4)一个菜单项,5)定义菜单组,综合程序练习题电子琴,主要数据结构分析(四),typedef struct rectangle POSITION up_start, /上方的起始位置 POSITION up_end, /上方的结束位置 POSITION down_start, /下方的起始位置 POSITION down_start /下方的结束位置 RECTANGLE;,typedef struct coordinate int x; int y; POSITION;,6) 定义某个点的坐标,7)定义一个形状的四个位置,注意边线均为直线,综合程序练习题电子琴,主要数据结构分析(五),typedef struct key_record int keynum, int timeinterval KEY_RECORD;,typedef struct gragh RECTANGLE shape, COLOR frameColor, COLOR fillColor GRAGH;,8)定义一个图形,包括形状、边框色、填充色,9)定义一个击键记录,综合程序练习题电子琴,主要数据结构分析(六),typedef struct config COLOR background, COLOR hightlight, CONFIG;,typedef struct key_record_list_node KEY_RECORD key, key_record_list_node * next LIST_NODE;,10)记录所有击键,11) 记录配置信息,包括背景色、高亮色、菜单项的长宽等、键盘对应图的位置、波形图的文职、曲目列表的位置、菜单组信息等,自行补充:,综合程序练习题电子琴,主要算法提示,参考以下几个主要函数的定义: 初始化函数:初始化全局配置信息 int initConfig(CONFIG * pConfig); 描绘界面:此函数可在初始化界面时用,也可在用户设置了选项后重新描绘界面时调用 int paintFrame(CONFIG * pConfig); 画一个图形 int paintShape(GRAGH * pShape); 在指定位置打一个指定大小的字 int paintChar(GRAGH * pShape,char* name); 一些大的处理函数,如处理新建文件,自行补充 int onNewOpen();,综合程序练习题简易画图板,1:问题描述 简易画图板是一个简单的绘图工具,它提供了一些基本的画图功能。界面由工具栏、调色板和绘图区组成。 2:基本功能 绘制直线、矩形、椭圆、圆、橡皮擦、填充 3:高级功能 支持对选定图像中的一个矩形区 可以将绘制的图案保存为16色的BMP文件。 可以打开一幅16色的BMP图片进行修改。,综合程序练习题简易画图板,难点分析,1)填充功能。虽然Tc图形库中有填充函数floodfill,但是这个填充函数不符合我们的要求。因为这个填充函数在调用时除了要指定填充区域中的一点,还需要指定要填充的区域边界的颜色,获取图像边界颜色的操作对于用户来说是比较麻烦的。此外,我们希望填充区域的边界可以是不同颜色的。所以,需要设计自己的填充函数。 2)BMP文件的打开和保存。必须了解BMP文件的结构,以知道如何从文件中读出需要的数据以及如何将数据保存到bmp文件中。,综合程序练习题简易画图板,设计及实现要点,简易画图板程序的总体结构,综合程序练习题简易画图板,主要算法提示,首先由用户指定填充区域中的任一点,以该点作为种子点,然后分别 向上下左右四个方向检查该点的相邻点。如果这些点和种子点的颜色 相同,则填充它,否则,就视为边界点。然后再以那些检测到的非边 界点作为种子点,以同样的方式检查它们的相邻点。这样不断的检测 、填充就可以将区域填充满。 推荐使用队列来实现一个非递归的算法。 非递归的填充算法: a、将第一个种子点放入队列 b、当队列非空 b1、从队列中取出一点 b2、将该点置为填充色 b3、分别检查上下左右四点,如果是非边界点则将其放入队列中 c、算法结束,综合程序练习题贪吃蛇,1:问题描述 贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现食物,通过按键控制蛇向上下左右四个方向移动,蛇撞到食物,则食物被吃掉,蛇的身体增加一节。如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体)游戏结束。现要求利用Turbo C 2.0来实现该游戏。 2:基本功能 提供图形界面、键盘控制游戏、计分机制、结束判断 3:高级功能 暂停功能:能随时通过按键来暂停游戏,再按一次则继续游戏。 速度调节功能 奖励机制 音效功能,综合程序练习题贪吃蛇,难点分析,1)表示蛇的图形以及蛇的移动。 2)检测蛇有无撞到食物、围墙或是自己的身体。 3)食物的随机产生。 4)蛇的移动速度调节。 5)奖励食物的定时机制。,综合程序练习题贪吃蛇,设计及实现要点,贪吃蛇程序的总体结构,综合程序练习题贪吃蛇,主要数据结构提示(一),char GameBoard ROWCOL;/* 游戏板所有单元的坐标 */,enum UnitStateFREE, BOARDER, SNAKE, FOOD, BONUS;,enum DirectionLEFT, RIGHT, UP, DOWN;,游戏场景用一个二维数组表示,2)游戏场景内各单元的状态用枚举类型来表示,3)移动方向利用枚举类型来表示,综合程序练习题贪吃蛇,主要数据结构提示(二),struct Food int x; int y; int die;/*食物是否已经被吃*/ int isBonus; /*是否为奖励食物*/ ;,struct SnakeNode int x; int y; struct SnakeNode *pre; struct SnakeNode *next; ;,4)利用结构体来表示蛇身体的一节,最后用循环链表来表示整条蛇,5)食物(包括奖励食物)用结构体来表示,综合程序练习题贪吃蛇,主要算法提示,碰撞检测模块: 蛇移动模块:在程序中定义循环链表来表示蛇,并记录蛇头指针以及蛇尾指针、当前移动方向。若有方向按键信息: a1. 按键方向跟当前方向相同或是相反,则不做处理; a2. 否则将当前方向设置为新的方向;按当前方向得到蛇头的下一位置;对该位置进行碰撞检测,判断该位置是什么状态c1. 若是蛇身和墙壁,跳到步骤e; c2. 若是空白,则将蛇尾设为蛇头,将倒数第二节设为蛇尾,更新蛇头的位置为当前的新位置。界面上就把当前最新位置用蛇的颜色画上,并把原蛇尾用背景色擦除。 c3. 若是食物,则新增加当前位置做为蛇头,蛇尾不变。利用记分模块更新分数。并再重新随机产生食物。 返回a做循环;游戏结束,综合程序练习题五子棋,1:问题描述 五子棋基本规则:棋盘上形成横向、竖向、斜向的连续的相同颜色的五个棋子称为 “五连” 。黑白双方先在棋盘上形成五连的一方为胜。若对局双方均认为不可能形成五连或是剩余棋盘空间已不足以形成五连则为和棋。下棋过程中不考虑各种禁手规则。 2:基本功能 提供图形界面、键盘操作、人人对战、支持某方先下、棋盘15*15,显示网格线,黑白棋子、当前光标所在;显示当前执棋方 3:高级功能 支持人机对战,显示人机对子情况和胜负判别 悔棋功能 音效功能,综合程序练习题五子棋,难点分析,1)胜负判别 2)悔棋功能 3)人机对战的人工智能部分 五子棋的人机对战是一个典型的博弈问题。博弈问题一般可用极大-极小法和-法求解(读者可找相关资料,一般人工智能或博弈论教材中会涉及这些内容)。而即便是用-法,五子棋的搜索空间还是相当庞大。,综合程序练习题五子棋,设计及实现要点,五子棋程序的总体结构,综合程序练习题五子棋,主要数据结构提示(一),1)棋盘用15*15的二维数组表示,数组的每一个元素对应棋盘上的一个交叉点,用0表示空位、1代表玩家1的子、2代表玩家2的子:,char ChessBoard1515;,综合程序练习题五子棋,主要数据结构提示(二),2)用于搜索过程的结构体:,typedef struct five_chess* point; struct five_chess int x; int y; int layer; int value; int score; int chessLENGTHLENGTH; int recordLENGTHLENGTH; ;,其中,x,y表示在某个位置上扩展出来的新节点,layer是表示第几层扩展,用于控制扩展深度。value表示该点上极大极小值,score表示叶子节点的得分,用于推算父辈节点的value,chess这个二维数组表示扩展出来的棋盘信息,record记录在x、y点上扩展过的节点,如果没有扩展record中对应某个值为0。如果record中没有可以扩展的节点,那么该层扩展结束,返回一个特定值。,综合程序练习题五子棋,主要算法提示(一),对棋盘的评分算法。评估一个棋盘的分数,主要通过扫描 整个棋盘,对每个点评分。对某个点上评分从四个方向( 角度分别为0、45、90、135的四个方向)分别统计,进而 累积该点总分,最后得到整个棋盘的分数。实际上对当前 的局面按照下面规则的顺序进行比较,如果满足某一条规 则的话,就给该局面打分并保存,然后退出规则的匹配。 注意这里的规则是根据一般的下棋规律的一个总结,在实 际运行的时候,可以添加规则和对评分机制加以修正。,综合程序练习题五子棋,主要算法提示(二),人工智能部分的搜索算法流程如下(以扩展两层为例): 根据棋盘信息chessman1515建立根结点s0(数据结构:five_chesman),并把s0压入堆栈中 扩展s1=top();判断s1-layer是否等于1 s1-layer等于1,push(s1),扩展s2=top(),查看s2-layer是否1 s2-layer!=-1,计算此时棋盘得分score,并判断是否要更改上一层的极小值 s2-layer=-1,pop():判断是否更改极大值,max_chess指向得分最高的棋盘 如果s1-layer=-1,表示搜索结束,返回最大棋盘信息max_chess,综合程序练习题搬运工,1:问题描述 在一个四周有围墙的仓库的中,堆放着若干箱子、阻挡箱子前进的障碍物,以及标识出了箱子需要被推到的目标位置。游戏者通过观查分析,找到合适的策略,然后只能用推的方法把所有散落在场地中的箱子借助于空闲区间推到目标位置,即获得胜利;否则失败 2:基本功能 场地元素定义与设计 、箱子的搬运动作 、提供一定数量的按键功能实现游戏者对搬运工的多种操作 3:高级功能 提供多套场地 提供视听效果 智能识别游戏的终止 自动完成移动,综合程序练习题搬运工,难点分析,墙壁,箱子,x,y,死角判定: 这里举一个例子,如下图所示:,死角判定,综合程序练习题搬运工,设计及实现要点,搬运工程序的总体结构,综合程序练习题搬运工,主要数据结构提示,系统的组成元素主要包含外围墙壁、内部障碍物、箱子、搬运工。我们先建立一个虚拟的元素(不妨称之为容器),它用来将整个图形界面网格化,并记录各种图形元素的位置等属性。然后,再为各个图形元素建立相应的保存其特有信息的数据结构。 先定义两个基本结构,在后面也会用到:,typedef struct tagRect /*矩形*/ Point leftTop, rightButton;/*矩形左上定点和右下定点*/ Rect;,typedef struct tagPoint /*直角坐标系点*/ int x, y; Point;,综合程序练习题搬运工,主要数据结构提示,1)虚拟的容器结构体: typedef struct tagContainer Rect cRect; /*确定整个容器在屏幕上的坐标*/ int cBoardNM; /*N、M是事先设定的网格行数和列数*/ Container; 其中数组cBoard其取值代表各网格是何种图形元素:箱子、空格、障碍、目标位置,其它必要属性,可自行酌情添加。,综合程序练习题搬运工,主要数据结构提示,2)搬运工和箱子的结构体: 由于墙壁、障碍物和箱子的目标位置都是固定不变的,它们的图形可以在初始化时一次性完成,而其位置则可保存在上面的Container中,下面是搬运工和箱子的结构体: typedef struct tagObject char *oImage; /*指向图像缓冲区的指针*/ size_t oImageSize;/*stddef.h中size_t 定义为unsigned, 这里表示图像大小*/ Point oLocation; /*记录对象在网格中的坐标*/ Object;,综合程序练习题搬运工,主要算法提示,1)搬运工游戏的图形界面中除了搬运工和箱子,都是固定元素,因此可以将整个场地网格化,对整个图形界面的管理简化为对各个网格的管理即可。 2)对于搬运工和箱子的移动效果,可以直接在一个页面上(即无需使用换页机制)操作。 3)对于智能识别和自动移动功能,只要根据网格的状态属性(即当前各网格是何种物体)加以处理即可。,综合程序练习题大富翁,1:问题描述 本游戏基于双人游戏模式的简单版本。游戏在一个由城市、道路、及其他特殊建筑组成的地图上进行,游戏双方通过掷骰子获得的前进或后退步数不断地前进或后退,当落在可以购买空地的位置时,如果现金足够则可选择购买之;当落在自己已买下地产的位置时,如现金足够则可选择建设之;当落在对手地产的位置上时,则要支付相应的罚金;落在地图中某些特殊位置还会有特殊的惩罚或奖励。最后当一方现金为零时游戏结束,现金为零的一方失败,另一方获,现金为零的一方失败,另一方获胜。 2:基本功能 游戏的环境地图构建 、游戏状态显示 、游戏阶段的输入只包含掷骰子及确定相关选项 3:高级功能 提供更多的特殊地区,如旅馆、监狱、股票交易中心、银行,并为之设计相应的活动规则。 在特殊位置提供更多的活动内容,如获得几轮之内不用交罚款、可以夺取他人地产等特权。 提供游戏进度保存功能,综合程序练习题大富翁,难点分析,本游戏的难点主要集中在图形处理和数据处理的简化 设计上。数据处理设计将在数据结构中提示,下面先提 供一个简化图形处理的方案。 由于实际活动的图形元素只有游戏者代表人物,其移 动只取决于当前位置和下一个位置。所以,实际编程时 只需要把游戏中各个位置的坐标从初始位置开始,按实 际到达顺序用一线性表来管理。每走一步就将线性表的 指针后移一位,就可取得下一个城市的位置。当指针越 过最后一位时,重新指到初始位置,进入下一轮循环。,综合程序练习题大富翁,设计及实现要点,大富翁程序的总体结构,综合程序练习题大富翁,主要数据结构提示(一),typedef struct tagCity Point cCenter; /*记录人物进入城市时,其图像左上角对应在当前图 形模式坐标系中的坐标*/ int cSpecialEvent;/*该城市的特殊地区、特殊位置;为了处理方便, 可自行定义一组描述这些地区和位置的宏定义*/ City;,1)城市和特殊地区的结构体:,前面提及的那个线性表就可以由City作为元素构成,这样只要在初始化时画出整个地图,然后将每个城市的City结构按“难点分析”中所说方法保存下来即可。,综合程序练习题大富翁,主要数据结构提示(二),2)人物的结构体:,typedef struct tagPeople char *pImage; /*指向人物图像缓冲区的指针*/ char *pBackgroundImage; /*指向被人物图像覆盖的图像缓 冲区的指针*/ size_t pImageSize; /*图像大小*/ Point pCoordinate; /*人物图像左上角坐标*/ int pCash; /*记录该人物的剩余现金*/ int pStatus; /*标示该人物的状态,即是处于可移动还是在医院状态中,当pStatus为0时可移动,正值表示住院,负值表示原地停留;绝对值为还需停留的天数*/ People;,状态栏和消息栏的管理比较简单,只需要随游戏进行更新相关信息就可以了。,综合程序练习题大富翁,主要算法提示,通过位图在屏幕上显示出一个基本的环境地图、游戏双 方的人物形象、状态栏和消息栏。注意:由于画面比较 复杂,最好是调用位图或已转换成其它图像格式的文件 ,否则单独绘制一个地图就会有较大的工作量。同时应 记录下各图形元素的位置,以供数据处理模块使用。开 始后轮流为每位游戏者提供一个前进的步数,游戏者到 达一个地方后,系统根据游戏规则,做出相应的判定并 调整其持有的现金数量。,综合程序练习题赛车,1:问题描述 这里所讲的赛车是基于平面第三视角的,即在一个平面的跑道上,由游戏者操控一辆赛车,与电脑控制的多台赛车比赛。游戏者能对赛车的操作有:向左、向右、加速、减速、停车。比赛中如果游戏者的赛车与别的赛车相撞,则其速度均减为最小,游戏者必须重新开始加速。游戏者如果第一个到达终点,则获胜,否则失败。本游戏的动画处理较为复杂,要求能够显示出各赛车前进的动态效果,以及一定的视听功能。 2:基本功能 游戏环境、键盘控制赛车、视听效果、游戏控制、动画效果显示 3:高级功能 高级视听效果 提供两人对阵游戏模式 提供不同的游戏关卡,不同关卡的赛车数目和速度都可选择。,综合程序练习题赛车,难点分析,动画效果显示 刷新赛车位置时,先画出游戏者赛车,然后计算出其他赛车相对游戏者赛车的位置,如果在屏幕范围内则画出,否则不画。注意,相对位置只应计算在屏幕上的垂直高度,水平位置应保留在各赛车的结构体中。 为了方便作图,跑道最好使用同一种颜色,将赛车图像四周用这种颜色围上一圈,如宽度为两个像素点,这样每次移动两个像素点距离后的显示刷新只需直接对赛车图像进行一次putimage函数操作即可。用这方法可以避免图像闪烁现象。当然,更复杂的避免闪烁的方法是使用页交替法。不过使用页交替法时仍应尽量减少作图以使画面显示流畅。,综合程序练习题赛车,设计及实现要点,赛车程序的总体结构,综合程序练习题赛车,主要数据结构提示(一),typedef struct tagContainer /*赛车场的容器,描述固定元素的位置*/ Rect cRacingGround; /*赛车区域矩形*/ Rect cAutodrome; /*赛车跑道矩形区*/ Rect cColorStrip; /*跑道两旁的色道矩形区*/ Container;,1)赛车场的容器结构体:描述固定元素的位置,typedef struct tagColorStripe unsigned csColorN;/*N是事先设定的色道条数,该表记录各色道颜色*/ int csStripeOff; /*显示的最上面一条色道在csColor中的下标*/ ColorStripe;,2)色道结构体:,综合程序练习题赛车,主要数据结构提示(二),typedef struct tagRacingCar char *rcImage; /*指向赛车图像*/ size_t rcImageSize; /*赛车图像大小*/ unsigned rcSpeed; /*赛车速度*/ unsigned rcDisplacement; /*相对原点位移*/ unsigned rcVertical; /*水平位置*/ Point rcAbosoluteCoordiante;/*相对出发点的绝对距离即竖直位置*/ int rcFlag; /*标识赛车身份*/ RacingCar;,3)赛车结构体:,注意,rcAbosoluteCoordinate最好只是游戏赛车使用,其它赛车的位置根据前面 提到的方法来计算出其各自位置,这样可以简化数据处理过程。,综合程序练习题赛车,主要算法提示,为了数据处理的方便,采用直道作为赛车道,并以初始点作为原点。为了表现出赛车前进的效果,可以在车道两旁加上横向的颜色不同、相间排列的色道,然后将色道作周期性循环下移显示就可以实现动画效果。游戏中,始终保持游戏者赛车在屏幕上的垂直位置不变,这样,就可以将游戏者的赛车作为其他物体的参照,方便各辆赛车座标位置的换算。车道两旁的色道后移速度即为游戏者赛车的前进速度。其它赛车始终保持同一速度,并保存其各自的相对原点的距离,根据游戏者赛车相对原点距离就可算出其他赛车在当前屏幕中的位置。,综合程序练习题坦克大战,1:问题描述 游戏者操控一到两台坦克,抵抗电脑控制的多台坦克,保卫金鹰(特指一个游戏者需要保护的物体);双方通过火炮攻击对方,坦克被炮弹击中即被摧毁;对战双方如果还有在屏幕上活动的可用坦克,则在有坦克被摧毁后才能补充上来。游戏者坦克被全部摧毁或金鹰被摧毁则电脑方获胜,若电脑坦克被全部摧毁则游戏者获胜。 2:基本功能 游戏场景 、游戏者控制的和电脑控制的坦克的运动状况 、游戏状态判别胜负 、提供足够的按键实现游戏者对坦克的控制 3:高级功能 视听效果 鼠标控制 电脑坦克智能化,综合程序练习题坦克大战,难点分析,本游戏难点主要集中在对坦克自动化控制的算法上。对 于向固定目标前进的算法,可以先对N*M的网格做一次 宽度优先搜索(BFS),算法中注意判重,避免消耗过多 的搜索时间,这样可以在较短的时间内找出一条最短路 径。 由于游戏者坦克运动不确定性太高,为电脑

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论