You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

471 lines
12 KiB

#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");
}
}