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

游戏截图:

原理:
使用随机数进行计算柱子的位置,按下空格键把小球上移,碰到柱子结束游戏。使用cmd数组保存杆子等元素的位置,在数组中绘图,然后再显示在输出控制台上。
灵感来源于https://www.cnblogs.com/xiaocaibiancheng/p/15254972.html
本来想用easyx写一个图形版本的然而太复杂就直接用控制台了

posted @ 2021-09-13 16:35  计算机知识杂谈  阅读(109)  评论(0编辑  收藏  举报