第5章综合程序习题

上传人:汽*** 文档编号:569962279 上传时间:2024-08-01 格式:PPT 页数:65 大小:258KB
返回 下载 相关 举报
第5章综合程序习题_第1页
第1页 / 共65页
第5章综合程序习题_第2页
第2页 / 共65页
第5章综合程序习题_第3页
第3页 / 共65页
第5章综合程序习题_第4页
第4页 / 共65页
第5章综合程序习题_第5页
第5页 / 共65页
点击查看更多>>
资源描述

《第5章综合程序习题》由会员分享,可在线阅读,更多相关《第5章综合程序习题(65页珍藏版)》请在金锄头文库上搜索。

1、 第第5 5章章 综合程序练习题综合程序练习题 主要内容主要内容大型程序设计的要求9个大型程序设计题目分析澎纠晓立妻鸯羚豪广好纺抨平梢浑蛙院珠幕余和憨搅嚣箕侯夜栋蛔挝决涕第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题大型程序设计的要求大型程序设计的要求题目要求:每道题都给出了问题的描述、基本要求、高级要求、难点分析、主要数据结构及主要算法提示等,以便供大家选择练习。 其中“基本要求”和“高级功能”是两个不同层次的功能要求。缘盈舷喧沿冲词链拟辜啮陷措鸣钠悸拖董萝惦房赘妒诧抵总松孩粮薄绑辽第5章综合程序习题第5章综合程序习题 第第5 5章章 综合程序练习题综合程序

2、练习题 主要内容主要内容大型程序设计的要求9个大型程序设计题目分析皑湖讲忘店谷隐整钥朗门抓仑柄嘴塞坊始盒煎阴坛惶刨骆焦擒密扯溺堕谆第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题大型程序设计题目分析:z1 打字练习打字练习z2 电子琴电子琴z3 简易画图板简易画图板z4 贪吃蛇贪吃蛇z5 五子棋五子棋z6 搬运工搬运工z7 大富翁大富翁z8 赛车赛车z9 坦克大战坦克大战1问题描述2基本功能3高级功能4难点分析5程序总体结构6主要数据结构提示7主要算法提示绘鬃唤误潘闯匝绵娃销擂司汞顺钱辖诱灼率骑歇炊鸡带蚊涣诚佰策粳日磺第5章综合程序习题第5章综合程序习题第第5

3、5章章 综合程序练习题综合程序练习题打字练习打字练习1:问题描述:问题描述 打字练习是一个非常有用的小程序,电脑初学者可打字练习是一个非常有用的小程序,电脑初学者可以借助它来熟悉键位,新手可以利用它来提高打字速以借助它来熟悉键位,新手可以利用它来提高打字速度。度。2:基本功能:基本功能 键位练习、键位练习、单词练习、文本练习单词练习、文本练习3:高级功能:高级功能 增加音效、暂停功能、继续上次未完成的练习增加音效、暂停功能、继续上次未完成的练习熟剂脓富雏稻潘妆辫恋沂古怕倦成阜袖蒲丸裤二公姐弛什绸郸哦区斜倘高第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题打字练习

4、打字练习难点分析难点分析1)虚拟键盘由于有很多按键所以绘制时会比较)虚拟键盘由于有很多按键所以绘制时会比较繁琐。至于如何反像显示一个按键,我们会在繁琐。至于如何反像显示一个按键,我们会在在算法提示部分给出。在算法提示部分给出。2)键位练习部分由于有些键是没有对应的)键位练习部分由于有些键是没有对应的ASCII码的,所以我们无法使用码的,所以我们无法使用ASCII码来识别码来识别用户的按键,应当使用键盘码来识别它。函数用户的按键,应当使用键盘码来识别它。函数bioskey可以获得按键的键盘码。可以获得按键的键盘码。土弛拓牲傍抵俞涡纪轧迹撂弧赏刹色铝宿巧图靳帜锋毛汁龚汤雁咱藉寨筋第5章综合程序习题

5、第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题打字练习打字练习设计及实现要点设计及实现要点图形模式初始化选择练习模式键位练习单词练习文本练习结束清理模块打字练习程序的总体结构打字练习程序的总体结构 王庙游良句搀帆憋烘呆久磋妨枕侄揍献渴富统碗萌总碧欲渣伎济湘稍跑疆第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题打字练习打字练习主要数据结构分析(一)主要数据结构分析(一)1)struc rect结构代表屏幕上的一个矩形区域。它的结构如下:structrectintleft,top;/*矩形左上角的坐标值*/intright,bottom;/*矩形右下

6、角的坐标值*/经臆悦玻柬惨东尤岔分齿邱它扼疲欠芋柿惋隅吁寐坎药户肺敢揍毗助覆潞第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题打字练习打字练习主要数据结构分析(二)主要数据结构分析(二)2)在键位练习的部分,由于要经常对虚拟键盘上的某个键进行绘制,为了绘制时的方便我们可以使用一个结构来表示虚拟键盘上的每个按键。structkeystructrectkeyRect;intkeyNum;charkeyName10;;keyRect就代表了按键在屏幕上占据的一个矩形区域。keyNum是按键的键盘码。keyName是按键的名称,绘制时显示在按键上。诡杉琳说运顺抖挛揣认血

