C课程设计报告

上传人:仙*** 文档编号:51279021 上传时间:2022-01-25 格式:DOC 页数:17 大小:303.08KB
收藏 版权申诉 举报 下载
C课程设计报告_第1页
第1页 / 共17页
C课程设计报告_第2页
第2页 / 共17页
C课程设计报告_第3页
第3页 / 共17页
资源描述:

《C课程设计报告》由会员分享,可在线阅读,更多相关《C课程设计报告(17页珍藏版)》请在装配图网上搜索。

1、数学与信息科学系2016届学生课程报告赣 南 师 范 学 院 科 技 学 院 C课程设计报告教 学 系 数学与信息科学系 年 级 2015级 专 业 计算机科学与技术 学 号 1520061128 姓 名 钟莉筠 任课教师 郑志明 完成日期 2016年7月6日 分数 签名 目 录一、课程设计简介- 2 -二、程序功能介绍- 2 -(一)俄罗斯方块游戏需要解决的问题包括- 2 -(二)俄罗斯方块有戏需要设计的功能函数包括- 2 -三、 开发环境及工具- 3 -四、程序数据结构设计- 3 -(一)从配置文件获取方块数据- 3 -(二)游戏初始化控制- 3 -(三)显示游戏池边界- 4 -(四)显示

2、游戏提示信息结点- 5 -(五)运行游戏信息结点- 5 -(六)是否重玩游戏信息结点- 6 -五、程序设计储存设计- 7 -六、程序流程设计- 7 -七、程序运行效果图- 8 -八、程序测试结果图- 9 -九、程序存在的不足及改进的方法 - 10 -十、程序设计心得体会- 11 -0一、课程设计简介 程设计中利用C语言在控制台的情况下实现俄罗斯方块游戏,俄罗斯方块的基本规则是移动、旋转和摆放游戏自动输出的各种方块,使之排列成完整的一行或多行并且消除得分。课程中就是灵活利用C语言中的知识,掌握对于结构体,数组,指针等变量的用法,以及掌握对于函数的嵌套调用,在本次课程中掌握对于编写程序的格式以及模

3、块化,能够使得整体看上去更加简洁。二、程序功能介绍(一)俄罗斯方块游戏需要解决的问题包括:按任意键开始游戏,随机产生方块并自动下移用Esc键退出游戏。 用键变换方块用键和 键左右移动方块用键使方块加速下移用空格键使方块直接下移能正确判断满行并消行、计分、定级别能正确计时设定游戏为不同级别,级别越高难度越大重点: *游戏面包的数据结构:二维数组 *7种形状方块的数据结构:结构体保存每种形状方块的坐标、颜色(2) 俄罗斯方块游戏需要设计的功能函数包括:(1) 声明俄罗斯方块的结构体(2) 函数原型的声明(3) 制作游戏窗口(4) 制作俄罗斯方块(5) 判断方块是否可以下移,左移,右移。(6) 判断

4、是否可以消除(7) 判断是否满格3、 开发环境及工具开发环境:windows7系统工具:codeblocks四、程序数据结构设计(一)从配置文件获取方块数据(2) 游戏初始化控制typedef struct TetrisManager / 这个结构体存储游戏相关数据 uint16_t pool28; /游戏池 int8_t x ;/当前X坐标,此处坐标为方块左上角坐标 int8_t y ;/当前方块Y坐标 int8_t block_type3;/当前,下个,和下下个方块类型 int8_t orientation3;/当前,下个,和下下个方块旋转状态 unsigned score;/得分 uns

