下载
加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 C语言课程设计报告

C语言课程设计报告.doc

C语言课程设计报告

你承诺旳幸福
2018-11-07 0人阅读 举报 0 0 暂无简介

简介:本文档为《C语言课程设计报告doc》,可适用于高等教育领域

C语言课程设计报告程序设计基础课程设计报告题目:打字母游戏姓名(学号):专业:计算机科学与技术编制时间:年月日版本:指导教师:北京联合大学信息学院编制程序设计基础课程设计报告第页摘要C语言课程设计是一门实践性很强的课程必须十分重视实践环节保证应有足够的上机实验时间。课程设计为学生提供了一个既动手又动脑独立实践的机会将课本上的理论知识化为解决问题的能力由此提高学生适应实际环境和实践编程的能力。程序设计可以调动学生的创新能力和求知欲望在学习C程序设计语言课程时不能满足于能看懂书上的程序而应当熟练地掌握程序设计的全过程即能独立地编写出源程序独立地上机调试程序独立运行程序和分析结果。针对C语言课程设计需要根据要求设计一个简单打字程序锻炼动手动脑能力和知识的掌握。根据一些练习打字软件的启发所制作的游戏实现经过不断重复的记忆法熟悉键盘字母所在位置的目的。关键字:“C语言课程设计”“打字母游戏”“图形编程”“系统实现”第一章(需求分析选题背景当今时代网络已经成为人们生活中不可缺少的一部分世界上的第三媒体Internet它打破了地域时间限制改变了人们的工作和生活方式制作站点是企业和个人的宣传自己的重要手段网上聊天线上游戏更是不用说了大家都玩得不亦乐乎打字也成了我们生活中必不可少的一部分而且具备一定的打字速度以后很多效率都会得到质的提升同时也学习信息的重要手段,接到课题后我们组根据老师的推荐题目以及自己的编程能力和兴趣经过几天的学习和考虑选择了设计的打字练习游戏用C语言进行简单的打字游戏设定这个很有趣可以涉及到绘图函数等可以很好锻炼我们在函数、指针等的综合运用能力、对结构体、文件、颜色函数的控制函数的使用以及我们的软件设计能力。以前玩过金三打字通里面的游戏也趣味横生当然它的功能是很强大的相比我们的程序而言实在我们是微不住道当今电脑已经普及学生有着充足的课余时间然而目前学生的打字速度以及大学生的输入指法并不是完全正确此程序是为了改善大学生文字输入能力以及锻炼学生的临时反应能力而编写同时可以丰富同学们的课余生活。毕竟是一种能力活到老学到老吧。目的和意义打字母游戏通过简单的操作锻炼学生的输入能力简单快捷非常有效。计算机已经成为我们学习和工作的得力助手,今天计算机的价格已经十分低廉性能却有了长足的进步。它已经被应用于许多领域计算机之所以如此流行的原因主要有以下几个方面:首先计算机可以代替人工进行许多繁杂的劳动其次计算机可以节省许多资源大大的提高人们的工作效率同时可以使敏感文档更加安全等等。运用数据结构中的算法思想作为数据结构结合C语言的基本知识编写一个简单的打字母游戏。通过完成课程设计进一步熟悉C语言程序设计的基本知识掌握数据结构的一些基本算法思想掌握C语言的文件操作进一步熟悉指针的用法数组的建立运用和函数的调用等。加深对数据结构的理解提高算法设计能力锻炼编程能力。程序设计基础课程设计报告第页我们编译生成的程序仅有MBCPU占用率极低不会和任何软件程序发生冲突也没有恶意代码虽然是在dos窗口下进行的游戏界面不太美观但也能算是简洁好用作为简单的联系键盘英文输入应该是不错的如果会一定的编译能力的话可以在源代码的基础上做更多的改进例如提示文字字母修正颜色修正等可以根据自己的喜好做出属于自己的打字程序在一定程度上我们还是有一定的自豪感的。发展现状现在练习打字的软件不多最好用的当属金山公司开发的金山打字通金山打字是金山公司推出的系列教育软件主要由金山打字通和金山打字游戏两部分构成是一款功能齐全、数据丰富、界面友好的、集打字练习和测试于一体的打字软件。金山打字通针对用户水平的定制个性化的练习课程循序渐进。提供英文、拼音、五笔、数字符号等多种输入练习并为收银员、会计、速录等职业提供专业培训。适用于打字教学、电脑入门、职业培训、汉语言培训等多种使用场景。但是此软件虽然功能强大占用CPU也很大相比较而且用户也许更需要一种可以运行在各种配置上而且很节省资源可以随意更改的练习打字的工具这就让我们有了想法。我们这次使用的是MicrosoftVisualC并且该平台易于开发、维护使用方便。第二章(方案论证和比较设计思路总体的设计思路如下面流程图所示根据实际情况我们使用原型法即以少量代价快速地构造一个可执行的软件系统模型使用户和开发人员可以较快的确定需求然后采用循环进化的开发方式对系统模型作连续的精化将系统需具备的性质逐渐加上去直到所有的性质全部满足。流程图显示了计算机执行程序的主要处理步骤和顺序用于描述我们求解问题的算法。程序设计基础课程设计报告第页欢迎界面输入任意键以继续见到随机字母输入所见字母结束界面数据类型的选择我们使用<graphicsh><conioh><timeh>三个函数库第一个是绘图用的第二个是控制用的第三个设置时间用的。代码中的ASCII码是从书上找的键盘代码表RGB颜色代码表。通过key值=target实现消失功能涉及到的句型while语句if语句for循环。全部代码使用“”显示文字注释未使用”*„„*”以图输入方便。具体软件功能基本功能:()随机产生一组字符横向一定的速度通过屏幕中的某一显示范围。()用户敲击显示范围中的字母如击中某一字母字母消失。()击中一个字符成绩累加一个固定的分值。()程序结束条件为下落完指定个数的字母。()实现不同下落速度。()要求保存最好的次成绩并从大到小排序。拓展功能:()游戏者可用一个已有的用户名登陆进行游戏。()实现游戏过程中有恰当的背景音乐。()实现击中字母后有声音提示。程序设计基础课程设计报告第页小组分工第一天小组讨论编写计划书、搜寻整理资料、着手写报告写入基本C程序实现基本界面。一成员负责随机字母的第二天产生、一成员负责在随机范围内产生字母、另外三成员负责实现下落指定个数的字母三成员共同实现保存近次成绩并排序另外两成员实现不第三天同下落速度两成员共同实现导入背景音乐并最终测试,另外三成员共第四天同实现击中字母后的声音提示,并最终测试成员共同完成课程设计报告第三章(系统分析与设计对象设计界面构成:欢迎界面是使用代码插入一张背景图片还有背景音乐都是通过代码实现的欢迎界面之后就是游戏说明选择等级输入用户名等各种字体设计。字体设计有静态的字体也有动态的字体这样的界面会看起来更加和谐。开始游戏以后游戏界面会显示分数及体现打字母比较人性化的说明。游戏结束的时候有是否再来一局的询问退出则显示玩家的分数。菜单设计定义:为了使打字母游戏更加人性化我们采用的设计理念是不管时间的长短每次下落个字母玩家自己选择等级只要能击中就可以拿到分数这样既可以锻炼玩家的耐心又可以练习打字母。等级分为九个等级字母下落速度随数字的大小逐渐增加等级是通过时间的间隔设置的。击中后会自动统计分数。主要控件的动作及功能描述:键盘的任意键进入游戏使用数字键来选择等级输入用户名使用键盘开始游戏。功能:随机产生一组字符横向或纵向以一定的速度通过屏幕中的某一显示范围。用户敲击显示范围中的字母击中某一字母及时的做出相应的标识。击中一个字符成绩累加一个固定的分值。设计了一个合理的程序结束条件:定量个字母。保存最近完成游戏的个人的名字和成绩并排序。各对象之间的联系:每个设计对象之间都是有联系的比如说欢迎界面的代码中插入音乐和插入图片的方法是一样的使用某个函数将某个图片或音乐引用。用户击中字母后字母会自动消失分数自动累加。利用间隔时间来控制速度退出时有询问提示等都是各个对象之间的联系。函数分析#pragmacomment(lib,"Winmmlib")导入winmmlib库,有了它才可以支持对windows多媒体的编程<graphicsh>是TC里面的图形库如果要用的话应该用TC来编译VC有他自己的另外图形库图形库涉及到的颜色通过RPB色表可以查到。分为:像素函数、直线和线型函数、多边形函数、填充函数等。conioh不是C标准库中的头文件在CstandardlibraryISOC和POSIX标准中均没有定义。conio是ConsoleInputOutput(控制台输入输出)的简写其中定义了通过控制台进行程序设计基础课程设计报告第页数据输入和数据输出的函数主要是一些用户通过按键盘产生的对应操作比如getch()函数等等。大部分DOSWindowsxPharLapDOSXOSorWin平台上的C编译器提供此文件UNIX和Linux平台的c编译器通常不包含此头文件。它是作为一种简单游戏程序必须用到的函数之一。<timeh>日期和时间函数timet和clockt和sizet都是与long有同等意义的名字。本类别给出时间和日期处理函数,头文件timeh。程序本身十分简单流程为欢迎界面游戏界面结束界面结束就要按下“ESC”实现。从源代码中就可以看出key值的设定。整个程序的大体思想:欢迎界面上欢迎正文和图片设置界面下方比较有心意的闪烁字设定。游戏界面随机字母srand(time())大小写从屏幕上方出现有合适的背景音乐对应各个key值将其从屏幕上清除字体颜色的设定。结束界面调用记录本次成绩函数进行得分排序输出文字。数据结构分析详细的数据结构如流程图所示voidwelcome制作欢迎界面setcolor编辑以下代码所显示的颜色Setfont输入文字和编辑文字字体outtextxy输入文字和编辑文字颜色Sleep实现时间等待效果target目标控制key键盘控制getchclosegraph实现按下任意键关闭窗口效果。第四章(重点问题和难点问题的分析、怎么产生随机的字母,尝试用i=rand()rand()函数返回,之间的一个整数。通过控制键盘输入的产生任意小写字母或产生任意大写字母。、怎么在随机的范围产生字母,尝试用x=rand()控制下落位置实现随机产生字母用outtextxy(x,y,target)显示字母通过字母的显示和像素变换实现动态随机下落。、怎么实现游戏过程中分数的显示,用outtextxy()在某一固定区域像素内输出分数并在游戏过程中累加分数再输出。、怎么实现控制不同等级有不同下落速控制间隔时间通过控制字母在某一行显示后被覆盖的速度来控制字母的下落速度可查询相关资料调用库函数。、怎么实现保存最好次成绩,先建立一个文件用于存储分数数据用于程序运行中使用将每一次游戏后的分数与之前的进行比较冒泡排序取前十分数输出。然后用冒泡排序将十次成绩排列出来。、怎么实现导入背景音乐,通过查询资料使用调用函数在游戏的欢迎界面的被调用函数中载入音乐查询载入音乐功能的库函数的使用选择合适音乐把音乐放到指定位置作为文件载入程序中运行。、怎么实现让游戏者用自己的用户名登陆进行游戏,尝试调用一个以对话框形式获取用户输入的函数建一个结构体将游戏者输入的用户名与游戏分数一一对应起来。程序设计基础课程设计报告第页第五章(系统实现本程序包括主要包括炫彩字的输出音乐的导入图片的导入字母下落下落的速度控制计分保存玩家记录等部分。、其实现的核心部分是字母下落部分。字母下落的实现是这样的先在图形界面打出一个字母由于其背景是黑色的延时一定时间后再在其下个单位的地方打出第二个字母这样就用第二个字母盖住了第一个字母连贯起来就感觉到字母是在下落。while(flagnum){setfont(,,"宋体")设置字母的字体和大小i=rand()rand()函数返回,之间的一个整数if(i)target=rand()产生任意小写字母elsetarget=rand()产生任意大写字母x=rand()产生任意下落位置for(y=y<y){setcolor(RGB(,,))设置字母的颜色outtextxy(x,y,target)显示字母if(kbhit()){key=getch()获取用户按键if((key==target)||(key==target)||(key==target)){score分数统计sprintf(s,"d",score)把整型转换成字符型setfont(,,"Arial")设置字体outtextxy(,,"分数")输出文字outtextxy(,,s)输出分数bar(x,y,x,y)击中用黑矩形擦去字母break跳出循环进行下一个字母}elseif(key==)判断是否按了{flag=如果按ESC退出游戏主循环break}}Sleep(rank)控制清除字母的时间也就是控制下落速度程序设计基础课程设计报告第页bar(x,y,x,y)擦最下面的字符}num计数}、下落速度的控制打印出第一个字母和第二个之间的延时的不同就实现了字母下落速度的不同。完成同样的动作延时少的要花的时间少。Sleep(rank)控制清除字母的时间也就是控制下落速度Rank由用户在键盘输入一个字符并用下面的自定义函数转换为整型intrank(charrank){intrankswitch(rank)判断字符确定等级{case'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakdefault:rank=break}returnrank}、保存玩家信息。玩家信息包括两个方面一是玩家昵称二是玩家分数。玩家昵称需要玩家自己输入玩家分数由玩家玩的情况决定。玩家昵称需要一个InputBox语句实现弹出一个对话框要求玩家自己输入昵称。然后玩家的昵称和玩家的分数是一个结构体的两个部分。玩家的分数和玩家的昵称一一对应。以便到时候输出玩家的成绩。每局结束后把该局玩家的成绩和历史玩家的成绩做一个排序找出最大的个玩家及其信息并且存入记录的文件中去。文件的记录部分初始化为姓名aaaa分数。()定义结构体structplayer自定义的结构体并顺便定义一个结构体变量{charnameintscore}player()用文件指针比较并储存信息FILE*fp文件指针inti,jstructplayert程序设计基础课程设计报告第页定义结构体变量t冒泡法比较大小时用playerscore=score把该局的分数赋给该局用户的结构体变量中fp=fopen("记录dat","rb")打开二进制文件for(i=i<i){fread(playeriname,,,fp)读入记录中的成绩和姓名fread(playeriscore,,,fp)}fclose(fp)关闭二进制文件for(j=j<j)冒泡法排序for(i=i<ji)if(playeriscore<playeriscore){t=playeriplayeri=playeriplayeri=t}fp=fopen("记录dat","wb")打开文件for(i=i<i)把排好序列的数据存入记录文件{fwrite(playeriname,,,fp)fwrite(playeriscore,,,fp)}fclose(fp)()在游戏开始输出信息FILE*fp文件指针inta,jcharbfp=fopen("记录dat","rb")打开文件for(j=j<j){fread(playerjname,,,fp)读取文件中的信息fread(playerjscore,,,fp)}fclose(fp)关闭文件setfont(,,"Arial")设置字体setcolor(RGB(,,))设置颜色outtextxy(,,"TOP")输出文字for(j=j<j)程序设计基础课程设计报告第页{sprintf(bj,"d",playerjscore)把整型转换成字符型setcolor(RGB(,,))设置颜色setfont(,,"Arial")设置字体outtextxy(,*j,bj)输出分数outtextxy(,*j,playerjname)输出名字}、炫彩字的实现。定义一个整型变量用它表示颜色的。把该变量赋给于(RGB()中最大是)然后让该变量自减自减的量度不能太小否则不明显。当该变量小于时把该变量重新置为依此循环进行。就看到颜色的不断变化。setcolor(RGB(,,c))设置颜色setfont(,,"WickendenCafeNDP")设置字体outtextxy(,,s)输出数字setcolor(RGB(c,,))设置颜色setfont(,,"黑体")设置字体if(score==)outtextxy(,,"全部击中~~")输出文字elseif(score>)outtextxy(,,"不错~继续加油~")输出文字elseouttextxy(,,"不要灰心~继续加油~")输出文字c=控制变色的变量自减实现变色if(c<)c=控制颜色的变量小于时再把赋给cSleep()、音乐的导入的实现。首先声明pragmacomment(lib,"Winmmlib")。然后在适当的位置载入音乐文件再在适当的位置把音乐播放并设置为循环播放。就实现了背景音乐。mciSendString("open"resSleepAwaymp"aliasmymusic",,,)载入音乐转化为mciSendString(T("playmymusicrepeat"),,,)播放音乐、图片的导入。图片的导入要先定义一个图片的变量。把图片的信息存储到图片变量中然后在在画图框中输出该图片即可。IMAGEimg定义IMAGE对象loadimage(img,"resjpg")读取图片到img对象中putimage(,,img)在坐标(,)位置显示IMAGE对象第六章(系统的测试测试依据:C语言编译程序以及对程序的运行测试。时间:年月日至年月日。程序设计基础课程设计报告第页地点:实验楼、教室、图书管、宿舍。人员:陈园芳、乔继静、潘德槟、逯彩霞、李聚升。测试环境:windowsxp系统、windows系统。操作性评测:画面质理清晰具有开启游戏时出现的游戏画面又有游戏时搭配的黑色界面使游戏画面看起来清爽舒畅。同时鼠标操作无效采用纯键盘的操作方式。使游戏操作更方便快捷。功能性评测:基本上完全达到了当初设想游戏时所具有的功能同时还附加了更多功能。如:()随机产生一组字符横向或纵向以一定的速度通过屏幕中的某一显示范围。()用户敲击显示范围中的字符如击中某一字符要及时的做出相应的标识。()击中一个字符成绩累加一个固定的分值。()设计一个合理的程序结束条件(指定一定的字母数)。()保存最近完成游戏的个人的名字和成绩并排序。()可以选择游戏时字母的下落速度。()退出时询问是否重玩一局。()显示最终成绩。()玩游戏时可以享受音乐的熏陶。()开启游戏时出现的游戏画面。性能评测:经过对此游戏的详细的系统测试得到以下游戏()游戏的运行速度,每秒FPS()CPU占用率~()内存使用率~游戏特点:程序设计基础课程设计报告第页此游戏作为一款普通大众的小游戏具有小巧、简便、美观等特点。对于此游戏经过多次修改功能已在原有的基础上进一步改善附加上了图片、音乐等外在因素。游戏者在游戏时可打发无聊时光同时又可提高键盘熟练度一举两得不存在时间的浪费。而附加上的图片与音乐等又可让游戏者在游戏时不至于呈现乏味随着柔和音乐的陶冶让心情舒畅。此游戏者老少皆宜不针对任何人群儿童可以借助此游戏认识英文字母为以后打下基础。中青年可以借助此游戏打发无聊时光提高自己的电脑键盘熟练度为工作时提高速度。老年者可以享受游戏的乐趣在一生劳碌之后享受美好时光。测试过程情况:经常性的出现游戏不能正常运行运行过程中出现错误等。而同时又不能及时找出错误所在。以及一些技术性问题如插入图片与音乐时的绝对路径与相对路径的问题。BUG程序代码:#include<stdioh>#include<conioh>#include<graphicsh>画图头文件#include<timeh>时间头文件#pragmacomment(lib,"Winmmlib")引用WindowsMultimediaAPI(ApplicationProgrammingInterface)intscore=全局变量********整型的分数chars全局变量*****字符型的分数structplayer自定义的结构体并顺便定义一个结构体变量{charnameintscore}player*******************函数声明***************************voidrecord()记录本次成绩函数voidwelcome()欢迎界面函数voidinstructions()游戏说明界面函数voidgame(intrank)游戏函数voidrecord()显示记录函数intrank(charrank)等级选择函数voidgoodbye()退出界面函数**********主函数******************************intmain(){charrankrank接受从键盘输入的字符根据字符判断等级intrank=控制延时时间从控制速度intsign=当做标记用于标记是否弹MessageBox对话框程序设计基础课程设计报告第页welcome()调用欢迎界面函数instructions()调用游戏说明界面函数record()调用显示记录函数InputBox(playername,,"请输入玩家昵称")以对话框形式获取用户输入函数rank=getch()读入一个字母rank=rank(rank)调用等级函数game(rank)调用游戏函数HWNDwnd=GetHWnd()while(sign)sign作为标记执行循环if(MessageBox(wnd,"游戏结束!!!n再来一局挑战更高分数吧","询问",MBYESNO|MBICONQUESTION)==IDYES)消息框含有两个按钮:Yes和No**********问题标记图标出现在消息框game(rank)else{sign=goodbye()}closegraph()关闭图形对话框return}******************记录本次成绩函数***************************voidrecord(){FILE*fp文件指针inti,jstructplayert定义结构体变量t冒泡法比较大小时用playerscore=score把该局的分数赋给该局用户的结构体变量中fp=fopen("记录dat","rb")打开二进制文件for(i=i<i){fread(playeriname,,,fp)读入记录中的成绩和姓名fread(playeriscore,,,fp)}fclose(fp)关闭二进制文件for(j=j<j)冒泡法排序程序设计基础课程设计报告第页for(i=i<ji)if(playeriscore<playeriscore){t=playeriplayeri=playeriplayeri=t}fp=fopen("记录dat","wb")打开文件for(i=i<i)把排好序列的数据存入记录文件{fwrite(playeriname,,,fp)fwrite(playeriscore,,,fp)}fclose(fp)关闭文件}******************欢迎界面函数***************************voidwelcome(){charchmciSendString("open"resSleepAwaymp"aliasmymusic",,,)载入音乐转化为mciSendString(T("playmymusicrepeat"),,,)播放音乐指向接收返回信息的缓冲区为时不返回信息缓冲区的大小指定一个回调窗口的句柄,一般为initgraph(,)初始化画图界面IMAGEimg定义IMAGE对象loadimage(img,"resjpg")读取图片到img对象中putimage(,,img)在坐标(,)位置显示IMAGE对象ch=getch()吸收掉一个按键cleardevice()清屏}*******************游戏说明界面函数***************************voidinstructions(){intc=控制变色的变量setcolor(YELLOW)设置颜色setfont(,,"黑体")设置字体outtextxy(,,"游戏说明:")输出文字setcolor(WHITE)设置颜色setfont(,,"宋体")设置字体outtextxy(,,"一、每次游戏下落个字母")输出文字outtextxy(,,"二、请按数字键选择游戏等级")输出文字程序设计基础课程设计报告第页outtextxy(,,"三、统计被击中的个数")输出文字setfont(,,"华文行楷")设置字体outtextxy(,,"等级一二三四五六七八九")输出文字outtextxy(,,"按键")输出文字while(!kbhit())kbhit()作用是判断是否有字母输入{setcolor(RGB(c,,))设置颜色setfont(,,"楷体")设置字体outtextxy(,,"请选择等级")输出文字setcolor(RGB(c,,))设置颜色setfont(,,"WickendenCafeNDP")设置字体outtextxy(,,"let'sgo!!!")输出文字c=控制颜色的变量自减if(c<)c=控制颜色的变量小于时再把赋给cSleep()延时毫秒}cleardevice()清屏}**************退出界面函数**********************************voidgoodbye(){intc=控制变色的变量cleardevice()清屏setcolor(YELLOW)设置颜色setfont(,,"黑体")设置字体outtextxy(,,"的最终成绩是:")输出文字setfont(,,"华文楷体")设置字体setcolor(RGB(,,))设置颜色outtextxy(,,"按任意键退出游戏")输出文字setcolor(YELLOW)设置颜色setfont(,,"黑体")设置字体outtextxy(,,"的最终成绩是:")输出文字outtextxy(,,playername)record()调用记录本次成绩函数while(!kbhit()){setcolor(RGB(,,c))设置颜色setfont(,,"WickendenCafeNDP")设置字体outtextxy(,,s)输出数字setcolor(RGB(c,,))设置颜色程序设计基础课程设计报告第页setfont(,,"黑体")设置字体if(score==)outtextxy(,,"全部击中~~")输出文字elseif(score>)outtextxy(,,"不错~继续加油~")输出文字elseouttextxy(,,"不要灰心~继续加油~")输出文字c=控制变色的变量自减实现变色if(c<)c=控制颜色的变量小于时再把赋给cSleep()延时毫秒}getch()提供给用户时需要等待输入后再退出}***********等级选择函数*****************************intrank(charrank){intrankswitch(rank)判断字符确定等级{case'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakcase'':rank=breakdefault:rank=break}returnrank}****************显示记录函数*************voidrecord(){FILE*fp文件指针inta,jcharbfp=fopen("记录dat","rb")打开文件程序设计基础课程设计报告第页for(j=j<j){fread(playerjname,,,fp)读取文件中的信息fread(playerjscore,,,fp)}fclose(fp)关闭文件setfont(,,"Arial")设置字体setcolor(RGB(,,))设置颜色outtextxy(,,"TOP")输出文字for(j=j<j){sprintf(bj,"d",playerjscore)把整型转换成字符型setcolor(RGB(,,))设置颜色setfont(,,"Arial")设置字体outtextxy(,*j,bj)输出分数outtextxy(,*j,playerjname)输出名字}}******************游戏函数***************************voidgame(intrank){cleardevice()清屏score=清除掉原有的分数outtextxy(,,"玩家:")outtextxy(,,playername)setfont(,,"Arial")设置字体outtextxy(,,"人有享受片刻优雅恬适的权力,让打字母放松你一下吧!")intichartarget目标字母charkey用户的按键intx,y字母的位置intflag=标记是否按了退出键intsum=成绩计数intnum=规定下落字母的个数srand(time())随机时间种子设置第一个随机函数的值setfillstyle(BLACK)设置最下面矩形内图的颜色setcolor(YELLOW)设置颜色line(,,,)用条线规定一下工作区line(,,,)用条线规定一下工作区line(,,,)用条线规定一下工作区程序设计基础课程设计报告第页while(flagnum){setfont(,,"宋体")设置字母的字体和大小i=rand()rand()函数返回,之间的一个整数if(i)target=rand()产生任意小写字母elsetarget=rand()产生任意大写字母x=rand()产生任意下落位置for(y=y<y){setcolor(RGB(,,))设置字母的颜色outtextxy(x,y,target)显示字母if(kbhit()){key=getch()获取用户按键if((key==target)||(key==target)||(key==target)){score分数统计sprintf(s,"d",score)把整型转换成字符型setfont(,,"Arial")设置字体outtextxy(,,"分数")输出文字outtextxy(,,s)输出分数bar(x,y,x,y)击中用黑矩形擦去字母break跳出循环进行下一个字母}elseif(key==)判断是否按了{flag=如果按ESC退出游戏主循环break}}Sleep(rank)控制清除字母的时间也就是控制下落速度bar(x,y,x,y)擦最下面的字符}num计数}}程序设计基础课程设计报告第页小结通过本次的C程序设计实训我们对C语言程序设计有了进一步的深入了解并能更加灵活地加以运用。C语言是一门很实用的计算机高级语言我知道如果自己以后想在所学专业上有所成就首先必须牢牢掌握C语言为自己以后的专业学习打下扎实的基础。C语言是一门比较灵活有趣实践性较强的课程。要想学好它必须以课本和实践相结合通过不断的上机操作运用所学知识使知识记忆深刻同时达到学以致用的目的通过实践运用不仅能发现自己的不足之处更能体会到C语言的无穷乐趣和好处。短短四天的程序设计实训学到了很多东西同时也对先前所学的知识有了更深的理解。比如:能灵活地运用switch语句数组的定义函数的调用与使用以及图形函数的使用等等。虽然对于C语言编程还有很多不明白的地方但这几天的学习确实受益匪浅。我们小组成员的分工与合作相互探讨以及查找资料使大家有了更好的交流机会同时再一次印证了团结的力量合理的分工和对每个人能力的充分调配让我们事半功倍。还有一点体会就是书本上和老师所教的知识是有限的我们需要主动学习不断地通过自身的阅读向他人求教利用网络资源等各种获取知识的平台去学习掌握更多的知识这样我们才能更好地了解C语言并能学以致用。就像这次在设计这个程序时首先我们首先根据已有的打字母游戏进行读懂再从书本上、网上找一些思路构思出游戏界面和各个模块但是开始实际编写的时候总是会出现了一些困难使我们无从下手经过与同学的探讨和老师的点拨后使我们豁然开朗。其实在打字程序上花费最多时间是游戏保存十位玩家成绩和插入背景音乐是否能实现同步下落和输入字母最后经过我们自己的反复尝试有些成功了有些失败了外加了输入效果游戏也最终设计成功。但由于时间有限以及我们对C语言知识的掌握还不是很完善所以这次的程序设计没有实现闯关这一功能。总体来说我们组的完成情况还是很不错的尽管存在着一些不足但看着我们四天来的努力成果我们还是很高兴的。转眼间四天的实践课程圆满落幕而我们对C语言的实践应用却刚刚拉开帷幕我们更加期待更加好奇。我们相信C语言对于我们日后专业发展大有裨益。在C语言的使用过程中我们对软件的概念也有了初步的了解这将为以后微机原理以及各种单片机原理奠定了一定的基础。以后对于C语言的运用还会很多很多所以很感谢这一次的C语言实践课程。参考文献()谭浩强著C程序设计(第四版)清华大学出版社()浙江树人大学信息科技学院《程序设计基础》(课程设计指导书)()严蔚敏吴伟民编著数据结构(C语言版)清华大学出版社()彭伟编著《单机片C语言程序设计实例例》()陈朔鹰陈英主编《C语言趣味程序百例精解》北京理工大学出版社年。()常玉龙等编写《TurboC实用大全》北京航空航天大学出版社年月。参考网站:常用RGB色彩代码键盘按键代码百度C语言吧fr=ala程序设计基础课程设计报告第页课程设计计划书题目:打字母游戏的课程设计计划组长:陈园芳组员:李聚升逯彩霞乔继静潘德槟日期:年月日一、需求分析选题为打字练习游戏我们组根据老师的推荐题目以及自己的编程能力和兴趣选择了设计的打字练习游戏来锻炼我们在函数、指针等的综合运用能力、对结构体、文件、颜色函数的控制函数的使用以及我们的软件设计能力。二、功能设计、基本功能:()随机产生一组字符横向一定的速度通过屏幕中的某一显示范围。()用户敲击显示范围中的字母如击中某一字母字母消失。()击中一个字符成绩累加一个固定的分值。()程序结束条件为下落完指定个数的字母。()实现不同下落速度。()要求保存最好的次成绩并从大到小排序。、拓展功能()游戏者可用一个已有的用户名登陆进行游戏。()实现游戏过程中有恰当的背景音乐。()实现击中字母后有声音提示。三、对可能遇到的难点和重点问题进行分析、怎么产生随机的字母,尝试用i=rand()rand()函数返回,之间的一个整数。通过控制键盘输入的产生任意小写字母或产生任意大写字母。、怎么在随机的范围产生字母尝试用x=rand()控制下落位置实现随机产生字母用outtextxy(x,y,target)显示字母通过字母的显示和像素变换实现动态随机下落。、怎么实现游戏过程中分数的显示用outtextxy()在某一固定区域像素内输出分数并在游戏过程中累加分数再输出。、怎么实现控制不同等级有不同下落速度通过控制字母在某一行显示后被覆盖的速度来控制字母的下落速度可查询相关资料调用库函数。、怎么实现保存最好次成绩先建立一个文件用于存储分数数据用于程序运行中使用将每一次游戏后的分数与之前的进行比较冒泡排序取前十分数输出。、怎么实现导入背景音乐在游戏的欢迎界面的被调用函数中载入音乐查询载入音乐功能的库函数的使用选择合适音乐作为文件载入程序中运行。、怎么实现让游戏者用自己的用户名登陆进行游戏尝试调用一个以对话框形式获取用户输入的函数建一个结构体将游戏者输入的用户名与游戏分数一一对应起来。程序设计基础课程设计报告第页四、小组分工及实验计划和进度小组成员名时间需完成的任务单段第一小组讨论编写计划书、搜寻整理资料、着手写报告天第二写入基本C程序实现基本界面。随机字母的产生天陈园芳第三三成员共同实现保存近次成绩并排序天第四两成员共同实现导入背景音乐并最终测试,共同完成报告天第一小组讨论编写计划书、搜寻整理资料、着手写报告天第二写入基本C程序实现基本界面。在随机范围内产生字母天李聚升第三三成员共同实现保存近次成绩并排序天第四两成员共同实现导入背景音乐并最终测试,共同完成报告天第一小组讨论编写计划书、搜寻整理资料、着手写报告天第二写入基本C程序实现基本界面。实现字母下落天潘德槟第三三成员共同实现保存近次成绩并排序天第四三成员共同实现击中字母后的声音提示,并最终测试共同天完成报告第一小组讨论编写计划书、搜寻整理资料、着手写报告天第二写入基本C程序实现基本界面。两成员共同实现下落指定天个数的字母乔继静第三两成员实现不同下落速度天第四三成员共同实现击中字母后的声音提示,并最终测试共同天完成报告第一小组讨论编写计划书、搜寻整理资料、着手写报告天第二写入基本C程序实现基本界面。两成员共同实现下落指定天个数的字母逯彩霞第三两成员实现不同下落速度天第四三成员共同实现击中字母后的声音提示,并最终测试共同天完成报告程序设计基础课程设计报告第页用户使用说明书产品介绍:打字母游戏是一款学习打字工具它提供英文字母输入练习针对用户不同打字水平可以选择不同等级循序渐进寓教于乐。相比金山打字通等打字软件的体积本产品只有MB便于下载和安装用户使用起来也更方便快捷此游戏作为一款普通大众的小游戏具有小巧、简便、美观等特点。对于此游戏经过多次修改功能已在原有的基础上进一步改善附加上了图片、音乐等外在因素。游戏者在游戏时可打发无聊时光同时又可提高键盘熟练度一举两得不存在时间的浪费。随着柔和音乐的陶冶游戏者在游戏时不至于呈现乏味心情舒畅。此游戏者老少皆宜不针对任何人群儿童可以借助此游戏认识英文字母为以后打下基础。中青年可以借助此游戏打发无聊时光提高自己的电脑键盘熟练度为工作时提高速度。老年者可以享受游戏的乐趣在一生劳碌之后享受美好时光。使用步骤说明:安装好之后打开游戏欢迎界面按任意键进入按屏幕上提示进行操作选择游戏等级输入用户名。程序设计基础课程设计报告第页游戏中随机产生一组字符横向或纵向以一定的速度通过屏幕中的某一显示范围用户敲击显示范围中的字母击中某一字母成绩累加一个固定的分值游戏过程中用户可直接看到自己的分数变化游戏中要终止游戏按esc键。每次游戏定量个字母下落完结束。另外游戏可保存游戏最高分的个游戏者的名字和成绩由高到低排序游戏结束后用户可在下次开始游戏时看到自己的排名。

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/36

C语言课程设计报告

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利