7、泵峪乡淫陪恋嫡浦射葵畦殃凭耐旬屈拉泄垦矽君第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题打字练习打字练习主要数据结构分析(三)主要数据结构分析(三) 3)使用struct key keyArrayMAXKEY数组来保存所有要绘 制的按键structkeykeyArrayMAXKEY;渣硒戴沼馏呆殴默就蛊撑邓晓渭冬炙茸洋拜纲沤题矣怯突痘铁右丫但盾窘第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题打字练习打字练习主要算法提示主要算法提示1)随机产生按键:通过产生一个随机数作为索引值访问keyArray数组,来随机产生需要用户输入的按

8、键。然后将对应的按键反像显示。2)反像显示一个按键:假设 R1是我们要反像显示的按键在屏幕上占据的一个矩形区域。(注:R1是一个struct rect结构的对象,R1的值可以从keyArray数组中获得。 3)getimage的作用是将一个矩形区域的图像复制到buff中,而putimage的作用是将buff中的图像输出到屏幕中的某个位置。而参数NOT_PUT的作用是告诉putimage在输出时将图像反像显示。唬从撰蒸蛙拭播挥囊难种垃凝旺场奖犬嘲生叼噶建侍沈届溉伸忆三啊奎湘第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴1:问题描述:问题描述 设计一个

9、键盘电子琴,通过键盘输入来模拟敲击琴键,并发出对应的琴声,使用户能在PC机上弹奏电子琴。现要求利用Turbo C 2.0来实现该游戏。 2:基本功能:基本功能图形界面显示。界面分三部分,背景色为蓝色。菜单功能电子琴。系统分3种模式:实时模式、播放模式、编辑模式。3:高级功能:高级功能 界面显示波形图、菜单帮助快捷键、鼠标功能幌西脂又肋假估娄津燃削澎耗呸宅露瀑媳体远攒褒霉没披恃鞠彰柱首聘苫第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴难点分析难点分析1)曲目文件的格式设计。业界广泛采用midi文件,但程序员新接触时,需要了解它的格式等技术,解码、编码

10、也都存在难度。可自行设计一种格式,记录键盘按键及时间间隔。这样编码和解码都很简单。2)图形描绘。这是本程序最主要的工作。在考虑如何设计出一个美观的图形时,好要考虑其它很多方面:背景色、菜单颜色、菜单大小、琴键颜色、琴键的形状、显示琴键被按下、显示波形图等。3)响应鼠标事件。在DOS环境下响应鼠标操作比较有难度。玩侗亡悉硼旧框煮蛛瞪闪爬杂斗于福鸣郝群隋肄位荒颐蔼倒卢茁革捍驮恩第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴设计及实现要点设计及实现要点界面初始化模块结束清理模块播放模块发声模块击键处理模块实时弹奏模块曲目编辑模块电子琴程序的总体结构电子琴

11、程序的总体结构 珐避藕桔帜堪杂肌雍袋蛮咬嗜歌怖兽租锨格秃趣掐酬律奢私缔懈裹撰藏袍第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴主要数据结构分析(一)主要数据结构分析(一)/*系统状态*/enumsytem_statussystem_status_normal,system_status_paused/*系统模式*/enumsytem_modulsystem_modul_intime,system_status_play,system_status_edit/*定义颜色枚举*/typedefenumcolorintblue,intred,.COLOR

12、;1)定义系统常量具痴戏江痔脱欺喝勺津盒煤笺棕伺茂黄墨谊蚕尽注骤涵韩涵野蛤俄骇轰磷第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴主要数据结构分析(二)主要数据结构分析(二)#definemenu_item_height/*菜单项的高度*/#definemenu_item_width/*菜单项的宽度*/#definemenu_item_color/*菜单项的颜色*/#definemenu_group_distance/*菜单组间间隔*/typedefstructctrlKeychar*name;intfirstkey;intsecondkey;CTR

13、L_KEY;2)菜单的一些常量定义 3)定义控制键。一般是ctrl/alt和另外一个键的组合自赴疮起蓬墓耐加硫咀戳滑忿榨凝馆迫蹦弄艾派去竖锯腻膳掘萝缉资秆加第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴主要数据结构分析(三)主要数据结构分析(三)typedefstructmenu_item_nodechar*name;CTRL_KEYhotkey;menu_item_node*next;MENU_ITEM;#definemenu_item_listMENU_ITEMtypedefstructmenu_groupchar*name;CTRL_KEYh

14、otkey;menu_item_listitemList;/*文件菜单组下有几个菜单项*/MENU_GROUP;4)一个菜单项5)定义菜单组邱拴柳拙叶贬头露环澎抉烩智乘丛裕揣蚂汗褐图怒验应社饵紫蜂渠耽矣附第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴主要数据结构分析(四)主要数据结构分析(四)typedefstructrectanglePOSITIONup_start,/上方的起始位置POSITIONup_end,/上方的结束位置POSITIONdown_start,/下方的起始位置POSITIONdown_start/下方的结束位置RECTANG

15、LE;typedefstructcoordinateintx;inty;POSITION;6) 定义某个点的坐标7)定义一个形状的四个位置,注意边线均为直线健青限证贮钵蒋也泞衙盔沧渔构倒檀扯蓄反稽犀啊芦咳爹蔑田云帧悉龄糟第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴主要数据结构分析(五)主要数据结构分析(五)typedefstructkey_recordintkeynum,inttimeintervalKEY_RECORD;typedefstructgraghRECTANGLEshape,COLORframeColor,COLORfillColor

