+ -
当前位置:首页 → 问答吧 → c++ 打字游戏

c++ 打字游戏

时间:2011-12-13

来源:互联网

DOS时代有一款有趣的打字练习程序,不同的字符从屏幕上方落下,通过敲击键盘上相应的字符键,就可以把屏幕上对应的字符消去,如果字符掉落到屏幕的最下方而没有被消去,则认定为错过。当错过一定的个数,或掉落足够多的字符后,程序停止,并统计出准确率等信息。其效果见文件夹中的演示程序。演示程序并不完整,请你仿照其效果用C++语言编写一个打字练习程序。

要求内容
基本要求 实现基本功能*,没有明显的Bug
程序能做到模块化,代码风格好
文档格式规范,描述详细
进阶要求 使用链表存储程序中的动态数据
使用面向对象的设计方法
用户界面和显示方面的优化(如菜单选项,界面美化,额外的信息提示等)
游戏性的提升(如关卡的设计,玩家通过某个难度后,自动进入下一个难度等)
基本功能包括:
1. 实现字符的随机产生,掉落。
2. 实现击键消去字符,以及字符落到一定位置后自动消失并判定为错过。
3. 实现失败条件的判定及失败提示。
4. 基本的统计功能,包括产生的字符数,错过的字符数,正确率。

可能用到的几个函数如下:
int kbhit(); 返回1,表示有键盘按下,返回0,表示无键盘按下,与getch不同,它是非阻塞的,即这个函数不会使程序的执行中断。
int getch(void); getch有一个int型的返回值.当程序调用getch时.程序就等着用户按键.一旦用户按键,getch就读入一个字符.getch函数的返回值是用户输入的第一个字 符的ASCII码,如出错返回-1, 输入的字符不会回显在屏幕上, 需要#include <conio.h>。
void system(char* command); 调用系统命令,用system("cls")即可清除屏幕上的所有字符,需要#include <stdlib.h>。
void Sleep(unsigned milliseconds); 让程序暂停milliseconds 毫秒,需要#include <windows.h>。
另外,需要自行实现一个函数:void gotoxy(int x, int y); 用途为把光标移动到屏幕的制定位置,需要#include < windows.h>。实现代码如下:
void gotoxy(int x,int y)  
{  
  COORD pos;
  pos.X=x;  
  pos.Y=y;  
  ::SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);  
}
具体原理不介绍,复制粘贴直接使用即可。

如果想进一步了解以上几个函数的具体使用,请使用搜索引擎。
此题和贪吃蛇一题偏重工程实现,如果选择该题的同学用心,实际上有许多文章可作。这两题涉及到动画的实现,链表的实现,一些基本的算法以及大程序的规划和设计,有一定工作量,因此满分都是100分。特别注意,这两题的基本要求不高,但所占比重也不高,如果要得到高分,需要多用心改进程序。

作者: huangxiaobo1991   发布时间: 2011-12-13

作者: ouyh12345   发布时间: 2011-12-13

楼主,这个100分不止吧~~起码要1000分才能做出来~~

作者: wallwind   发布时间: 2011-12-13