呆板人大战游戏代码片断
#include "graphics.h"
#include "bios.h"
#include "conio.h"
#include "stdlib.h"
#include "dos.h"
#define UP 0x4800
#define DOWN 0x5000
#define LEFT 0x4600
#define RIGHT 0x4d00
#define ESC 0x0016
#define VGA256 0x13
#define TEXT 0x03
int x,y,l,sxzy=0,zx=0,xx=5,yy=167;
int x1=5,y1=3,x3=0,y3=0,x4=0,y4=0;
int youlife=50,mylife=30;
int board[100][170];
unsigned char far *video_buff=(char far *)0xA0000000L;
void setvideomode(int mode)
{ union REGS inregs,outregs;
inregs.h.ah=0;
inregs.h.al=(unsigned char)mode;
int86(0x10,&inregs,&outregs);
}
void v_line(int y0,int y1,int x,unsigned int color)
{ unsigned int address,n,temp;
address=320*y0+x;
for(n=0;n<=y1-y0;n++)
{
if(y0>y1)
{
temp=y1;
y1=y0;
y0=temp;
}
video_buff[address]=color;
address+=320;
}
}
void h_line(int x0,int x1,int y,unsigned int color)
{ unsigned int address,n,temp;
address=320*y+x0;
for(n=0;n<=x1-x0;n++)
{
if(x0>x1)
{
temp=x1;
x1=x0;
x0=temp;
}
video_buff[address]=color;
address+=1;
}
}
void p_pixel(int x,int y,unsigned int color)
{ video_buff[y*320+x]=color;
}
void s_square(int x,int y,int side,int color)
{
h_line(x,x+side,y,color);
h_line(x,x+side,y+side,color);
v_line(y,y+side,x,color);
v_line(y,y+side,x+side,color);
}
void r_rectangle(int x1,int y1,int x2,int y2,int color)
{
h_line(x1,x2,y1,color);
h_line(x1,x2,y2,color);
v_line(y1,y2,x1,color);
v_line(y1,y2,x2,color);
}
void fillRectangle(int x1,int y1,int x2,int y2,int color)
{
int i;
for(i=y1;i<=y2;i++)
{
h_line(x1,x2,i,color);
}
}
void ground() /*画外框*/
{ r_rectangle(104,20,207,190,7);
}
void delzx() /*每次出拳后,删除拳头*/
{ delay(1000);
s_square(x3,y3,5,0);
s_square(x3,y3-6,5,0);
x3=0;
y3=0;
}
void me() /*画出本身*/
{ int cas=0;
if(sxzy==18432) /*假如按上键,就往上移动*/
{ yy-=5;
if(yy < y1+30)
yy+=5;
if(yy==12)
yy=17;
}
if(sxzy==20480) /*假如按下键,就往下移动*/
{ yy+=5;
if(yy==172)
yy=167;
}
if(sxzy==19200) /*假如按左键,就往左移动*/
{ xx--;
if(xx==-1)
xx=0;
}
if(sxzy==19712) /*假如按右键,就往右移动*/
{ xx++;
if(xx==13)
xx=12;
}
sxzy=0;
for(x=xx;x<5+xx;x++) /*给本身搭建骨架*/
{
if(x==xx) /*左手*/
{
y=167;
board[x][yy]=1;
if(zx==11386)
{
board[x][yy-12]=3;
board[x][yy-11]=3;
if((yy-11 < y1+30) && (xx>=x1 && xx<=x1+4))
youlife--;
cas=1;
zx=0;
}
x++;
}
if(x==xx+4) /*右手*/
{
y=167;
board[x][yy]=1;
if(zx==11640)
{
board[x][yy-12]=3;
board[x][yy-11]=3;
if((yy-11 < y1+30) && (xx+4<=x1+4 && xx+4>=x1))
youlife--;
cas=2;
zx=0;
}