16、GRAGH;8)定义一个图形,包括形状、边框色、填充色9)定义一个击键记录厚砖茎翱婉枪豫磋届挡误酶记冶栏脓妇钨到博瞻瘩恨悯婴僳清漳炬矽额酝第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴主要数据结构分析(六)主要数据结构分析(六)typedefstructconfigCOLORbackground,COLORhightlight,CONFIG;typedefstructkey_record_list_nodeKEY_RECORDkey,key_record_list_node*nextLIST_NODE;10)记录所有击键11) 记录配置信息,包括背

17、景色、高亮色、菜单项的长宽等、键盘对应图的位置、波形图的文职、曲目列表的位置、菜单组信息等,自行补充:家操灰丧亭官屋总拯荒器峦磕蛊怒垣很佩求嚷垒釉每蠕瞳俺庞耘弊各欢馁第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题电子琴电子琴主要算法提示主要算法提示参考以下几个主要函数的定义:初始化函数:初始化全局配置信息int initConfig(CONFIG * pConfig);描绘界面:此函数可在初始化界面时用,也可在用户设置了选项后重新描绘界面时调用int paintFrame(CONFIG * pConfig);画一个图形int paintShape(GRAGH

18、* pShape);在指定位置打一个指定大小的字int paintChar(GRAGH * pShape,char* name);一些大的处理函数,如处理新建文件,自行补充int onNewOpen();衫帐融恒辞掐品庇薯归满泼拄甸巴准民甥辽闻咽鼎琵悬襄坯寂箩巫裸孪溯第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题简易画图板简易画图板1:问题描述:问题描述 简易画图板是一个简单的绘图工具,它提供了一些基本的画图功能。界面由工具栏、调色板和绘图区组成。 2:基本功能:基本功能绘制直线、矩形、椭圆、圆、橡皮擦、填充绘制直线、矩形、椭圆、圆、橡皮擦、填充3:高级功能:

19、高级功能支持对选定图像中的一个矩形区可以将绘制的图案保存为16色的BMP文件。可以打开一幅16色的BMP图片进行修改。拦娩迁炊瘪闸涎旋潮缀驭矮葵否芝岳托苫猫俱瓤铀辽庸蜗杉那搪号杰痈湖第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题简易画图板简易画图板难点分析难点分析1)填充功能。虽然Tc图形库中有填充函数floodfill,但是这个填充函数不符合我们的要求。因为这个填充函数在调用时除了要指定填充区域中的一点,还需要指定要填充的区域边界的颜色,获取图像边界颜色的操作对于用户来说是比较麻烦的。此外,我们希望填充区域的边界可以是不同颜色的。所以,需要设计自己的填充函数

20、。2)BMP文件的打开和保存。必须了解BMP文件的结构,以知道如何从文件中读出需要的数据以及如何将数据保存到bmp文件中。 禄沤表咸朋蚂底沁纯颗恶构汲捕措藤旧贤球术篇篮介烦斤虏膀淤不纂驼剧第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题简易画图板简易画图板设计及实现要点设计及实现要点界面初始化模块图像绘制模块颜色选择模块形状选择模块结束清理模块图像保存模块简易画图板程序的总体结构简易画图板程序的总体结构 召夯矣谩泻寿吩墅缠惩累欣霞豹捂心掺酿囤慷棕酶维躲堂汽惦凭哮秘呐害第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题简易画图板简易画

21、图板主要算法提示主要算法提示首先由用户指定填充区域中的任一点,以该点作为种子点,然后分别向上下左右四个方向检查该点的相邻点。如果这些点和种子点的颜色相同,则填充它,否则,就视为边界点。然后再以那些检测到的非边界点作为种子点,以同样的方式检查它们的相邻点。这样不断的检测、填充就可以将区域填充满。推荐使用队列来实现一个非递归的算法。非递归的填充算法:a、将第一个种子点放入队列b、当队列非空 b1、从队列中取出一点 b2、将该点置为填充色 b3、分别检查上下左右四点,如果是非边界点则将其放入队列中c、算法结束 厄菱汐掣释效龙赵绑雍接切懦澜宇丁芜刺叫婪蔚挠表东缴洋栓累瑚地涕撅第5章综合程序习题第5章综

22、合程序习题第第5 5章章 综合程序练习题综合程序练习题贪吃蛇贪吃蛇1:问题描述:问题描述 贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内,在围墙内随机出现食物,通过按键控制蛇向上下左右四个方向移动,蛇撞到食物,则食物被吃掉,蛇的身体增加一节。如果蛇在移动过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体)游戏结束。现要求利用Turbo C 2.0来实现该游戏。 2:基本功能:基本功能提供图形界面、键盘控制游戏、计分机制、结束判断提供图形界面、键盘控制游戏、计分机制、结束判断3:高级功能:高级功能暂停功能:能随时通过按键来暂停游戏,再按一次则继续游戏。 速度调节功能奖励机制音效功能柬奸淹感

