C++打字小游戏
从@小蔡编程 那里获得的灵感,原文地址:https://www.cnblogs.com/xiaocaibiancheng/p/15158997.html
那篇文章是说python写打字游戏的,本文就用C++语言写一遍。
废话少说,先上代码:
#include<bits/stdc++.h> #include<windows.h> #include<conio.h> using namespace std; int score=0; char a[5][5]; int start_time; char temp; int randbetween(int bottom,int top){ return rand()%(top-bottom)+bottom; } void refresh(){ system("cls"); printf("SCORE..%08d\n",score); for(int i=4;i>0;i--){//向下移动 for(int j=0;j<5;j++){ a[i][j]=a[i-1][j]; } } for(int i=0;i<5;i++){ a[0][i]=(char)randbetween('a','z');//生成随机字符 } for(int i=0;i<5;i++){ if(a[4][i]!='\0'){//字符到了最后一行 cout<<"GAME OVER";exit(0); } } for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(a[i][j]!='\0')printf("%c ",a[i][j]); else printf(" "); } printf("\n"); } } void run(char c){ for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(a[i][j]==c)a[i][j]='\0',score+=10; } } system("cls"); printf("SCORE..%08d\n",score); for(int i=0;i<5;i++){ for(int j=0;j<5;j++){ if(a[i][j]!='\0')printf("%c ",a[i][j]); else printf(" "); } printf("\n"); } } int main(){ srand(time(0)); system("title game"); for(;;){ start_time=clock(); refresh(); while(clock()-start_time<=3000){//3秒以内 if(_kbhit()){ temp=getch(); run(temp); } } } /*for(;;){ cout<<(char)randbetween('a','z'); getchar(); }*/ return 0; }
简单说下代码,
每隔一段时间需要刷新一下屏幕,刷新也就是refresh。因此我们把这些内容写进refresh函数。主要用途:
1,把每一行的元素往下移动
2,最上面一行加入随机字符,randbetween其实是模仿excel中的一个函数,基本还是调用rand标准库函数。
3,如果最下面一行有字符还没有消除,那么就game over
然后是run函数,用于消除字符。我们反复使用getch()函数进行输入字符,通过run进行判断字符是否在数组中,如果在数组中就把它消除掉。
main函数中,clock()-start_time<=3000是指和上一次刷新时间相隔3000ms,也就是3秒。这样就可以指定3秒刷新一次。
system("title game")用于把标题栏设置为game。
效果演示: