用C语言写个小游戏放松下。。。
游戏效果:
- 回车键——开始
- 0——结束
- 1——暂停
- 规则:键盘输入滑落的字母(不必区分大小写),每正确一个加10分,没来得及输入减10分,输入错误不加也不减。-50分以下,游戏失败。每提高100分,等级上升1,同时字母下落速度加快。
游戏源码:
#include<stdio.h>
#include<stdbool.h> //使用true时应包含
#include<Windows.h> //使用Sleep()
void EntrySpace(int num) //打印空格
{
int i;
for (i = 0; i < num; i++)
{
printf(" ");
}
}
void EntryEnter(int num) //打印回车
{
int i;
for (i = 0; i < num; i++)
{
printf("\n");
}
}
int AlphbetFall(int levels,int lines,int score,int col,int num) //字母下落及按键检测 返回分数
{ //等级 行 分数 列 字母偏移量
while (true)
{
EntryEnter(1);
lines++;
if (lines > 12)
{
lines = 0;
score -= 10;
if (score == -50) //成绩为-50时,游戏结束
{
system("cls");
EntryEnter(10);
EntrySpace(30);
printf("You lose!");
exit(0);
}
return score;
}
EntrySpace(col);
printf("%c", 'A' + num);
Sleep(300 - levels * 50); //延时函数,等级越高,速度越快
printf("\b \n");
if (kbhit())//kbhit()是一个C和C++函数,用于非阻塞地响应键盘输入事件。其中文可译为“键盘敲击”(keyboard hit)
{ //功能及返回值: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0。
char c = getch();
if (c == 'A' + num || c == 'a' + num) //检测按键值是否相同,相同成绩+10
{//不区分大小写
score += 10;
return score;
}
else if (c == '0') //按下0,游戏结束
{
system("cls");
EntryEnter(10);
EntrySpace(30);
printf("Game Over!");
exit(0);
}
else if (c == '1') //按下1,游戏暂停
{
EntryEnter(5);
EntrySpace(30);
//printf("Game is pause!");
printf("Pause"); //暂停标记
while (1)
{
if (kbhit())
{
char pause = getch(); //读取按键值
if (pause == '1')
{
printf("\b\b\b\b\b "); //消除暂停标记
break;
}
}
}
}
}
}
}
void GameRegullar() //游戏主界面
{
int levels = 0, score = 0, lines = 0, col = 0, num = 0;//等级、分数、行、列、字母偏移量
int flag = 1; //控制有游戏等级
while (true)
{
system("cls");
EntrySpace(10);
printf("levels:%-3d ", levels); //等级越高,下落越快
EntrySpace(10);
printf("score:%d \n", score); //成绩为-50游戏结束
EntrySpace(10);
printf("1---Pause"); //暂停
EntrySpace(12);
printf("0---Exit\n"); //退出
for (int i = 0; i < 60; i++)
printf("-");
num = rand() % 26; //下落的字母偏移量
col = rand() % 60; //下落字母的列位置
score = AlphbetFall(levels,lines, score, col, num);
if (score > 50 * flag) //成绩每提高100,等级上升1
{
levels++;
flag++;
}
else
flag--;
if (score < 50 * flag) //成绩每减少100,等级降低1
{
levels--;
flag--;
}
else
flag++;
}
}
int main()
{
EntryEnter(10);
EntrySpace(30);
printf("press anykey to start");
getchar(); //任意键开始游戏
system("cls");
GameRegullar();
return 0;
}