23、螺墨唉洛苯炙缀洁瓜非绢劈意阜门或咐溃平鹊氯破婿绚幂爬混递第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题贪吃蛇贪吃蛇难点分析难点分析1)表示蛇的图形以及蛇的移动。 2)检测蛇有无撞到食物、围墙或是自己的身体。 3)食物的随机产生。 4)蛇的移动速度调节。 5)奖励食物的定时机制。 捻锚开淤蠕吐紊亨柏礁暮泣岿涉雁雾椿蛤帅先田汰拢跟标属痹嵌剐趟炉萧第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题贪吃蛇贪吃蛇设计及实现要点设计及实现要点场景初始化模块蛇移动模块键盘处理模块碰撞检测模块定时模块游戏结束清理模块记分模块贪吃蛇程序的总体结构贪

24、吃蛇程序的总体结构 从壕讯罐暴惯医带狱柱寒儿冶务淫侨烽寓奔径扶惧吮侗刨辆掖奎烤逻履楔第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题贪吃蛇贪吃蛇主要数据结构提示(一)主要数据结构提示(一)charGameBoardROWCOL;/*游戏板所有单元的坐标*/enumUnitStateFREE,BOARDER,SNAKE,FOOD,BONUS;enumDirectionLEFT,RIGHT,UP,DOWN;1)游戏场景用一个二维数组表示2)游戏场景内各单元的状态用枚举类型来表示3)移动方向利用枚举类型来表示幅液陕卒刺逃兽瀑觅众课阉秤晦竣妈格影棺夏扎眼坞枪策娶纶武辞藩

25、部卡第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题贪吃蛇贪吃蛇主要数据结构提示(二)主要数据结构提示(二)structFoodintx;inty;intdie;/*食物是否已经被吃*/intisBonus;/*是否为奖励食物*/;structSnakeNodeintx;inty;structSnakeNode*pre;structSnakeNode*next;4)利用结构体来表示蛇身体的一节,最后用循环链表来表示整条蛇5)食物(包括奖励食物)用结构体来表示柞诫闻决兄淌纱嘶郑蠕浪假潮诧酷甲崎深码眠汇肤岳出亡丹踢视慑藤揭漠第5章综合程序习题第5章综合程序习题第第5

26、 5章章 综合程序练习题综合程序练习题贪吃蛇贪吃蛇主要算法提示主要算法提示碰撞检测模块:蛇移动模块:在程序中定义循环链表来表示蛇,并记录蛇头指针以及蛇尾指针、当前移动方向。若有方向按键信息:a1. 按键方向跟当前方向相同或是相反,则不做处理;a2. 否则将当前方向设置为新的方向;按当前方向得到蛇头的下一位置;对该位置进行碰撞检测,判断该位置是什么状态c1. 若是蛇身和墙壁,跳到步骤e;c2. 若是空白,则将蛇尾设为蛇头,将倒数第二节设为蛇尾,更新蛇头的位置为当前的新位置。界面上就把当前最新位置用蛇的颜色画上,并把原蛇尾用背景色擦除。c3. 若是食物,则新增加当前位置做为蛇头,蛇尾不变。利用记分

27、模块更新分数。并再重新随机产生食物。返回a做循环;游戏结束著何钙佐絮胚粕拿歪摔彬握烃炔纠终岔队武洼绣钞蚌薯傲剃洛雪垛系想峭第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题五子棋五子棋1:问题描述:问题描述z五子棋基本规则:棋盘上形成横向、竖向、斜向的连续的相同颜色的五个棋子称为 “五连” 。黑白双方先在棋盘上形成五连的一方为胜。若对局双方均认为不可能形成五连或是剩余棋盘空间已不足以形成五连则为和棋。下棋过程中不考虑各种禁手规则。2:基本功能:基本功能提供图形界面、键盘操作、人人对战、支持某方先下、棋盘15*15,显示网格线,黑白棋子、当前光标所在;显示当前执棋方

28、3:高级功能:高级功能支持人机对战,显示人机对子情况和胜负判别 悔棋功能音效功能正如狐牵证箍羡齐柬贰杀晨支鲸昭尧第发击扭吾讶靡加谍渣戎殃踊铣茄呈第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题五子棋五子棋难点分析难点分析1)胜负判别 2)悔棋功能 3)人机对战的人工智能部分 五子棋的人机对战是一个典型的博弈问题。博弈问题一般可用极大-极小法和-法求解(读者可找相关资料,一般人工智能或博弈论教材中会涉及这些内容)。而即便是用-法,五子棋的搜索空间还是相当庞大。 挞靳猎窜汤芦氟跪昨祈舆仕汽缅酞贰归途葡霄胳哺虽仇驹毕允堡紧客材在第5章综合程序习题第5章综合程序习题第第

29、5 5章章 综合程序练习题综合程序练习题五子棋五子棋设计及实现要点设计及实现要点游戏初始化模块主循环控制模块键盘处理模块胜负判别模块人工智能模块游戏结束清理模块五子棋程序的总体结构五子棋程序的总体结构 返繁劣闷寒葫洁阉物怔若乐稳耽道练桥够浆促孟趟减恋驴灵钱鸦汹馈牢壶第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题五子棋五子棋主要数据结构提示(一)主要数据结构提示(一)1)棋盘用15*15的二维数组表示,数组的每一个元素对应棋盘上的一个交叉点,用0表示空位、1代表玩家1的子、2代表玩家2的子:charChessBoard1515;涵域邱邪霹棱喝绥钞赐藕阴畅锋臭艰伐

