实验课上无聊编的打飞机

以下是代码:

#include <iostream>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
using namespace std;

const int maxi = 35, maxj = 50;

char gamemap[maxi+3][maxj+3][2];
int spawndi = 0, spawnwp = 0;
int i, j;
int mei, mej;
int die = 0;
int ab = 0;
int score = 0;
 
int main(void)
{
	memset(gamemap, ' ', sizeof(gamemap));
	
	for(i = 0; i <= maxi+1; i++)
		for(j = 0; j <= maxj+1; j++)
		for(ab = 0; ab <= 1; ab++)
			if(i == 0 || j == 0 || i == maxi+1 || j == maxj+1) gamemap[i][j][ab] = '#';
			else if(j == maxj + 2) gamemap[i][j][ab] = '\n';
			else if(i == maxi + 2) gamemap[i][j][ab] = '\0';

	mei = maxi;
	mej = maxj/2;//location me
	gamemap[mei][mej][0] = 'A';	gamemap[mei][mej][1] = 'A';

	while(1)
	{
		char color[21] = "color ";
		char colora[2] = {'0' , '\0'};
		char colorb[2] = {'0' + rand()%10, '\0'};
		strcat(color, colora);
		strcat(color, colorb);
		puts(color);
		system(color); 
		
		
		
		
		
		ab = (ab+1) % 2;
		if(spawndi++ % 1 == 0)
		{
			int t = rand()%maxj+1;
			gamemap[1][t][0] = 'M';	gamemap[1][t][1] = 'M';			
		}

		

		for(i = 1; i <= maxi; i++)
		{
			if(die == 1) break;

			for(j = 1; j <= maxj; j++)
			{
				if(gamemap[i][j][(ab+1)%2] == 'M')
				{
					if(gamemap[i+1][j][(ab+1)%2] == 'A')
					{
						die = 1;
						break;
					}

					if(gamemap[i+1][j][(ab+1)%2] != '|' && i < maxi)//die and board
					{
						gamemap[i+1][j][ab] = 'M';
					//	cout<<i+1<<" "<<j<<endl; getchar();
						gamemap[i][j][ab] = ' ';
					}
					else if(gamemap[i+1][j][(ab+1)%2] != '|') score += rand()%rand();
				
				}

				if(gamemap[i][j][(ab+1)%2] == '|')
				{
					if(gamemap[i][j][ab] == 'M') score += rand()%rand();
					gamemap[i][j][ab] = ' ';
					if(i != 1)	gamemap[i-1][j][ab] = '|';//bord
				}

				if(gamemap[i][j][(ab+1)%2] == 'A')//self
				{
					if((spawnwp++) % 6 == 0)
						gamemap[i-1][j][ab] = '|';
				}
		
			}

		}


		char move = 's';
		if(kbhit())
		{
			move = getch();
			while(kbhit()) getch();
		}

		gamemap[mei][mej][ab] = ' ';
		switch(move)
		{
			case 'A': if(!(mej-1)%mej) mej = maxj; else mej = ((mej-1)%maxj);break;
			case 'W': if(!(mej-1)%mej) mei = maxi; else mei = ((mei-1)%maxi);break;
			case 'S': if(!(mej-1)%mej) mei = maxi; else mei = ((mei+1)%maxi);break;
			case 'D': if(!(mej+1)%mej) mej = maxj; else mej = ((mej+1)%maxj);break;//NO BOARD QUESTION
			case 'X': if(score = (score-rand()%rand()) >= 0) for(j = 1; j <= maxj; j++) {if(rand()%3 == 0) gamemap[maxi-1][j][ab] = '|';}break;
			case 'C': if(score = (score-3*(rand()%rand())) >= 0) for(i = 2; i <= maxi; i++) gamemap[i][mej][ab] = '|';break;
			default: break;
		}
		gamemap[mei][mej][ab] = 'A';
		
		
		
		if(score >= 500000 && score <= 100000000) if(rand() % 3 == 0)for(i = 1; i <= maxi/2; i++) for(j = 1; j <= maxj; j++) gamemap[i][j][ab] = 'M';
		
		system("cls");

		for(i = 1; i <= maxi; i++)
		{
			for(j = 1; j <= maxj; j++)
			{
				cout<<gamemap[i][j][ab];
			}
			cout<<endl;
		}
		cout<<"ENERAGY能量:"<<score<<endl;
		for(i = 1; i <= 200000000; i++);
//		puts(gamemap[1]);
		
		//另一个世界已经被使用完,清空另一个世界 
		for(i = 1; i <= maxi; i++)
			for(j = 1; j <= maxj; j++)
				gamemap[i][j][(ab+1)%2] = ' ';
				
		if(die == 1) break;
	
	}

	cout<<"DIE!!!"<<endl;
	while(getchar() != '0');
}

hhhh在课上其实并没有编出来
我的算法有一个巨大的漏洞,在一次地图运算中敌军一排排被推了下来导致敌军直接撞到了底部
(/ω\)
还是作为一个回忆吧

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值