天天看點

C++吃金币小遊戲

上圖:

C++吃金币小遊戲

遊戲規則:按A,D鍵向左和向右移動小棍子,$表示金币,0表示炸彈,吃到金币+10分,吃到炸彈就GAME OVER。

大體思路和打字遊戲相同,都是使用數組,refresh和run函數進行,做了一些微調。

#include<bits/stdc++.h>
#include<conio.h>
#include<windows.h>
using namespace std;
char str[]="     $$$00";//随機掉落的字元,空格是沒有,$是金币, 0是炸彈 
int score=0;
char a[8][8];
int now_x=0;
int start_time;
char temp;

int randbetween(int bottom,int top){
    return rand()%(top-bottom)+bottom;
}
void refresh(){
    for(int i=7;i>0;i--){
        for(int j=0;j<8;j++){
            a[i][j]=a[i-1][j];
        }
    }
    
    for(int i=0;i<5;i++){
        a[0][i]=str[randbetween(0,9)];
    }
    
    system("cls");
    printf("SCORE..%08d\n",score);
    
    for(int i=0;i<8;i++){
        for(int j=0;j<8;j++){
            printf("%c ",a[i][j]);
        }
        printf("\n");
    }
    for(int i=0;i<now_x;i++)printf("  ");
    printf("|");
    
    if(a[7][now_x]=='$')score+=10;
    else if(a[7][now_x]=='0'){
        printf("GAME OVER\n");exit(0);
    }
    
    a[7][now_x]=' ';
    
}

void run(){
    system("cls");
    printf("SCORE..%08d\n",score);
    
    for(int i=0;i<8;i++){
        for(int j=0;j<8;j++){
            printf("%c ",a[i][j]);
        }
        printf("\n");
    }
    for(int i=0;i<now_x;i++)printf("  ");
    printf("|");
    
    if(a[7][now_x]=='$')score+=10;
    else if(a[7][now_x]=='0'){
        printf("GAME OVER\n");exit(0);
    }
    
    a[7][now_x]=' ';
}

int main(){
    srand(time(0));
    for(;;){
        start_time=clock();
        refresh();
        while(clock()-start_time<=2000){//3秒以内 
            if(_kbhit()){
                temp=getch();
                if(temp=='A')now_x--;
                else if(temp=='D')now_x++;
                run();
            }
        }
    }
}