资源预览内容
第1页 / 共65页
第2页 / 共65页
第3页 / 共65页
第4页 / 共65页
第5页 / 共65页
第6页 / 共65页
第7页 / 共65页
第8页 / 共65页
第9页 / 共65页
第10页 / 共65页
亲,该文档总共65页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
综合程序练习题 主要内容大型程序设计的要求9个大型程序设计题目分析综合程序练习题z大型程序设计的要求题目要求:每道题都给出了问题的描述、基本要求 、高级要求、难点分析、主要数据结构及主要算法 提示等,以便供大家选择练习。 其中“基本要求”和“高级功能”是两个不同层次的功 能要求。综合程序练习题 主要内容大型程序设计的要求9个大型程序设计题目分析综合程序练习题z大型程序设计题目分析: z1 打字练习 z2 电子琴 z3 简易画图板 z4 贪吃蛇 z5 五子棋 z6 搬运工 z7 大富翁 z8 赛车 z9 坦克大战1问题描述 2基本功能 3高级功能 4难点分析 5程序总体结构 6主要数据结构提示 7主要算法提示综合程序练习题打字练习z1:问题描述打字练习是一个非常有用的小程序,电脑初学者可 以借助它来熟悉键位,新手可以利用它来提高打字 速度。 z2:基本功能键位练习、单词练习、文本练习 z3:高级功能增加音效、暂停功能、继续上次未完成的练习综合程序练习题打字练习z难点分析1)虚拟键盘由于有很多按键所以绘制时会比较 繁琐。至于如何反像显示一个按键,我们会在 在算法提示部分给出。2)键位练习部分由于有些键是没有对应的 ASCII码的,所以我们无法使用ASCII码来识别 用户的按键,应当使用键盘码来识别它。函数 bioskey可以获得按键的键盘码。综合程序练习题打字练习z设计及实现要点图形模式初始化选择练习模式键位练习单词练习文本练习结束清理模块打字练习程序的总体结构 综合程序练习题打字练习z主要数据结构分析(一) 1)struc rect结构代表屏幕上的一个矩形区域。 它的结构如下:struct rect int left,top; /*矩形左上角的坐标值*/ int right,bottom; /*矩形右下角的坐标值*/ 综合程序练习题打字练习z主要数据结构分析(二)2)在键位练习的部分,由于要经常对虚拟键盘上 的某个键进行绘制,为了绘制时的方便我们可以使 用一个结构来表示虚拟键盘上的每个按键。struct keystruct rect keyRect; int keyNum;char keyName10; ;keyRect就代表了按键在屏幕上占据的一个矩形区域。 keyNum是按键的键盘码。 keyName是按键的名称,绘制时显示在按键上。综合程序练习题打字练习z主要数据结构分析(三)3)使用struct key keyArrayMAXKEY数组来保存所有要绘制的按键struct key keyArrayMAXKEY;综合程序练习题打字练习z主要算法提示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:高级功能界面显示波形图、菜单帮助快捷键、鼠标功能综合程序练习题电子琴z难点分析1)曲目文件的格式设计。业界广泛采用midi文件,但程序员新接触时,需要了解它的格式等技术,解码、编码也都存在难度。可自行设计一种格式,记录键盘按键及时间间隔。这样编码和解码都很简单。 2)图形描绘。这是本程序最主要的工作。在考虑如何设计出一个美观的图形时,好要考虑其它很多方面:背景色、菜单颜色、菜单大小、琴键颜色、琴键的形状、显示琴键被按下、显示波形图等。 3)响应鼠标事件。在DOS环境下响应鼠标操作比较有难度。综合程序练习题电子琴z设计及实现要点界面初始化模块结束清理模块播放模块发声模块击键处理模块实时弹奏模块曲目编辑模块电子琴程序的总体结构 综合程序练习题电子琴z主要数据结构分析(一)/*系统状态*/ enum sytem_statussystem_status_normal,system_status_paused /*系统模式*/ enum sytem_modulsystem_modul_intime,system_status_play,system_status_edit /*定义颜色枚举*/ typedef enum color int blue, int red, . COLOR;1)定义系统常量综合程序练习题电子琴z主要数据结构分析(二)#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和另外一个键的组合综合程序练习题电子琴z主要数据结构分析(三)typedef struct menu_item_node char * name; CTRL_KEY hotkey; menu_item_node *next; MENU_ITEM; #define menu_item_list MENU_ITEMtypedef struct menu_group char* name; CTRL_KEY hotkey; menu_item_list itemList; /*文件菜单组下有几个菜单项*/ MENU_GROUP;4)一个菜单项5)定义菜单组综合程序练习题电子琴z主要数据结构分析(四)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)定义一个形状的四个位置,注意边线均为直线综合程序练习题电子琴z主要数据结构分析(五)typedef struct key_recordint keynum,int timeinterval KEY_RECORD;typedef struct gragh RECTANGLE shape, COLOR frameColor,COLOR fillColor GRAGH;8)定义一个图形,包括形状、边框色、填充色9)定义一个击键记录综合程序练习题电子琴z主要数据结构分析(六)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) 记录配置信息,包括背景色、高亮色、菜单项的长宽等、键盘对 应图的位置、波形图的文职、曲目列表的位置、菜单组信息等,自行补 充:综合程序练习题电子琴 z主要算法提示参考以下几个主要函数的定义: 初始化函数:初始化全局配置信息 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图片进行修改。综合程序练习题简易画图板z难点分析1)填充功能。虽然Tc图形库中有填充函数floodfill,但是 这个填充函数不符合我们的要求。因为这个填充函数在调 用时除了要指定填充区域中的一点,还需要指定要填充的 区域边界的颜色,获取图像边界颜色的操作对于用户来说 是比较麻烦的。此外,我们希望填充区域的边界可以是不 同颜色的。所以,需要设计自己的填充函数。2)BMP文件的打开和保存。必须了解BMP文件的结构, 以知道如何从文件中读出需要的数据以及如何将数据保存 到bmp文件中。 综合程序练习题简易画图板z设计及实现要点界面初始化模块图像绘制模块颜色选择模块形状选择模块结束清理模块图像保存模块简易画图板程序的总体结构 综合程序练习题简易画图板z主要算法提示首先由用户指定填充区域中的任一点,以该点作为种子点,然后分别 向上下左右四个方向检查该点的相邻点。如果这些点和种子点的颜色 相同,则填充它,否则,就视为边界点。然后再以那些检测到的非边 界点作为种子点,以同样的方式检查它们的相邻点。这样不断的检测 、填充就可以将区域填充满。 推荐使用队列来实现一个非递归的算法。 非递归的填充算法: a、将第一个种子点放入队列 b、当队列非空 b1、从队列中取出一点 b2、将该点置为填充色 b3、 分别检查上下左右四点,如果是非边界点则将其放入队列中 c、算法结束 综合程序练习题贪吃蛇 1:问题描述贪吃蛇游戏是一个深受人们喜欢的游戏:一条蛇在密闭的围墙内, 在围墙内随机出现食物,通过按键控制蛇向上下左右四个方向移动 ,蛇撞到食物,则食物被吃掉,蛇的身体增加一节。如果蛇在移动 过程中,撞到墙壁或身体交叉(蛇头撞到自己的身体)游戏结束。 现要求利用Turbo C 2.0来实现该游戏。 2:基本功能提供图形界面、键盘控制游戏、计分机制、结束判断 3:高级功能暂停功能:能随时通过按键来暂停游戏,再按一次则继续游戏。 速度调节功能 奖励机制 音效功能综合程序练习题贪吃蛇z难点分析1)表示蛇的图形以及蛇的移动。 2)检测蛇有无撞到食物、围墙或是自己的身体。 3)食物的随机产生。 4)蛇的移动速度调节。 5)奖励食物的定时机制。 综合程序练习题贪吃蛇z设计及实现要点场景初始化模块蛇移动模块键盘处理模块碰撞检测模块定时模块游戏结束清理模块记分模块贪吃蛇程序的总体结构 综合程序练习题贪吃蛇z主要数据结构提示(一)char GameBoard ROWCOL;/* 游戏板所有单元的坐标 */enum UnitStateFREE, BOARDER, SNAKE, FOOD, BONUS;en
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号