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;
        }
    }
}

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。

 

效果演示:

C++打字小游戏

 

 

 

 

 C++打字小游戏

 

C++打字小游戏

上一篇:LeetCode——345. 反转字符串中的元音字母(Java)


下一篇:C#快速生成有序数组和将数组乱序