5、igned erased_count4;/消行数 unsigned erased_count_total;/消行总数 unsigned tetris_count7;/个方块数 unsigned tetris_count_total;/方块总数 bool dead; /挂 TetrisManager; void initGame(TetrisManager *manager, TetrisControl *control) CONSOLE_CURSOR_INFO cursorInfo = 1, FALSE ; / 光标信息 g_hConsoleOutput = GetStdHandle(STD_

6、OUTPUT_HANDLE); / 获取控制台输出句柄 SetConsoleCursorInfo(g_hConsoleOutput, &cursorInfo); / 设置光标隐藏 SetConsoleTitleA(俄罗斯方块); restartGame(manager, control);(三)显示游戏池边界 void GameInterface() signed char y; SetConsoleTextAttribute(hOut, 0xFF9); for (y = ROW_BEGIN; y dead) / 没挂 while (_kbhit() / 有键按下 keydownControl

7、(manager, control, _getch(); / 处理按键 if (!control-pause) / 未暂停 clockNow = clock(); / 计时 / 两次记时的间隔超过0.45秒 if (clockNow - clockLast 0.45F * CLOCKS_PER_SEC ) clockLast = clockNow; keydownControl(manager, control, 80); / 方块往下移 (7) 是否重玩游戏信息结点 bool ifPlayAgain() int ch; SetConsoleTextAttribute(g_hConsoleOu

8、tput, 0xF0); gotoxyWithFullwidth(15, 10); printf(游戏结束); gotoxyWithFullwidth(13, 11); printf(按Y重玩,按N退出); do ch = _getch(); if (ch = Y | ch = y) return true; else if (ch = N | ch = n) return false; while (1);五、程序设计储存设计程序存储是存在硬盘上,分三个文件存储。俄罗斯放方块信息数据存储在definefile中,游戏操作信息数据存储在gamefile,游戏界面显示信息数据存储在display

9、file。打开方式是ab+,每次打开用FILE*fp=fopen();语句,从硬盘中读取出来从而显示。6、 程序流程设计如图1所示游戏系统运行大概运行过程:函数初始化、显示各界面、如游戏池界面、按键控制提示界面、成绩统计界面、方块统计界面等,游戏开始运行,再判断是否结束,判断是结束后再判断是否要重新开始游戏,然后循环。图1 程序流程图七、程序运行效果图程序运行效果图见图2所示图2 8、 程序测试结果图 游戏系统运行大概运行过程:加载游戏,函数初始化、显示各界面、如游戏池界面、按键控制提示界面、成绩统计界面、方块统计界面等,游戏开始运行,再判断是否结束,判断是结束后再判断是否要重新开始游戏,然后

10、循环。 程序测试结果图见图3所示图3九、程序存在的不足及改进的方法(一)不足之处:(1) 没有做一个或多个通用的函数,没有做排序的函数,导致输出的信息不能依次排序。(2) 俄罗斯方块的类型在程序中写死了,不好添加修改方块的类型。(3) 对于程序的细节内容没有去添加,整个程序显得太繁琐。 (二)改进方法:(1)正确使用指针指向下个结点,使查询和编辑连续操作。 (2)利用一个配置文件把所需要的方块类型添加进去,然后在源程序中调用生成相应的数值,这样只要在配置文件中修改方块的参数就可以得到所需要的方块类型。(3) 用一个或多个函数分解出来,这样可以实现同一个函数的多次调用,大大减少代码的数量。十、程

11、序设计心得体会这次课程设计,在一周的上课中,我一直都处于模糊的状态,对C语言没有足够的认识和了解。根据老师的讲解,我在暑假通过书本和资料查找,慢慢的琢磨和实验操作,虽然还不能通透这尔罗斯方块游戏程序,但通过这次学习终于让我更加了解课本知识,对C语言中的知识学会了一些应用,加深了对C语言知识的了解,以及对指针、结构体的操作,能够根据自己的需求而去构建需要的函数,在处理问题时学会了先整体分析,在细化处理其他内容。在编程时,只有大的框架做好了才可以去优化,才有时间去完善自己想要做的功能。在有些类似的问题处理时学会互相调用函数,以简化繁琐而重复的代码。这次课程设计教会了我相当的基础知识,让我对C语言有了更进一步的认识,为以后的学习有了不一样的铺垫,在以后的学习中,还是需要不断的探索和实验,这样才能把书本上的东西真正的掌握成为自己的东西。同事,感谢这次的C课程,也感谢老师的指导,在以后的学习中我会更加努力。15

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!