c语言下落的字母,C语言控制台小游戏之下落的字符

//使用true时应包含

#include//使用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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值