|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 1798927139 于 2014-8-16 21:27 编辑
- <P> </P>
- <DIV class=blockcode>
- <BLOCKQUOTE>
- <P><I><I><I><I><I><I><I><I><I></I></I></I></I></I></I></I></I></I> </P>
- #include <windows.h>
- #include <stdio.h>
- #include <conio.h>
- #include <stdlib.h>
- #include <time.h>
- #define KEY_UP 72
- #define KEY_DOWN 80
- #define KEY_LEFT 75
- #define KEY_RIGHT 77
- #define KEY_Q 27
- #define YES 121
- #define NO 110
- #define KEY_KONG 32
- static int n[19][44];
- static int xin;
- static int scores;
- static int pass;
- static int fen=0;
- static int t;
- static int choise;
- static int z;
- static int hit;
- static int w;
- static int a;
- static int s;
- static int d;
- void ini()
- {
- int i,j;
- srand(time(NULL));
- if(pass!=4)
- {
- for(j=0;j<19;j++)
- {
- for(i=0;i<44;i++)
- {
- n[j]=rand()%25;
- if(n[j]==8)
- {
- n[j]=0;
- }
- }
- }
- }
- if(pass==4)
- {
- for(j=0;j<19;j++)
- {
- for(i=0;i<44;i++)
- {
- n[j]=0;
- }
- }
- n[10][40]=1;
- n[17][1]=8;
- }
- n[0][0]=0;
- }
- void gotoxy(int X, int Y)
- {
- HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
- COORD pos;
- pos.X = X;
- pos.Y = Y;
- SetConsoleCursorPosition(hOut,pos);
- }
- void draw()
- {
- int i,j,k;
- gotoxy(10,3);
- for(i=0;i<60;i++)printf("-");
- for(i=0;i<20;i++)
- {
- gotoxy(10,4+i);
- printf("|");
- for(j=0;j<45;j++)
- {
- printf(" ");
- }
- printf("|");
- for(k=0;k<12;k++)
- {
- printf(" ");
- }
- printf("|\n");
- }
- gotoxy(10,23);
- for(i=0;i<60;i++)printf("-");
- gotoxy(60,4);
- printf("第%d关",pass);
- gotoxy(57,10);
- printf("游戏说明:");
- gotoxy(57,11);
- printf("按上下左右控");
- gotoxy(57,12);
- printf("制小脸(%c),吃",2);
- gotoxy(59,13);
- printf("完心(%c)。",3);
- gotoxy(59,15);
- printf("Esc退出。");
- gotoxy(57,16);
- printf("警告:");
- gotoxy(57,17);
- printf("不能越界!!!");
- gotoxy(57,19);
- printf("公告:");
- if(pass!=1)
- {
- gotoxy(57,18);
- printf("不能碰到(%c)。",1);
- }
- if(pass==3)
- {
- gotoxy(58,14);
- printf("按空格击打。");
- }
- }
- void man(int x,int y,int nx,int ny)
- {
- gotoxy(x,y);
- printf(" ");
- gotoxy(nx,ny);
- printf("%c",2);
- }
- void jida(int x,int y,int nx,int ny)
- {
- if(hit==1)
- {
- if(pass==3||pass==4)
- {
- if(a==1)
- {
- gotoxy(nx-1,ny);
- printf("%c",27);
- Sleep(250);
- gotoxy(nx-1,ny);
- if(n[ny-11][nx-5]!=1)//n[y-4][x-11]
- printf(" ");
- }
- if(d==1)
- {
- gotoxy(nx+1,ny);
- printf("%c",26);
- Sleep(250);
- gotoxy(nx+1,ny);
- if(n[ny-11][nx-3]!=1)
- printf(" ");
- }
- if(w==1)
- {
- gotoxy(nx,ny-1);
- printf("%c",24);
- Sleep(250);
- gotoxy(nx,ny-1);
- if(n[ny-12][nx-4]!=1)
- printf(" ");
- }
- if(s==1)
- {
- gotoxy(nx,ny+1);
- printf("%c",25);
- Sleep(250);
- gotoxy(nx,ny+1);
- if(n[ny-10][nx-4]!=1)
- printf(" ");
- }
- }
- }
- }
- void map()
- {
- int i,j,an=0;
- ini();
- for(j=0;j<19;j++)
- {
- gotoxy(11,4+j);
- for(i=0;i<44;i++)
- {
- if(n[j]==1)
- {
- printf("%c",3);
- xin++;
- }
- else if(pass==2&&n[j]==2)
- {
- printf("%c",1);
- }
- else if(pass==3&&n[j]==2||pass==4&&n[j]==2)
- {
- printf("%c",1);
- an++;
- }
- else if(pass==4&&n[j]==8)
- {
- printf("%c",15);
- }
- else
- {
- printf(" ");
- }
- }
- printf("\n");
- }
- if(pass==3||pass==4)
- {
- xin=xin+an;
- }
- gotoxy(57,5);
- printf("本关共有%d%c",xin,3);
- }
- void die(int x,int y)
- {
- choise=1;
- if(x<11||x>55||y<4||y>22)//任务活动区域为x(11,55),y(4,22)。这是实验的结果。
- {
- choise=0;
- gotoxy(23,13);
- printf("你过界了,去死把!!!\n\n\n\n\n\n\n\n\n\n\n");
- getch();
- draw();
- gotoxy(23,13);
- printf("你是否还要进行新的游戏(y/n):");
- }
- if(pass!=1)
- {
- if(n[y-4][x-11]==2)//被吃掉
- {
- choise=0;
- gotoxy(23,13);
- printf("你的肉真好吃哈哈~~~\n\n\n\n\n\n\n\n\n\n\n");
- getch();
- draw();
- gotoxy(23,13);
- printf("你是否继续的游戏(y/n):");
- }
- }
- }
- void over()
- {
- int i;
- draw();
- for(i=4;i<12;i++)
- {
- Sleep(250);
- gotoxy(23,i+1);
- printf("感谢你的使用。O(∩_∩)O~");
- gotoxy(23,25-i);
- printf("制作人:朱肖安。");
- gotoxy(23,i);
- printf(" ");
- gotoxy(23,26-i);
- printf(" ");
- }
- Sleep(2000);
- gotoxy(0,24);
- exit(0);
- }
- void score(int x,int y)
- {
- if(n[y-4][x-11]==1)
- {
- scores+=1;
- fen+=1;
- n[y-4][x-11]=0;
- }
- gotoxy(60,7);
- printf("得分:%d",scores);
- gotoxy(59,6);
- printf("总得分:%d",fen);
- gotoxy(57,8);
- printf("当前坐标:");
- gotoxy(60,9);
- printf("(%d,%d)",x-11,y-4);
- }
- void win()
- {
- int i;
- if(pass!=4)
- {
- if(scores==xin)
- {
- draw();
- pass++;
- for(i=4;i<14;i++)
- {
- Sleep(250);
- gotoxy(23,i+1);
- printf("恭喜你胜利!!!");
- gotoxy(23,i);
- printf(" ");
- }
- t=1;
- }
- }
- if(pass==4&&scores==1)
- {
- for(i=4;i<14;i++)
- {
- Sleep(250);
- gotoxy(23,i+1);
- printf("恭喜你通关!!!");
- gotoxy(23,i);
- printf(" ");
- }
- gotoxy(58,21);
- printf("通关!!!");
- over();
- }
- }
- void announcement()
- {
- if(scores==xin/3)
- {
- gotoxy(60,21);
- printf("赞!!!");
- }
- else if(scores==xin/3*2)
- {
- gotoxy(59,21);
- printf("超赞!!!");
- }
- else if(scores==xin-1)
- {
- gotoxy(58,21);
- printf("不得不赞!!!");
- }
- }
- void fabao()
- {
- int i,w;
- if(pass==3&&z==1)
- {
- draw();
- gotoxy(31,14);
- printf("%c",2);
- gotoxy(59,20);
- printf("恭喜你获得");
- gotoxy(60,21);
- printf("法宝!!!");
- for(i=5;i<=14;i++)
- {
- Sleep(500);
- gotoxy(32,i);
- printf("%c",26);
- gotoxy(32,i-1);
- printf(" ");
- }
- z=0;
- Sleep(1500);
- }
- }
- void kill(int nx,int ny)
- {
- if(n[ny-5][nx-11]==2&&w==1||n[ny-3][nx-11]==2&&w==1)//n[y-4][x-11]
- {
- if(n[ny-5][nx-11]!=8)
- {
- n[ny-5][nx-11]=1;
- gotoxy(nx,ny-1);
- printf("%c",3);
- }
- if(n[ny-5][nx-11]==8)//n[y-4][x-11]
- {
- n[17][1]=9;
- gotoxy(nx,ny-1);
- printf(" ");
- }
- }
- if(n[ny-3][nx-11]==2&&s==1||n[ny-4][nx-12]==8&&s==1)//n[y-4][x-11]
- {
- if(n[ny-3][nx-11]!=8)
- {
- n[ny-3][nx-11]=1;
- gotoxy(nx,ny+1);
- printf("%c",3);
- }
- if(n[ny-3][nx-11]==8)
- {
- n[17][1]=9;
- gotoxy(nx,ny+1);
- printf(" ");
- }
- }
- if(n[ny-4][nx-12]==2&&a==1||n[ny-4][nx-12]==8&&a==1)//n[y-4][x-11]
- {
- if(n[ny-4][nx-12]!=8)
- {
- n[ny-4][nx-12]=1;
- gotoxy(nx-1,ny);
- printf("%c",3);
- }
- if(n[ny-4][nx-12]==8)
- {
- n[17][1]=9;
- gotoxy(nx-1,ny);
- printf("%c",14);
- }
- }
- if(n[ny-4][nx-10]==2&&d==1||n[ny-3][nx-11]==2&&d==1)//n[y-4][x-11]
- {
- if(n[ny-4][nx-10]!=8)
- {
- n[ny-4][nx-10]=1;
- gotoxy(nx+1,ny);
- printf("%c",3);
- }
- if(n[ny-4][nx-10]==8)
- {
- n[17][1]=9;
- gotoxy(nx+1,ny);
- printf(" ");
- }
- }
- }
- void die1(int x,int y)
- {
- choise=1;
- if(pass==3||pass==4)
- {
- if(n[y-5][x-11]==1&&hit==1&&w==1||n[y-3][x-11]==1&&hit==1&&s==1||n[y-4][x-12]==1&&hit==1&&a==1||n[y-4][x-10]==1&&hit==1&&d==1)//自杀
- {
- choise=0;
- gotoxy(23,13);
- printf("你已经死了~~~\n\n\n\n\n\n\n\n\n\n\n");
- getch();
- draw();
- gotoxy(23,13);
- printf("你是否继续的游戏(y/n):");
- }
- }
- }
- void die2(int x)
- {
- choise=1;
- if(x==36)//自杀
- {
- choise=0;
- gotoxy(23,13);
- printf("你已经自杀了~~~\n\n\n\n\n\n\n\n\n\n\n");
- getch();
- draw();
- gotoxy(23,13);
- printf("你是否继续的游戏(y/n):");
- }
- }
- void kaoyan(int x)
- {
- int i,j;
- if(pass==4&&x==36)
- {
- for(j=0;j<45;j++)
- {
- for(i=0;i<19;i++)
- {
- gotoxy(55-j,4+i);
- printf("|");
- }
- Sleep(250);
- for(i=0;i<19;i++)
- {
- gotoxy(55-j,4+i);
- printf(" ");
- }
- }
- die2(x);
- }
- }
- void main(void)
- {
- int c,b,x,y,nx,ny,i,j,m=0;
- system("title 小人痴心");
- system("mode con cols=77 lines=25");
- system("color 72");
- choise=1;
- pass=1;
- t=1;
- z=1;
- while(1)
- {
- fabao();
- if(t==1)
- {
- xin=0;
- if(pass==1)
- {
- scores=0;
- }
- else if(pass!=1)
- {
- scores=0;
- xin=0;
- }
- x = nx = 11; y = ny = 4;
- draw();
- map();
- man(x,y,nx,ny);
- t=0;
- }
- win();
- announcement();
- c=getch();
- if(c==KEY_Q)
- {
- over();
- }
- if (224 == c&&choise==1)
- {
- b = getch();
- switch (b)
- {
- case KEY_UP:
- ny = y - 1;
- w=1;
- a=0;
- d=0;
- s=0;
- break;
- case KEY_DOWN:
- ny = y + 1;
- s=1;
- a=0;
- w=0;
- d=0;
- break;
- case KEY_LEFT:
- nx = x - 1;
- a=1;
- s=0;
- d=0;
- w=0;
- break;
- case KEY_RIGHT:
- nx = x + 1;
- d=1;
- a=0;
- s=0;
- w=0;
- break;
- }
- }
- else
- {
- if(choise!=1)
- {
- if(c==YES)//y键的值是121
- {
- t=1;
- choise=1;
- fen=fen-scores;
- }
- else if(c==NO)//n的值是110
- {
- over();
- }
- else
- {
- ;
- }
- }
- if(pass==3&&choise==1||pass==4&&choise==1)
- {
- if(c==KEY_KONG)
- {
- hit=1;
- jida(x,y,nx,ny);
- die1(x,y);
- kill(nx,ny);
- }
- }
- }
- if (x == nx && y == ny)
- {
- continue;
- }
- man(x,y,nx,ny);
- x = nx;
- y = ny;
- if(pass==4&&n[y-4][x-11]==8)
- {
- m=1;
- x=36;
- }
- if(pass==4&&n[17][1]==9)
- {
- n[17][1]=0;
- gotoxy(11,21);// n[17][1]=8;
- printf(" ");
- gotoxy(12,54);
- printf("%c",2);
- x=54;
- y=12;
- }
- score(x,y);
- die(x,y);
- kaoyan(x);
- if(m==1)
- {
- x=12;
- m=0;
- }
- hit=0;
- }
- }
复制代码
|
|