1、 4、int newWord( ) 生成新字符函数 5、int moving( ) 字符下降函数 6、int wordHit( ) 击中字符函数 7、int result ( ) 结果输出函数 8、int start( ) 程序开始提示操作 9、void leave( ) 函数结束五、流程图 N Y 0 1六、程序运行效果图七、总结通过这次的C语言课程设计,我对程序设计的过程有了很具体的认识,我明白了作为一个开发者应该具有坚持和吃苦耐劳的素质和乐于交流和共享的品德。而且由于在程序设计和代码编写的时候,程序中用到的很多函数是我们在课堂上并没有接触到甚至是没有听说过的,因此我们还得大量地参考有关书
2、籍,并且从互联网上查找函数等的相关信息。与此同时,与同学的交流更是并不可少的,这个也是作为将来的一个开发者必须要具备的素质,那就是团队合作精神。因为不论将来是走向企业还是做科学研发,系统和程序都是相当复杂和庞大的,我们不可能有能力能够一个人写了所有的代码,因此就得靠团队的协作。所以,从这次的程序课程设计中,我充分得感受到了这一点,有时候和同学的交流绝对是提高工作效率的最好途径之一。在后期,大体的代码写完了之后,我还经历了漫长的程序调试过程,因为是第一次真正地开始做一个小项目,所以在编写代码的过程中肯定存在着很多的错误。调试是一项非常需要耐心和细致观察能力的工作,有时候我们可能会一两个小时都修改
3、不了一个错误,这时候人是容易烦躁和选择放弃的,所以必须要有坚持不懈的精神,不然程序是不可能写的好的,我们最后也只能是半途而废。当然,值得一提的是,我已经摒弃了最开始学习编程时会缺漏标点符号等等的小错误,这在一定程度上提高了调试的效率,节省了时间。总的来说,通过这次的程序设计,我的收获良多!对C语言的认识和掌握也进入新的一个阶段。比如,switch语句的使用,我不但对switch语句的语法能够全面的掌握,而且能够很熟练的使用它。另一点,我开始能够较为熟练的使用数组和掌握函数的编写和调用的关系。本程序共用了九个函数,每一个函数的每一个语句都是经过不断的斟酌后才写出的,而且充分得利用的C语言的简洁高
4、效表达的特点,让代码在最短的长度内发挥出最多的作用,提高了程序运行得速度。我觉得C语言在这点上是非常的好用!八、参考文献李春葆 C语言程序设计教程(第二版) 清华大学出版社 2011李春葆 C语言程序设计教程(第二版)学习指导 清华大学出版社 2012刘汝佳 算法竞赛入门经典 清华大学出版社 2012九、程序清单#include time.hstdlib.hconio.hdos.hwindows.h#define xLine 70#define yLine 20#define full 100#define true 1#define false 0/*-*/void printScreen(
5、int level,int right,int sum,char pyLinexLine)/* 刷新屏幕的输出图像 */ int i,j; system(cls);Color E5 printf(等级:%d 按0退出;1暂停 得分:%d/%dn,level,right,sum);/* 输出现在的等级,击中数和现在已下落总数 */ printf (-n for (i=0;iyLine;i+) for(j=0;j0&level=0;i-)/* 从倒数第二行的最后一个字符开始开始向前遍历该数组内的元素,如果该位置非空则将该字符移动至下一行 */ for (j=xLine-2;j0;j-) w=pij
6、; pi+1j=w; /* for(j) */ /* for(i) */ return (miss);/* moving */int wordHit(char pyLinexLine)/*判断是否有字符从键盘键入。如果有,则从最后一行的最后一个元素开始遍历该数组,找出该字符,并把对应位置置空,且返回1。如果有输入,但屏幕上无对应项,或无输入则返回0*/ char key; if(kbhit()/* 判断用户是否从键盘键入字符。如果kbhit返回值为 */ key=getch(); if(key) if (key=0) leave();1按任意键继续打字游戏. getch(); for (i=y
7、Line;i-) for (j=xLine; if (key-32=pi-1j-1) pi-1j-1= return (true); /* for (j) */ /* if (key) */ return (false);/* wordHit */int result(int right)/*判断该次的成绩并输出对应的结果,询问用户是否继续,若继续,判断是否可以进入下一级别。*/ int score; char yn; score=right*100/full;Color f5 if (score=100)nnnnnnnnn 太完美了!你就是天才! else if (score=85)nnnn
8、nnnnn 很好!继续努力哦!=70)nnnnnnnnn 亲,你现在的打字效果很一般!nnnnnnnnn 你可能得加油咯!nn 还想继续吗?亲。nn 继续按Yn 结束按Nn for (;)/* void */ yn=getch(); switch (yn) case y : if (score=70) return(true); else return(false); /* case */n default :nnnnnnnnnn 请输入一个正确的选项: /* switch */ /* for */* result */int start()/* 进入程序时调用该函数,提示其操作。 char
9、c; while (true)Color a4nnn 欢迎来到鑫鑫打字通nnn 1.开始nn 2.游戏须知nn 0.退出 c=getch(); switch (c) leave();/* 用户选择退出,退出主程序 */2nnnnn 打击你在屏幕上看到的字母.n 按0退出.n 按1暂停n 1.开始n 0.退出 c=getch (); if (c=) return (true);void main() /*-*/ /*函数声明*/ void printScreen(int level,int right,int sum,char pyLinexLine); void leave(); int le
10、velChoice(int level); int newWord(int sum,char pyLinexLine); int moving(int miss,char pyLinexLine); int wordHit(char pyLinexLine); int result(int right); int start(); char pyLinexLine; int i,j,level,right,sum,n,m,miss; srand(time(NULL); start();i+)/* 初始化屏显数组 */ for (j=0; if (j=0|j=xLine-1) pij=20; l
11、evel=levelChoice(level);)/* 开始运行主程序 */ sum=0; right=0; miss=0;nn 按任意键开始游戏! m=getch(); printScreen(level,right,sum,p); for (n=0,m=4;n+) Sleep(2);/* 延迟 */ if(m%4=0)/* 当m为4的整数倍,即上一个字母下落3行时生成一个新的字母在首行并刷新屏幕 */ sum=newWord(sum,p); m=5; /*if(newWord)*/ if (wordHit(p)=true)/* 如果用户输入了字符并且正确,则使答对的数加一,并刷新屏幕 */ right+; /* if(wordHit) */ if(n=(37-4*level)/* 当n=37-4*level时,屏幕上的字母下落一行,并刷新屏幕,若最后一行有字母,则使错过数加一 */ n=0; m+; miss=moving(miss,p); /* if (moving)*/ if(right+miss=full) break;/* 当正确数加错误数等于预置的总字母个数时跳出该循环 */ if (result (right)=true&9)/* 当用户成绩在70以上,并且等级小于9时,等级加一,即进入下一级别 */ level+; /* for(sum,right) */
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1