#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#include <windows.h>
#include "ConsoleOut.h"
#pragma comment(lib, "ConsoleOut.lib")
int nScore=0,nDifficult=5,Erro1=5,Erro=0;//声明定义变量:分数(nScore)、级别(nDifficult)
const int nScoreStep=5;//每次得分
char Input='0'; //获取用户输入信息
void PrintScor() //打印分数
{
MoveCursorTo(0,23);
printf("您目前得分:%-5d",nScore);
MoveCursorTo(50,23);
printf("允许错误次数:%d 已错误次数:%d",Erro1,Erro);
}
void menu() //开始游戏前菜单
{
MoveCursorTo(30,6);
printf("欢迎进入打字游戏:");
MoveCursorTo(32,7);
printf("请选择游戏难度:\n");
MoveCursorTo(32,8);
printf(" 简单(1)\n");
MoveCursorTo(32,9);
printf(" 一般(2)\n");
MoveCursorTo(32,10);
printf(" 困难(3)\n");
MoveCursorTo(32,11);
printf(" 退出(0)\n");
CloseCursor();
nDifficult=0;
Erro=0;
}
void Upleavle()
{
system("cls");
MoveCursorTo(30,8);
printf("您已满足晋级要求,是否选择晋级?");
MoveCursorTo(26,9);
printf("(晋级后难度会有所增加,但更有挑战性哦!)");
MoveCursorTo(35,10);
printf("(y/n)");
if(_getch()=='y')
{
nDifficult--;
system("cls");
MoveCursorTo(32,10);
printf("您已选择晋级!Go on!");
Sleep(1000);
}
else
{
system("cls");
MoveCursorTo(35,10);
printf("您未选择晋级!继续加油!");
Sleep(1000);
}
system("cls");
}
void Gameover()
{
system("cls");
MoveCursorTo(30,3);
printf("恭喜您已通关!");
MoveCursorTo(30,4);
printf("重玩(y)\t退出(n)");
MoveCursorTo(0,6);
while(1)
{
printf(" ((`'-\"``\"\"-'`))\n");
printf(" ) - - (\n");
printf(" / (o _ o) \\\n");
printf(" \\ ( 0 ) /\n");
printf(" _'-.._'='_..-'_\n");
printf(" /`;#'#'#.-.#'#'#;`\\\n");
printf(" \\_)) '#' ((_/\n");
printf(" #. ☆ ☆ ☆ #\\\n");
printf(" '#. 你真棒! .#'\n");
printf(" / '#. .#' \\\n");
printf(" _\\ \\'#. .#'/ /_\n");
printf(" (((___) '#' (___)\n");
if(_getch()=='y')
{
nScore=0;
system("cls");
return;
}
else
exit(1);
}
}
void Fail() //游戏失败
{
system("cls");
MoveCursorTo(35,10);
printf("Game Over!\n");
MoveCursorTo(33,8);
printf("您的最后得分为:%d\n",nScore);
Sleep(2000);
nScore=0;
}
void Start()
{
while(1) //程序的最外循环,控制程序的结束及游戏的重新开始
{
if(Erro>=5)
{
Fail(); //错误太多调用游戏失败函数
return;
}
else
{
if(nScore%100==0 && nScore!=0 && nDifficult>1 && nScore!=500)
Upleavle();
if(nScore==500)
{
Gameover();
return;
}
PrintScor(); //调用打印分数的函数
srand(time(NULL)); //用时间控制随机种子
int Y=0,X=rand()%80;
int cText=rand()%26+'A';
if(rand()%2) cText+=32;
while(Y<20) //字符下落的控制循环
{
MoveCursorTo(X,Y++);
printf("%c\n",cText);
Sleep(200*(nDifficult/5.0));
MoveCursorTo(X,Y-1);
printf(" ");
if(Y>=20)
{
Fail(); //下落超限调用失败函数
return;
}
if(_kbhit()) //键盘点击事件
{
if(_getch()==cText) //判断按下的字符与随机产生的字符是否一致
{
MoveCursorTo(X,Y-1);
printf(" ");
nScore+=nScoreStep;
break;
}
else
{
MoveCursorTo(X,Y-1);
printf(" ");
Erro++;
break;
}
}
}
}
}
}
void Select() //选择难度函数
{
if(Input=='1' || Input=='2' || Input=='3')
{
system("cls");
switch(Input)
{
case '1':
MoveCursorTo(22,9);
printf("您选择的是【简单】游戏模式,祝您游戏愉快!");
nDifficult=5;
Sleep(1500);
break;
case '2':
MoveCursorTo(22,9);
printf("您选择的是【一般】游戏模式,祝您游戏愉快!");
nDifficult=3;
Sleep(1500);
break;
case '3':
MoveCursorTo(22,9);
nDifficult=1;
printf("您选择的是【困难】游戏模式,祝您游戏愉快!");
Sleep(1500);
}
system("cls");
Start(); //调用开始游戏的函数
}
else
{
system("cls");
MoveCursorTo(30,9);
printf("输入有误!请输入0-3之间的数字!");
Sleep(1500);
system("cls");
}
}
void main()
{
while(1) //开始游戏前菜单
{
if(nScore<0)
{
MoveCursorTo(26,11);
printf("游戏结束!您是否还要继续?(y/n)\n");
if(_getch()=='y')
{
nScore=0;
system("cls");
}
else
{
system("cls");
return;
}
}
if(nScore==0)
menu();
Input=getch();
if(Input=='0') //菜单控制程序退出
{
system("cls");
MoveCursorTo(30,9);
printf("确认退出游戏?(y/n)");
if(_getch()=='y')
{
system("cls");
return;
}
else
{
system("cls");
}
}
else
{
Select(); //调用选择难度的函数
system("cls");
}
}
}
- 1
- 2
前往页