以下是代码:
#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在课上其实并没有编出来
我的算法有一个巨大的漏洞,在一次地图运算中敌军一排排被推了下来导致敌军直接撞到了底部
(/ω\)
还是作为一个回忆吧