<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;
}
}