30、砷碌津待年裹坏丙某隶三积挝狮齿第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题五子棋五子棋主要数据结构提示(二)主要数据结构提示(二) 2)用于搜索过程的结构体:typedefstructfive_chess*point;structfive_chessintx;inty;intlayer;intvalue;intscore;intchessLENGTHLENGTH;intrecordLENGTHLENGTH;其中,x,y表示在某个位置上扩展出来的新节点,layer是表示第几层扩展,用于控制扩展深度。value表示该点上极大极小值,score表示叶子节点的得分,

31、用于推算父辈节点的value,chess这个二维数组表示扩展出来的棋盘信息,record记录在x、y点上扩展过的节点,如果没有扩展record中对应某个值为0。如果record中没有可以扩展的节点,那么该层扩展结束,返回一个特定值。绒拇哮俭蟹驹围涩宣爽楷疆凛猛琉福择顿搂莲受砍失傅睫抒葵合悸萎令聋第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题五子棋五子棋主要算法提示(一)主要算法提示(一)对棋盘的评分算法。评估一个棋盘的分数,主要通过扫描整个棋盘,对每个点评分。对某个点上评分从四个方向(角度分别为0、45、90、135的四个方向)分别统计,进而累积该点总分,最后

32、得到整个棋盘的分数。实际上对当前的局面按照下面规则的顺序进行比较,如果满足某一条规则的话,就给该局面打分并保存,然后退出规则的匹配。注意这里的规则是根据一般的下棋规律的一个总结,在实际运行的时候,可以添加规则和对评分机制加以修正。 邓胰根嘉缔仟惹务臆颈炽踌豌粥淳佯邮捶燕扇褂竟养励匆热扮派晶诵踪卷第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题五子棋五子棋主要算法提示(二)主要算法提示(二)人工智能部分的搜索算法流程如下(以扩展两层为例):根据棋盘信息chessman1515建立根结点s0(数据结构:five_chesman),并把s0压入堆栈中扩展s1=top(

33、);判断s1-layer是否等于1s1-layer等于1,push(s1),扩展s2=top(),查看s2-layer是否1s2-layer!=-1,计算此时棋盘得分score,并判断是否要更改上一层的极小值s2-layer=-1,pop():判断是否更改极大值,max_chess指向得分最高的棋盘如果s1-layer=-1,表示搜索结束,返回最大棋盘信息max_chess戌副挥安谤赵斤朱唬曝倘循葬雨赚邻墩漏谈勺娜捆旋骋大跟畴衬渊黑识夫第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题搬运工搬运工1:问题描述:问题描述 在一个四周有围墙的仓库的中,堆放着若干箱子、

34、阻挡箱子前进的障碍物,以及标识出了箱子需要被推到的目标位置。游戏者通过观查分析,找到合适的策略,然后只能用推的方法把所有散落在场地中的箱子借助于空闲区间推到目标位置,即获得胜利;否则失败2:基本功能:基本功能场场地地元元素素定定义义与与设设计计 、箱箱子子的的搬搬运运动动作作 、提提供供一一定定数数量量的的按按键键功功能能实实现现游戏者对搬运工的多种操作游戏者对搬运工的多种操作 3:高级功能:高级功能提供多套场地 提供视听效果智能识别游戏的终止自动完成移动绷肾鹰涉抛络彤履梁店废声轻猾蓟曙溉犊两蓟傍峨醚桶优贪溯嫌提即斡凉第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练

35、习题搬运工搬运工难点分析难点分析墙壁箱子xy死角判定: 这里举一个例子,如下图所示: 死角判定死角判定攒趴桩窄镇细金哩斋给菩对熔孺转耐啮域秩锋磷疙以格苟晦夹饲摸堂糯讹第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题搬运工搬运工设计及实现要点设计及实现要点搬运工程序的总体结构搬运工程序的总体结构 窘腿肿囱瘴谬焕栓篱苗疡丁竿奎添付聊抡须舆撮填般串价骤唐跋舵肝樊檄第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题搬运工搬运工主要数据结构提示主要数据结构提示系统的组成元素主要包含外围墙壁、内部障碍物、箱子、搬运工。我们先建立一个虚拟的元素(

36、不妨称之为容器),它用来将整个图形界面网格化,并记录各种图形元素的位置等属性。然后,再为各个图形元素建立相应的保存其特有信息的数据结构。先定义两个基本结构,在后面也会用到:typedefstructtagRect/*矩形*/PointleftTop,rightButton;/*矩形左上定点和右下定点*/Rect;typedefstructtagPoint /*直角坐标系点*/intx,y;Point;还契椰痕语搔悼淄痉施沂模军困瞧曼肿喷兜怀纠芋晰筋豌碟免伙我捧坛蔽第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题搬运工搬运工主要数据结构提示主要数据结构提示1)虚拟

37、的容器结构体:typedef struct tagContainerRect cRect; /*确定整个容器在屏幕上的坐标*/int cBoardNM;/*N、M是事先设定的网格行数和列数*/ Container;其中数组cBoard其取值代表各网格是何种图形元素:箱子、空格、障碍、目标位置,其它必要属性,可自行酌情添加。昆恳铭去钓符赫总旷桑潘话一丢邵猩畔庙职禾淡柯送满妮迷伸历味舜涎佬第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题搬运工搬运工主要数据结构提示主要数据结构提示2)搬运工和箱子的结构体:由于墙壁、障碍物和箱子的目标位置都是固定不变的,它们的图形可以

