天天看點

C++ 飛行遊戲

源代碼:

#include<bits/stdc++.h>
#include<windows.h>
#include<conio.h>
using namespace std;

char temp;
int t=0,score=0,x=12,l1,l2,x1,x2;
char cmd[20][40];
void show(void){
	for(int i=0;i<20;i++){
		for(int j=0;j<40;j++){
			cout<<cmd[i][j];
		}
		cout<<endl;
	}
}
bool check(void){
	for(int i=0;i<20;i++){
		for(int j=0;j<40;j++){
			if(cmd[i][j]=='O')return true;
		}
	}
	return false;
}
void refresh(int status){
	if(status==1)cmd[x][2]='O',cmd[x+1][2]=' ';//--x之後執行的重新整理操作
	if(status==0)cmd[x][2]='O',cmd[x-1][2]=' ';//++x之後執行的重新整理操作 
	if(x1==0 && x2==0){
		x1=39;x2=39;l1=rand()%8;l2=rand()%8;score+=10;return;
	}
	for(int i=0;i<l1;i++){
		cmd[i][x1]='#';
	}
	for(int i=0;i<l2;i++){
		cmd[20-i][x2]='#';
	}
	if(x1!=39 && x2!=39){//把上次的填充為空格 
		for(int i=0;i<l1;i++){
			cmd[i][x1+1]=' ';
		}
		for(int i=0;i<l2;i++){
			cmd[20-i][x2+1]=' ';
		}
	}
}
void game_over(void){
	system("cls");
	printf("GAME OVER.YOUR SCORE IS:%04d\n",score);
	system("pause");
	exit(0);
}
int main(){
	system("title flying_game");
	srand(time(0));
	x1=39;x2=39;l1=rand()%11;l2=rand()%11;
	cmd[x][2]='O';
	printf("PRESS ANY KEY TO CONTINUE.\n");
	getch();
	for(;;){
		system("cls");
		printf("SCORE..%04d\n",score);
		show();
		if(clock()-t>200){
			--x1;--x2;++x;refresh(0);
			t=clock();
		}
		if(_kbhit()){
			temp=getch();
			if(temp==' '){
				--x;
			}
			refresh(1);
		}
		if(check()==false){
			game_over();
		}
	}
}
           

遊戲截圖:

C++ 飛行遊戲

原理:

使用随機數進行計算柱子的位置,按下空格鍵把小球上移,碰到柱子結束遊戲。使用cmd數組儲存杆子等元素的位置,在數組中繪圖,然後再顯示在輸出控制台上。

靈感來源于https://www.cnblogs.com/xiaocaibiancheng/p/15254972.html

本來想用easyx寫一個圖形版本的然而太複雜就直接用控制台了