|
|
#include <stdio.h>
|
|
|
#include <conio.h>
|
|
|
#include <windows.h>
|
|
|
#include <time.h>
|
|
|
#include<stdlib.h>
|
|
|
#include<math.h>
|
|
|
struct tank
|
|
|
{
|
|
|
int zb_x,zb_y,zhuangtai,Hp,fangxiang,ep1,ep2,color;
|
|
|
}play1={0,0,0,0,0,0,0,0},play2={0,0,0,0,0,0,0,0,};
|
|
|
struct tank enemy[10]={0
|
|
|
};;
|
|
|
struct jidileixing
|
|
|
{
|
|
|
int zb_x,zb_y,zhuangtai;
|
|
|
}jidi[3]={0,0,0,0,0,0,0,0,0};;
|
|
|
int map_down[40][75];int map_mid[40][75];
|
|
|
int gb_x,gb_y;
|
|
|
int mod; char modzi[20][10]={"諾 ","詩 ","蚸 ","碩 ","輿 ","1p ","2p ","菩 ","1p價華","2p價華","菩價華"};
|
|
|
int quit;
|
|
|
void HideCursor()
|
|
|
{
|
|
|
CONSOLE_CURSOR_INFO cursor_info = { 1, 0 };
|
|
|
SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE), &cursor_info);
|
|
|
}
|
|
|
void gotoxy(int x, int y)
|
|
|
{
|
|
|
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
|
|
|
COORD pos;
|
|
|
pos.X = x;
|
|
|
pos.Y = y;
|
|
|
SetConsoleCursorPosition(handle, pos);
|
|
|
}
|
|
|
int title()
|
|
|
{
|
|
|
FILE *fp;int flag=38;
|
|
|
fopen("map.txt","r");
|
|
|
for(int i=0;i<40;i++)
|
|
|
for(int o=0;o<75;o++)
|
|
|
fscanf(fp,"%d",&map_down[i][o]);
|
|
|
fclose(fp);
|
|
|
while(flag)
|
|
|
{
|
|
|
HideCursor();
|
|
|
gotoxy(0,0);
|
|
|
for(int i=0;i<25;i++)
|
|
|
for(int o=38-flag;o<75-flag;o++)
|
|
|
{
|
|
|
if(map_down[i][o]==0) printf(" ");
|
|
|
else if(map_down[i][o]==1) printf("←");
|
|
|
}
|
|
|
Sleep(200);
|
|
|
flag--;
|
|
|
}
|
|
|
return 0;
|
|
|
}
|
|
|
int origin()
|
|
|
{
|
|
|
play1.zhuangtai=0;play2.zhuangtai=0;
|
|
|
for(int i=0;i<10;i++)
|
|
|
{
|
|
|
enemy[i].zhuangtai=0;
|
|
|
enemy[i].zb_x=0;
|
|
|
enemy[i].zb_y=0;
|
|
|
enemy[i].fangxiang=0;
|
|
|
}
|
|
|
for(int i=0;i<3;i++)
|
|
|
{
|
|
|
jidi[i].zb_x=0;
|
|
|
jidi[i].zb_y=0;
|
|
|
jidi[i].zhuangtai=0;
|
|
|
}
|
|
|
for(int i=0;i<40;i++)
|
|
|
{
|
|
|
for(int o=0;o<75;o++)
|
|
|
{
|
|
|
map_down[i][o]=0;map_mid[i][o]=0;
|
|
|
}
|
|
|
}
|
|
|
quit=0;
|
|
|
}
|
|
|
int gengxin_bianji()
|
|
|
{
|
|
|
int flag1=0,flag2=0,flag3=0;
|
|
|
for(int i=0;i<40;i++)
|
|
|
for(int o=0;o<75;o++)
|
|
|
map_mid[i][o]=0;
|
|
|
for(int i=0;i<3;i++)
|
|
|
{
|
|
|
if(jidi[i].zhuangtai==1)
|
|
|
{
|
|
|
map_mid[jidi[i].zb_x][jidi[i].zb_y]=39+i;
|
|
|
}
|
|
|
}
|
|
|
if(play1.zhuangtai==1)
|
|
|
{
|
|
|
map_mid[play1.zb_x][play1.zb_y]=1;
|
|
|
map_mid[play1.zb_x+1][play1.zb_y]=1;
|
|
|
map_mid[play1.zb_x-1][play1.zb_y]=1;
|
|
|
map_mid[play1.zb_x][play1.zb_y+1]=1;
|
|
|
map_mid[play1.zb_x+1][play1.zb_y+1]=1;
|
|
|
map_mid[play1.zb_x-1][play1.zb_y+1]=1;
|
|
|
map_mid[play1.zb_x][play1.zb_y-1]=1;
|
|
|
map_mid[play1.zb_x+1][play1.zb_y-1]=1;
|
|
|
map_mid[play1.zb_x-1][play1.zb_y-1]=1;
|
|
|
map_mid[play1.zb_x-2][play1.zb_y]=1;
|
|
|
map_down[play1.zb_x][play1.zb_y]=0;
|
|
|
map_down[play1.zb_x+1][play1.zb_y]=0;
|
|
|
map_down[play1.zb_x-1][play1.zb_y]=0;
|
|
|
map_down[play1.zb_x][play1.zb_y+1]=0;
|
|
|
map_down[play1.zb_x+1][play1.zb_y+1]=0;
|
|
|
map_down[play1.zb_x-1][play1.zb_y+1]=0;
|
|
|
map_down[play1.zb_x][play1.zb_y-1]=0;
|
|
|
map_down[play1.zb_x+1][play1.zb_y-1]=0;
|
|
|
map_down[play1.zb_x-1][play1.zb_y-1]=0;
|
|
|
map_down[play1.zb_x-2][play1.zb_y]=0;
|
|
|
}
|
|
|
if(play2.zhuangtai==1)
|
|
|
{
|
|
|
map_mid[play2.zb_x][play2.zb_y]=1;
|
|
|
map_mid[play2.zb_x+1][play2.zb_y]=1;
|
|
|
map_mid[play2.zb_x-1][play2.zb_y]=1;
|
|
|
map_mid[play2.zb_x][play2.zb_y+1]=1;
|
|
|
map_mid[play2.zb_x+1][play2.zb_y+1]=1;
|
|
|
map_mid[play2.zb_x-1][play2.zb_y+1]=1;
|
|
|
map_mid[play2.zb_x][play2.zb_y-1]=1;
|
|
|
map_mid[play2.zb_x+1][play2.zb_y-1]=1;
|
|
|
map_mid[play2.zb_x-1][play2.zb_y-1]=1;
|
|
|
map_mid[play2.zb_x-2][play2.zb_y]=1;
|
|
|
map_down[play2.zb_x][play2.zb_y]=0;
|
|
|
map_down[play2.zb_x+1][play2.zb_y]=0;
|
|
|
map_down[play2.zb_x-1][play2.zb_y]=0;
|
|
|
map_down[play2.zb_x][play2.zb_y+1]=0;
|
|
|
map_down[play2.zb_x+1][play2.zb_y+1]=0;
|
|
|
map_down[play2.zb_x-1][play2.zb_y+1]=0;
|
|
|
map_down[play2.zb_x][play2.zb_y-1]=0;
|
|
|
map_down[play2.zb_x+1][play2.zb_y-1]=0;
|
|
|
map_down[play2.zb_x-1][play2.zb_y-1]=0;
|
|
|
map_down[play2.zb_x-2][play2.zb_y]=0;
|
|
|
}
|
|
|
for(int i=0;i<10;i++)
|
|
|
{
|
|
|
if(enemy[i].zhuangtai==1)
|
|
|
{
|
|
|
map_mid[enemy[i].zb_x][enemy[i].zb_y]=7;
|
|
|
map_mid[enemy[i].zb_x+1][enemy[i].zb_y]=7;
|
|
|
map_mid[enemy[i].zb_x-1][enemy[i].zb_y]=7;
|
|
|
map_mid[enemy[i].zb_x][enemy[i].zb_y+1]=7;
|
|
|
map_mid[enemy[i].zb_x+1][enemy[i].zb_y+1]=7;
|
|
|
map_mid[enemy[i].zb_x-1][enemy[i].zb_y+1]=7;
|
|
|
map_mid[enemy[i].zb_x][enemy[i].zb_y-1]=7;
|
|
|
map_mid[enemy[i].zb_x+1][enemy[i].zb_y-1]=7;
|
|
|
map_mid[enemy[i].zb_x-1][enemy[i].zb_y-1]=7;
|
|
|
map_down[enemy[i].zb_x][enemy[i].zb_y]=0;
|
|
|
map_down[enemy[i].zb_x+1][enemy[i].zb_y]=0;
|
|
|
map_down[enemy[i].zb_x-1][enemy[i].zb_y]=0;
|
|
|
map_down[enemy[i].zb_x][enemy[i].zb_y+1]=0;
|
|
|
map_down[enemy[i].zb_x+1][enemy[i].zb_y+1]=0;
|
|
|
map_down[enemy[i].zb_x-1][enemy[i].zb_y+1]=0;
|
|
|
map_down[enemy[i].zb_x][enemy[i].zb_y-1]=0;
|
|
|
map_down[enemy[i].zb_x+1][enemy[i].zb_y-1]=0;
|
|
|
map_down[enemy[i].zb_x-1][enemy[i].zb_y-1]=0;
|
|
|
if(enemy[i].fangxiang==0)
|
|
|
{
|
|
|
map_mid[enemy[i].zb_x+2][enemy[i].zb_y]=1;
|
|
|
map_down[enemy[i].zb_x+2][enemy[i].zb_y]=0;
|
|
|
}
|
|
|
if(enemy[i].fangxiang==1)
|
|
|
{
|
|
|
map_mid[enemy[i].zb_x-2][enemy[i].zb_y]=1;
|
|
|
map_down[enemy[i].zb_x-2][enemy[i].zb_y]=0;
|
|
|
}
|
|
|
if(enemy[i].fangxiang==2)
|
|
|
{
|
|
|
map_mid[enemy[i].zb_x][enemy[i].zb_y-2]=1;
|
|
|
map_down[enemy[i].zb_x][enemy[i].zb_y-2]=0;
|
|
|
}
|
|
|
if(enemy[i].fangxiang==3)
|
|
|
{
|
|
|
map_mid[enemy[i].zb_x][enemy[i].zb_y+2]=1;
|
|
|
map_down[enemy[i].zb_x][enemy[i].zb_y+2]=0;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
for(int i=0;i<40;i++)
|
|
|
for(int o=0;o<75;o++)
|
|
|
{
|
|
|
if(map_mid[i][o]==39) flag1=1;
|
|
|
if(map_mid[i][o]==40) flag2=1;
|
|
|
if(map_mid[i][o]==41) flag3=1;
|
|
|
}
|
|
|
if(flag1==1) jidi[0].zhuangtai=1;else jidi[0].zhuangtai=0;
|
|
|
if(flag2==1) jidi[1].zhuangtai=1;else jidi[1].zhuangtai=0;
|
|
|
if(flag3==1) jidi[2].zhuangtai=1;else jidi[2].zhuangtai=0;
|
|
|
}
|
|
|
int qingchu()
|
|
|
{
|
|
|
if(play1.zb_x==gb_x&&play1.zb_y==gb_y&&play1.zhuangtai==1)
|
|
|
{
|
|
|
play1.zhuangtai=0;
|
|
|
}
|
|
|
if(play2.zb_x==gb_x&&play2.zb_y==gb_y&&play2.zhuangtai==1)
|
|
|
{
|
|
|
play2.zhuangtai=0;
|
|
|
}
|
|
|
for(int i=0;i<10;i++)
|
|
|
if(enemy[i].zb_x==gb_x&&enemy[i].zb_y==gb_y&&enemy[i].zhuangtai==1)
|
|
|
{
|
|
|
enemy[i].zhuangtai=0;
|
|
|
}
|
|
|
for(int i=0;i<3;i++)
|
|
|
if(jidi[i].zhuangtai==1&&jidi[i].zb_x==gb_x&&jidi[i].zb_y==gb_y)
|
|
|
{
|
|
|
jidi[i].zhuangtai=0;
|
|
|
}
|
|
|
map_down[gb_x][gb_y]=0;
|
|
|
}
|
|
|
int fangzhi()
|
|
|
{
|
|
|
if(map_mid[gb_x][gb_y]==0)
|
|
|
{
|
|
|
if(mod==0) map_down[gb_x][gb_y]=0;
|
|
|
if(mod==1) map_down[gb_x][gb_y]=1;
|
|
|
if(mod==2) map_down[gb_x][gb_y]=2;
|
|
|
if(mod==3) map_down[gb_x][gb_y]=4;
|
|
|
if(mod==4) map_down[gb_x][gb_y]=5;
|
|
|
}
|
|
|
if(mod==5)
|
|
|
{
|
|
|
if(play2.zhuangtai==0||pow(play2.zb_x-gb_x,2)+pow(play2.zb_y-gb_y,2)>16)
|
|
|
{
|
|
|
if(gb_x>1&&gb_x<39&&gb_y>0&&gb_y<74&&play1.zhuangtai==0)
|
|
|
{
|
|
|
play1.zb_x=gb_x;
|
|
|
play1.zb_y=gb_y;
|
|
|
play1.fangxiang=0;
|
|
|
play1.Hp=5;
|
|
|
play1.zhuangtai=1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(mod==6)
|
|
|
{
|
|
|
if(play1.zhuangtai==0||pow(gb_x-play1.zb_x,2)+pow(gb_y-play1.zb_y,2)>16)
|
|
|
{
|
|
|
if(gb_x>1&&gb_x<39&&gb_y>0&&gb_y<74&&play2.zhuangtai==0)
|
|
|
{
|
|
|
play2.zb_x=gb_x;
|
|
|
play2.zb_y=gb_y;
|
|
|
play2.fangxiang=0;
|
|
|
play2.Hp=5;
|
|
|
play2.zhuangtai=1;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(mod==7)
|
|
|
{
|
|
|
for(int i=0;i<10;i++)
|
|
|
{
|
|
|
if(enemy[i].zhuangtai==0)
|
|
|
{
|
|
|
if(gb_x>1&&gb_x<39&&gb_y>0&&gb_y<74)
|
|
|
{
|
|
|
enemy[i].zhuangtai=1;
|
|
|
enemy[i].zb_x=gb_x;
|
|
|
enemy[i].zb_y=gb_y;
|
|
|
enemy[i].Hp=3;
|
|
|
enemy[i].fangxiang=(rand()%4);
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
if(mod==8&&jidi[0].zhuangtai==0)
|
|
|
{
|
|
|
jidi[0].zb_x=gb_x;
|
|
|
jidi[0].zb_y=gb_y;
|
|
|
jidi[0].zhuangtai=1;
|
|
|
}
|
|
|
if(mod==9&&jidi[1].zhuangtai==0)
|
|
|
{
|
|
|
jidi[1].zb_x=gb_x;
|
|
|
jidi[1].zb_y=gb_y;
|
|
|
jidi[1].zhuangtai=1;
|
|
|
}
|
|
|
if(mod==10&&jidi[2].zhuangtai==0)
|
|
|
{
|
|
|
jidi[2].zb_x=gb_x;
|
|
|
jidi[2].zb_y=gb_y;
|
|
|
jidi[2].zhuangtai=1;
|
|
|
}
|
|
|
}
|
|
|
int key_bianji()
|
|
|
{
|
|
|
char input;
|
|
|
if(kbhit())
|
|
|
{
|
|
|
input=getch();
|
|
|
if(input=='p') quit=1;
|
|
|
if((input=='w'||input=='W')&&gb_x>0) gb_x--;
|
|
|
if((input=='s'||input=='S')&&gb_x<39) gb_x++;
|
|
|
if((input=='a'||input=='A')&&gb_y>0) gb_y--;
|
|
|
if((input=='d'||input=='D')&&gb_y<74) gb_y++;
|
|
|
if((input=='j'||input=='J')) fangzhi();
|
|
|
if((input=='k'||input=='K')) qingchu();
|
|
|
if(input==75)
|
|
|
{
|
|
|
if(mod==0) mod=10;
|
|
|
else mod--;
|
|
|
}
|
|
|
if(input==77)
|
|
|
{
|
|
|
if(mod==10) mod=0;
|
|
|
else mod++;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
int show_bianji()
|
|
|
{
|
|
|
gotoxy(0,0);
|
|
|
for(int q=0;q<70;q++) printf(" ");printf("--秶芞馱撿--");for(int a=0;a<70;a++) printf(" "); printf("ピ遙耀輸:源砃瑩\n");
|
|
|
for(int w=0;w<152;w++) printf("#");printf("諷秶嫖梓:W,S,A,D\n");
|
|
|
for(int i=0;i<40;i++)
|
|
|
{
|
|
|
printf("|");
|
|
|
for(int o=0;o<75;o++)
|
|
|
{
|
|
|
if(i==gb_x&&o==gb_y) printf("ㄚ");
|
|
|
else
|
|
|
{
|
|
|
if(map_mid[i][o]==0)
|
|
|
{
|
|
|
if(map_down[i][o]==0) printf(" ");
|
|
|
else if(map_down[i][o]==1) printf("←");
|
|
|
else if(map_down[i][o]==2) printf("泬");
|
|
|
else if(map_down[i][o]==4) printf("↗");
|
|
|
else if(map_down[i][o]==5) printf("⊕");
|
|
|
}
|
|
|
if(map_mid[i][o]==1) printf("↓");
|
|
|
if(map_mid[i][o]==7) printf("↓");
|
|
|
if(map_mid[i][o]==39) printf("1b");
|
|
|
if(map_mid[i][o]==40) printf("2b");
|
|
|
if(map_mid[i][o]==41) printf("3b");
|
|
|
}
|
|
|
}
|
|
|
printf("|");
|
|
|
if(i==0) printf("賒萸:j");
|
|
|
if(i==1) printf("<EFBFBD>萸:k");
|
|
|
if(i==2) printf("俇傖:p");
|
|
|
if(i==3) printf("絞ゴ耀輸ㄩ%s",modzi[mod]);
|
|
|
if(i==4) printf(" ←泬↗⊕1p2p菩1b2b3b");
|
|
|
if(i==5)
|
|
|
{
|
|
|
if(mod==0) printf("∥ ");
|
|
|
if(mod==1) printf(" ∥ ");
|
|
|
if(mod==2) printf(" ∥ ");
|
|
|
if(mod==3) printf(" ∥ ");
|
|
|
if(mod==4) printf(" ∥ ");
|
|
|
if(mod==5) printf(" ∥ ");
|
|
|
if(mod==6) printf(" ∥ ");
|
|
|
if(mod==7) printf(" ∥ ");
|
|
|
if(mod==8) printf(" ∥ ");
|
|
|
if(mod==9) printf(" ∥ ");
|
|
|
if(mod==10) printf(" ∥ ");
|
|
|
}
|
|
|
printf("\n");
|
|
|
}
|
|
|
for(int e=0;e<152;e++) printf("~");printf("\n");
|
|
|
}
|
|
|
int main(void)
|
|
|
{
|
|
|
FILE *fp;
|
|
|
char s[20];
|
|
|
char input;
|
|
|
int select=1,selectt;
|
|
|
int flag=38;
|
|
|
fp=fopen("title.txt","r");
|
|
|
for(int i=0;i<40;i++)
|
|
|
for(int o=0;o<75;o++)
|
|
|
fscanf(fp,"%d",&map_down[i][o]);
|
|
|
fclose(fp);
|
|
|
while(flag)
|
|
|
{
|
|
|
HideCursor();
|
|
|
gotoxy(0,0);
|
|
|
for(int i=0;i<25;i++)
|
|
|
{
|
|
|
for(int o=38-flag+1;o<75-flag+1;o++)
|
|
|
{
|
|
|
if(map_down[i][o]==0) printf(" ");
|
|
|
else if(map_down[i][o]==1) printf("←");
|
|
|
}
|
|
|
printf("\n");
|
|
|
}
|
|
|
Sleep(100);
|
|
|
flag--;
|
|
|
}
|
|
|
Sleep(2000);
|
|
|
system("cls");
|
|
|
while(1)
|
|
|
{
|
|
|
HideCursor();
|
|
|
gotoxy(0,0);
|
|
|
if(kbhit())
|
|
|
{
|
|
|
input=getch();
|
|
|
if(input=='w'||input=='W'||input==72){ if(select==1) select=3;else select--;}
|
|
|
if(input=='s'||input=='S'||input==80){ if(select==3) select=1;else select++;}
|
|
|
if(input=='j'||input=='J'||input=='\r')
|
|
|
{
|
|
|
if(select==1)
|
|
|
{
|
|
|
origin();
|
|
|
|
|
|
}
|
|
|
else if(select==2)
|
|
|
{
|
|
|
origin();
|
|
|
mod=0;
|
|
|
gb_x=0;gb_y=0;
|
|
|
while(!quit)
|
|
|
{
|
|
|
HideCursor();
|
|
|
key_bianji();
|
|
|
gengxin_bianji();
|
|
|
show_bianji();
|
|
|
}
|
|
|
printf("1.悵湔 2.祥悵湔\nワ恁寁[ ]\b\b");
|
|
|
scanf("%d",&selectt);
|
|
|
if(selectt==1)
|
|
|
{
|
|
|
printf("ワ怀⻌華芞靡ㄩ");
|
|
|
scanf("%s",s);
|
|
|
if((fp=fopen("map.txt","a"))==NULL)
|
|
|
fp=fopen("map.txt","w");
|
|
|
fprintf(fp,"\n%s\n",s);
|
|
|
fprintf(fp,"%d %d %d %d %d %d %d %d\n",play1.color,play1.ep1,play1.ep2,play1.fangxiang,play1.Hp,play1.zb_x,play1.zb_y,play1.zhuangtai);
|
|
|
fprintf(fp,"%d %d %d %d %d %d %d %d\n",play2.color,play2.ep1,play2.ep2,play2.fangxiang,play2.Hp,play2.zb_x,play2.zb_y,play2.zhuangtai);
|
|
|
for(int i=0;i<10;i++)
|
|
|
fprintf(fp,"%d %d %d %d %d %d %d %d\n",enemy[i].color,enemy[i].ep1,enemy[i].ep2,enemy[i].fangxiang,enemy[i].Hp,enemy[i].zb_x,enemy[i].zb_y,enemy[i].zhuangtai);
|
|
|
for(int i=0;i<3;i++)
|
|
|
fprintf(fp,"%d %d %d\n",jidi[i].zb_x,jidi[i].zb_y,jidi[i].zhuangtai);
|
|
|
for(int i=0;i<40;i++)
|
|
|
for(int o=0;o<75;o++)
|
|
|
fprintf(fp," %d",map_down[i][o]);
|
|
|
fclose(fp);
|
|
|
printf("眒悵湔ㄐ");
|
|
|
Sleep(1000);
|
|
|
}
|
|
|
system("cls");
|
|
|
}
|
|
|
else if(select==3) return 0;
|
|
|
}
|
|
|
}
|
|
|
printf(" --拊親1949-- \n\n\n");
|
|
|
printf(" --ワ恁寁---- \n");
|
|
|
printf(" ");
|
|
|
if(select==1) printf("↙");
|
|
|
else printf(" ");
|
|
|
printf("羲宎蚔牁\n");
|
|
|
printf(" ");
|
|
|
if(select==2) printf("↙");
|
|
|
else printf(" ");
|
|
|
printf("晤憮壽縐\n");
|
|
|
printf(" ");
|
|
|
if(select==3) printf("↙");
|
|
|
else printf(" ");
|
|
|
printf("豖堤蚔牁\n");
|
|
|
}
|
|
|
}
|