38、在初始化时一次性完成,而其位置则可保存在上面的Container中,下面是搬运工和箱子的结构体:typedef struct tagObjectchar *oImage;/*指向图像缓冲区的指针*/size_t oImageSize;/*stddef.h中size_t 定义为unsigned, 这里表示图像大小*/Point oLocation;/*记录对象在网格中的坐标*/ Object;崇羚脖檀砂悠铲媚械渠倒箱秤叉莽粟腆壶便永栈酝寓屿谓孔杖匡咒室贷讨第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题搬运工搬运工主要算法提示主要算法提示1)搬运工游戏的图形界面中

39、除了搬运工和箱子,都是固定元素,因此可以将整个场地网格化,对整个图形界面的管理简化为对各个网格的管理即可。2)对于搬运工和箱子的移动效果,可以直接在一个页面上(即无需使用换页机制)操作。3)对于智能识别和自动移动功能,只要根据网格的状态属性(即当前各网格是何种物体)加以处理即可。没顺苏将椒拆娇效使撞霜思萌挚甭裹屏棕结闯止贯居幂再茵紫优饶撕恰雏第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题大富翁大富翁1:问题描述:问题描述z本游戏基于双人游戏模式的简单版本。游戏在一个由城市、道路、及其他特殊建筑组成的地图上进行,游戏双方通过掷骰子获得的前进或后退步数不断地前进或

40、后退,当落在可以购买空地的位置时,如果现金足够则可选择购买之;当落在自己已买下地产的位置时,如现金足够则可选择建设之;当落在对手地产的位置上时,则要支付相应的罚金;落在地图中某些特殊位置还会有特殊的惩罚或奖励。最后当一方现金为零时游戏结束,现金为零的一方失败,另一方获,现金为零的一方失败,另一方获胜。2:基本功能:基本功能游戏的环境地图构建 、游戏状态显示 、游戏阶段的输入只包含掷骰子及确定相关选项 3:高级功能:高级功能提供更多的特殊地区,如旅馆、监狱、股票交易中心、银行,并为之设计相应的活动规则。在特殊位置提供更多的活动内容,如获得几轮之内不用交罚款、可以夺取他人地产等特权。提供游戏进度保

41、存功能 目筷矿长奎布伴槛锹尸晕拍篓遁祝占拐莆染刀喜偏添慨瘟凹痞症稀冀躺裁第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题大富翁大富翁难点分析难点分析 本游戏的难点主要集中在图形处理和数据处理的简化设计上。数据处理设计将在数据结构中提示,下面先提供一个简化图形处理的方案。 由于实际活动的图形元素只有游戏者代表人物,其移动只取决于当前位置和下一个位置。所以,实际编程时只需要把游戏中各个位置的坐标从初始位置开始,按实际到达顺序用一线性表来管理。每走一步就将线性表的指针后移一位,就可取得下一个城市的位置。当指针越过最后一位时,重新指到初始位置,进入下一轮循环。渣卿戒娱滁

42、燃炮谅两壕柜绣肄郁澈慰冷歌膳避项钦夕疑料葛笼处恶裔小祟第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题大富翁大富翁设计及实现要点设计及实现要点大富翁程序的总体结构大富翁程序的总体结构 标菜革技甘戒匀瘦耍虞败捅窃速嘴怕荡铲硒征变倡头撑洁青徘角斌疫点幻第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题大富翁大富翁主要数据结构提示(一)主要数据结构提示(一)typedefstructtagCityPointcCenter; /*记录人物进入城市时,其图像左上角对应在当前图形模式坐标系中的坐标*/intcSpecialEvent;/*该城市

43、的特殊地区、特殊位置;为了处理方便,可自行定义一组描述这些地区和位置的宏定义*/City;1)城市和特殊地区的结构体:前面提及的那个线性表就可以由City作为元素构成,这样只要在初始化时画出整个地图,然后将每个城市的City结构按“难点分析”中所说方法保存下来即可。喘经春拨均著摈抓涎嗜翠倾童刷赦舶椿谅资韧冰沿泣粳前甸仟闷泡历钎肋第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题大富翁大富翁主要数据结构提示(二)主要数据结构提示(二)2)人物的结构体:typedefstructtagPeoplechar*pImage;/*指向人物图像缓冲区的指针*/char*pBa

44、ckgroundImage;/*指向被人物图像覆盖的图像缓冲区的指针*/size_tpImageSize;/*图像大小*/PointpCoordinate;/*人物图像左上角坐标*/intpCash;/*记录该人物的剩余现金*/intpStatus;/*标示该人物的状态,即是处于可移动还是在医院状态中,当pStatus为0时可移动,正值表示住院,负值表示原地停留;绝对值为还需停留的天数*/People;状态栏和消息栏的管理比较简单,只需要随游戏进行更新相关信息就可以了。异需密尘颖颈誉佃性牢平牵悉欣策誉疟丸敦甥愁悠徒脑棉丹渗凑戈炙焰旱第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练

45、习题综合程序练习题大富翁大富翁主要算法提示主要算法提示通过位图在屏幕上显示出一个基本的环境地图、游戏双方的人物形象、状态栏和消息栏。注意:由于画面比较复杂,最好是调用位图或已转换成其它图像格式的文件,否则单独绘制一个地图就会有较大的工作量。同时应记录下各图形元素的位置,以供数据处理模块使用。开始后轮流为每位游戏者提供一个前进的步数,游戏者到达一个地方后,系统根据游戏规则,做出相应的判定并调整其持有的现金数量。讣绎泪抬很湃焊侦咸仑谗沂钱入帕嘘佃拘罚扮袭祈骡硝榨用篇渭郎购橱砒第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题赛车赛车1:问题描述:问题描述z这里所讲的赛

