*/ #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; } &nb
|