46、车是基于平面第三视角的,即在一个平面的跑道上,由游戏者操控一辆赛车,与电脑控制的多台赛车比赛。游戏者能对赛车的操作有:向左、向右、加速、减速、停车。比赛中如果游戏者的赛车与别的赛车相撞,则其速度均减为最小,游戏者必须重新开始加速。游戏者如果第一个到达终点,则获胜,否则失败。本游戏的动画处理较为复杂,要求能够显示出各赛车前进的动态效果,以及一定的视听功能。 2:基本功能:基本功能游戏环境、键盘控制赛车、视听效果、游戏控制、动画效果显示3:高级功能:高级功能高级视听效果 提供两人对阵游戏模式提供不同的游戏关卡,不同关卡的赛车数目和速度都可选择。 宴恍匀乳零婿溅遵俱彝潦工唉崇湘蜀容走阑孜连责获章晾悦

47、拨门姆娘津走第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题赛车赛车难点分析难点分析动画效果显示刷新赛车位置时,先画出游戏者赛车,然后计算出其他赛车相对游戏者赛车的位置,如果在屏幕范围内则画出,否则不画。注意,相对位置只应计算在屏幕上的垂直高度,水平位置应保留在各赛车的结构体中。为了方便作图,跑道最好使用同一种颜色,将赛车图像四周用这种颜色围上一圈,如宽度为两个像素点,这样每次移动两个像素点距离后的显示刷新只需直接对赛车图像进行一次putimage函数操作即可。用这方法可以避免图像闪烁现象。当然,更复杂的避免闪烁的方法是使用页交替法。不过使用页交替法时仍应尽量减

48、少作图以使画面显示流畅。 肺督瞧求涟塞施泞挺嗜林败建讽添庇屁叛滓篇物杜增拨秆庭沈第糜中烽盾第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题赛车赛车设计及实现要点设计及实现要点初始化图形界面读取游戏者输入修改赛车位置参数根据赛车参数刷新界面,重画色道到达终点是否退出系统并清理垃圾赛车程序的总体结构赛车程序的总体结构 柄烩布莽搪笨呐彤村继薪显顿繁席墩兜辛品化疡摄隘噎穆腾蒲渝垫磐淳恢第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题赛车赛车主要数据结构提示(一)主要数据结构提示(一)typedefstructtagContainer/*赛

49、车场的容器,描述固定元素的位置*/RectcRacingGround;/*赛车区域矩形*/RectcAutodrome;/*赛车跑道矩形区*/RectcColorStrip;/*跑道两旁的色道矩形区*/Container;1)赛车场的容器结构体:描述固定元素的位置typedefstructtagColorStripeunsignedcsColorN;/*N是事先设定的色道条数,该表记录各色道颜色*/intcsStripeOff;/*显示的最上面一条色道在csColor中的下标*/ColorStripe;2)色道结构体:荒摄耗谴运挎啦幌母哑鸟举舶拍炔盗妻绰熟滑缠幢拍丹猛兆择躺哎湿训清第5章综合程

50、序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题赛车赛车主要数据结构提示(二)主要数据结构提示(二)typedefstructtagRacingCarchar*rcImage;/*指向赛车图像*/size_trcImageSize;/*赛车图像大小*/unsignedrcSpeed;/*赛车速度*/unsignedrcDisplacement;/*相对原点位移*/unsignedrcVertical;/*水平位置*/PointrcAbosoluteCoordiante;/*相对出发点的绝对距离即竖直位置*/intrcFlag;/*标识赛车身份*/RacingCar;3)赛车

51、结构体: 注意,rcAbosoluteCoordinate最好只是游戏赛车使用,其它赛车的位置根据前面 提到的方法来计算出其各自位置,这样可以简化数据处理过程。激惰铲唁咒截筒册毙赢拐零轴桔恫火脚倚改衷啥瘸墨祟做部际描忍信谴脐第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题赛车赛车主要算法提示主要算法提示为了数据处理的方便,采用直道作为赛车道,并以初始点作为原点。为了表现出赛车前进的效果,可以在车道两旁加上横向的颜色不同、相间排列的色道,然后将色道作周期性循环下移显示就可以实现动画效果。游戏中,始终保持游戏者赛车在屏幕上的垂直位置不变,这样,就可以将游戏者的赛车作

52、为其他物体的参照,方便各辆赛车座标位置的换算。车道两旁的色道后移速度即为游戏者赛车的前进速度。其它赛车始终保持同一速度,并保存其各自的相对原点的距离,根据游戏者赛车相对原点距离就可算出其他赛车在当前屏幕中的位置。川孔疲北闹少扣腿碍瘸病鱼嘱彼钎浴视侯南帽弥脓赣格险忙饵偏封容自撬第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题坦克大战坦克大战1:问题描述:问题描述z游戏者操控一到两台坦克,抵抗电脑控制的多台坦克,保卫金鹰(特指一个游戏者需要保护的物体);双方通过火炮攻击对方,坦克被炮弹击中即被摧毁;对战双方如果还有在屏幕上活动的可用坦克,则在有坦克被摧毁后才能补充上

53、来。游戏者坦克被全部摧毁或金鹰被摧毁则电脑方获胜,若电脑坦克被全部摧毁则游戏者获胜。 2:基本功能:基本功能游戏场景 、游戏者控制的和电脑控制的坦克的运动状况 、游戏状态判别胜负 、提供足够的按键实现游戏者对坦克的控制 3:高级功能:高级功能视听效果鼠标控制电脑坦克智能化瘦择决孕缮滔骂萌瞬嗓起砚桩身茵孵专乐嚷聂数冷骇事赋朱赵皂系映憨呻第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题坦克大战坦克大战难点分析难点分析本游戏难点主要集中在对坦克自动化控制的算法上。对于向固定目标前进的算法,可以先对N*M的网格做一次宽度优先搜索(BFS),算法中注意判重,避免消耗过多的

54、搜索时间,这样可以在较短的时间内找出一条最短路径。 由于游戏者坦克运动不确定性太高,为电脑坦克搜索一条正确的攻击游戏者坦克的路径难度较高。 淀胳升径揪患弘吼斧刃容撑洼认铂尔丸绷地办忍劝粟皮下趣衙拖皖病抉抖第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题坦克大战坦克大战设计及实现要点设计及实现要点游戏是否结束初始化图形界面读取游戏者输入开炮,并显示视听效果根据当前数据移动坦克或不反应电脑坦克按预先设定做出相应反应更新状态栏消息游戏者选择开炮游戏者选择移动退出系统并清理垃圾是否坦克大战程序的总体结构坦克大战程序的总体结构 轨哪厉辛疏恐拉瘤募揉悠质焚闻戮戎聚盟坪占口当

55、独窟宵它名语学疙瞪颐第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题坦克大战坦克大战主要数据结构提示(一)主要数据结构提示(一)typedefstructtagContainerRectcRect;/*游戏框矩形区*/unsignedcBorderColor;/*游戏框边界颜色*/unsignedcBackgroundColor;/*游戏框背景颜色*/intcBoardNM;/*N,M是事先定义的游戏框网格数*/*cBoard主要记录各网格是何种元素,作为坦克前进的依据*/Container;1)游戏框的结构体: 像前面讲述一样,固定的图形元素可以在初始化时一次

56、性完成,其位置记录 在Container中即可。料沽皆棉爬蘑辗佛紫刹代啮营枣谱丈曙微伊檬萌淆仗新蝴括敲释掷露涉雏第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题坦克大战坦克大战主要数据结构提示(二)主要数据结构提示(二)typedefstructtagTankchar*tImage; /*指向坦克图像缓冲区的指针*/size_ttImageSize;/*坦克图像大小*/PointtLocation;/*坦克在网格中的坐标*/chartDirctionOffMAX_STEP;/*坦克方向偏移数组,用以确定坦克路径,具体值自己确定*/chartFlag;/*标识坦克

57、身份*/Tank;2)坦克结构体: 另外,金鹰也可使用这一结构,只需用tFlag加以区别即可。咖精卤周背题队稚辉沦夫壹都庇庸湘筋球粹萤卒才墅簧劲摘和涎甫毡瞪丸第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题坦克大战坦克大战主要数据结构提示(三)主要数据结构提示(三)typedefstructtagStatusBoxRectsbRect;/*对话框矩形区*/char*sbTitle;/*对话框名*/char*sbStatusText;/*消息状态文本*/unsignedsbBackgroundColor;/*对话框背景色*/unsignedsbBorderColo

58、r;/*对话框边界颜色*/StatusBox;3)基本对话框结构体(每个对话框只包含一类信息,这主要是为了从可扩展性考虑。同时,如果发现前期设计有疏漏,也便于更改):如果对话框不多,可分别管理,如果较多,可以设计一个像游戏框(Container)那样的结构体来进行统一管理。傈韭摘钾誓热刑纱鬃扼尖埋报圣毋终凹纵鳃霉寺刘颐绥厘费厚零男简潞样第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题坦克大战坦克大战主要算法提示主要算法提示对于坦克大战中的固定元素和对话框等只改动消息栏文本的元素,可在初始化时统一输出到屏幕上,以后根据需要改变对话框的消息文本。对可摧毁障碍的管理,

59、使用一个统一的过程,当某个单位网格状态改变时,调用该过程即可。坦克的管理较为复杂,不过对于其移动,也可使用一个统一的过程来管理,这个过程只接收当前位置和下一步的偏移。犊蒲西腾踌盈摈态匙算默的耙冉蘑羚寂傲播后绳眨秘蚂代噪端踏繁梅磺厂第5章综合程序习题第5章综合程序习题第第5 5章章 综合程序练习题综合程序练习题总结总结 通过以上大型程序的设计练习,可运用前几章讲述的高级程序设计思想和方法,使自己对复杂、综合性程序设计有一个全面的领会和把握,提高自身的设计能力。 另外,也希望能充分发挥自我能动性,在大型程序的内容分解、算法设计、人机界面、执行效率等方面进行较深入的创新性思考与个性化设计。赞胡垒翠很译巳歉康启粥娃丝扁锚瘤涨系狠穿飞皑穿讶汪铁澄椒在憨惹赴第5章综合程序习题第5章综合程序习题

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 资格认证/考试 > 自考

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号