[原创]格斗游戏
<P>/*呵呵,其实这个没什么技术含量,自我感觉就像在放幻灯片一样!呵呵,<BR>我没学过数据结构,所以写得很乱,还望见谅!(不过我准备学了!)<BR>做这个只是放松一下心情,太累了!<BR>以下在TC2.0/XP 通过编译*/<BR>#include <stdio.h><BR>#include <graphics.h><BR>#include <math.h><BR>#include <dos.h><BR>#include <bios.h><BR>#include <stdlib.h><BR>#include <time.h><BR>#define ESC 0x011b<BR>#define LEFT 0x4b00<BR>#define RIGHT 0x4d00<BR>#define D 0x2064 /* 用手攻击 */<BR>#define F 0x2166 /* 用脚攻击 */<BR>void gameplay()<BR>{<BR> void shiftleft(int move);<BR> void fail();<BR> void win();<BR> void shiftright(int move);<BR> void score(int blood,int blood1);<BR> void onset_by_hand(int move,int j,int k);<BR> void onset_by_leg(int move,int b,int v,int c);<BR> void opponent(int move1,int y,int h,int u,int w,int s,int o,int p);<BR> void drawmap();<BR> int key,move=0,move1=0,j=0,k=0,a=1,t=1,b=0,c=0,v=0,x,e;<BR> int y=520,h=480,u=320,w=490,s=240,o=480,p=260,f1;<BR> int blood=0,blood1=0;<BR> shiftright(move);<BR> score(blood,blood1);<BR> opponent(move1,y,h,u,w,s,o,p);<BR> drawmap();<BR> while(1)<BR> {<BR> f1=random(4);<BR> key=bioskey(0);<BR> if(blood1>=100) <BR> {<BR> cleardevice();<BR> win();<BR> sleep(10);<BR> closegraph();<BR> exit(0);<BR> }<BR> if(key==RIGHT)<BR> {</P><P> if(move<410&&move<330+move1)<BR> {<BR> move+=5;<BR> cleardevice();<BR> shiftright(move);<BR> drawmap();<BR> opponent(move1,y,h,u,w,s,o,p);<BR> score(blood,blood1);<BR> }<BR> else<BR> getch();<BR> a=0;<BR> t=0;<BR> }<BR> else if(key==LEFT)<BR> {<BR> if(move>-60)<BR> {<BR> move-=5;<BR> cleardevice();<BR> shiftleft(move);<BR> drawmap();<BR> opponent(move1,y,h,u,w,s,o,p);<BR> score(blood,blood1);<BR> }<BR> else<BR> getch();<BR> a=0;<BR> t=0;<BR> }<BR> else if(key==D)<BR> {<BR> if(a==1)<BR> {<BR> j=130;<BR> k=260;<BR> a=0;<BR> }<BR> else if(a==0)<BR> {<BR> j=160;<BR> k=210;<BR> a=1;<BR> }<BR> cleardevice();<BR> onset_by_hand(move,j,k);<BR> drawmap();<BR> if(((485+move1)-(115+move))<=45)<BR> {<BR> move1+=50;<BR> if(move1>80)<BR> move1=80;<BR> blood1+=1;<BR> }<BR> opponent(move1,y,h,u,w,s,o,p);<BR> score(blood,blood1);<BR> delay(1000);<BR> t=0;</P>
<P> }<BR> else if(key==F) <BR> {<BR> if(t==1)<BR> {<BR> b=80;<BR> v=120;<BR> c=320;<BR> t=0;<BR> }<BR> else if(t==0)<BR> {<BR> b=100;<BR> v=180;<BR> c=240;<BR> t=1;<BR> }<BR> cleardevice();<BR> onset_by_leg(move,b,v,c);<BR> drawmap();<BR> if(((485+move1)-(115+move))<=45)<BR> {<BR> move1+=60;<BR> if(move1>80)<BR> move1=80;<BR> blood1+=2;<BR> }<BR> opponent(move1,y,h,u,w,s,o,p);<BR> score(blood,blood1);<BR> delay(1000);<BR> a=0;<BR> }<BR> else if(key==ESC)<BR> {<BR> cleardevice();<BR> settextstyle(0,0,3);<BR> outtextxy(200,100,"GAME OVER !");<BR> sleep(10);<BR> closegraph();<BR> exit(0);<BR> }<BR> else<BR> getch();<BR> if(f1==2||f1==0) /*对手的移动*/<BR> {<BR> while(!kbhit())<BR> {<BR> if(move1>-390&&((485+move1)-(115+move))>40)<BR> {<BR> move1-=10;<BR> cleardevice();<BR> opponent(move1,y,h,u,w,s,o,p);<BR> shiftright(move);<BR> drawmap();<BR> score(blood,blood1);<BR> delay(100000);<BR> move1+=5;<BR> cleardevice();<BR> opponent(move1,y,h,u,w,s,o,p);<BR> shiftright(move);<BR> drawmap();<BR> score(blood,blood1);<BR> }<BR> else<BR> break;<BR> }<BR> }<BR> while(!kbhit()) /* 对手的攻击 */<BR> {<BR> x=random(50);<BR> if(((485+move1)-(115+move))<=40)<BR> {<BR> if(x==11) /* 用手*/<BR> {<BR> w=485;<BR> s=210;<BR> o=440;<BR> p=210;<BR> cleardevice();<BR> opponent(move1,y,h,u,w,s,o,p);<BR> shiftright(move);<BR> drawmap();<BR> score(blood,blood1);<BR> delay(100000);<BR> cleardevice();<BR> w=490;<BR> s=240;<BR> o=480;<BR> p=260;<BR> move-=40;<BR> if(move<-60)<BR> move=-60;<BR> blood+=1;<BR> if(blood>=100)<BR> {<BR> cleardevice();<BR> fail();<BR> sleep(10);<BR> closegraph();<BR> exit(0);<BR> }<BR> opponent(move1,y,h,u,w,s,o,p);<BR> shiftright(move);<BR> drawmap();<BR> score(blood,blood1);<BR> }<BR> else if(x==48) /* 用脚*/<BR> {<BR> y=500;<BR> h=420;<BR> u=240;<BR> cleardevice();<BR> opponent(move1,y,h,u,w,s,o,p);<BR> shiftright(move);<BR> drawmap();<BR> score(blood,blood1);<BR> delay(100000);<BR> cleardevice();<BR> y=520;<BR> h=480;<BR> u=320;<BR> move-=50;<BR> if(move<-60)<BR> move=-60;<BR> blood+=2;<BR> if(blood>=100)<BR> {<BR> cleardevice();<BR> fail();<BR> sleep(10);<BR> closegraph();<BR> exit(0);<BR> }<BR> opponent(move1,y,h,u,w,s,o,p);<BR> shiftright(move);<BR> drawmap();<BR> score(blood,blood1);<BR> }<BR> }<BR> /*if(!kbhit()&&key==ESC||!kbhit()&&key==LEFT||!kbhit()&&key==RIGHT||!kbhit()&&key==D||!kbhit()&&key==F)<BR> break;*/<BR> }<BR> }<BR>}<BR>void shiftright(int move) /*右移*/<BR>{<BR> int i=10;<BR> circle(100+move,180,10); /*head*/<BR> line(100+move,190,100+move,200); /*neck*/<BR> rectangle(85+move,200,115+move,240); /*body*/<BR> line(100+move,240,80+move-i,320); /*left leg*/<BR> line(100+move,240,120+move,320); /*right leg*/<BR> line(100+move,210,130+move,260); /* right hand*/<BR> line(110+move,240,120+move,260); /* left hand*/<BR> i+=30;<BR> if(i>=30)<BR> i=10;<BR>}<BR>void shiftleft(int move) /*左移*/<BR>{<BR> int i=10;<BR> circle(100+move,180,10); /*head*/<BR> line(100+move,190,100+move,200); /*neck*/<BR> rectangle(85+move,200,115+move,240); /*body*/<BR> line(100+move,240,80+move,320); /*left leg*/<BR> line(100+move,240,120+move-i,320); /*right leg*/<BR> line(100+move,210,130+move,260); /*right hand*/<BR> line(115+move,207,160+move,200); /*left hand*/<BR> i+=20;<BR> if(i>=30)<BR> i=10;<BR>}<BR>void onset_by_hand(int move,int j,int k) /* 用手攻击*/<BR>{<BR> int i=10;<BR> circle(100+move,180,10);<BR> line(100+move,190,100+move,200);<BR> rectangle(85+move,200,115+move,240);<BR> line(100+move,240,80+move,320);<BR> line(100+move,240,120+move-i,320);<BR> line(100+move,210,j+move,k);<BR> line(110+move,240,120+move,260);<BR> i+=20;<BR> if(i>=30)<BR> i=10;<BR>}<BR>void onset_by_leg(int move,int b,int v,int c) /* 用脚攻击 */<BR>{<BR> circle(100+move,180,10);<BR> line(100+move,190,100+move,200);<BR> rectangle(85+move,200,115+move,240);<BR> line(100+move,240,b+move,320);<BR> line(100+move,240,v+move,c);<BR> line(100+move,210,130+move,260);<BR> line(110+move,240,120+move,260);<BR>}<BR>void drawmap()<BR>{<BR> bar(0,300,600,320);<BR> bar(600,0,620,320);<BR>}<BR>void opponent(int move1,int y,int h,int u,int w,int s,int o,int p) /* 对手*/<BR>{<BR> circle(500+move1,180,10);<BR> line(500+move1,190,500+move1,200);<BR> rectangle(485+move1,200,515+move1,240);<BR> line(500+move1,240,h+move1,u);<BR> line(500+move1,240,y+move1,320);<BR> line(500+move1,210,470+move1,260);<BR> line(w+move1,s,o+move1,p);<BR> /*line(485,210,440,210);*/<BR>}<BR>void score(int blood,int blood1) /* 生命力 */<BR>{<BR> bar(50,5,150-blood,10);<BR> bar(450,5,550-blood1,10);<BR>}<BR>void fail() /* 输了的画面*/<BR>{<BR> bar(0,300,600,320);<BR> bar(600,0,620,320);<BR> circle(500,180,10);<BR> line(500,190,500,200);<BR> rectangle(480,200,520,240);<BR> line(485,240,485,300);<BR> line(515,240,515,300);<BR> line(450,170,480,210);<BR> line(550,170,520,210);<BR> circle(100,290,10);<BR> line(110,290,120,285);<BR> rectangle(120,270,160,300);<BR> line(130,285,190,285);<BR> line(160,290,220,295);<BR> settextstyle(0,0,3);<BR> outtextxy(200,100,"YOU FAIL !");<BR>}<BR>void win()<BR>{<BR> bar(0,300,600,320);<BR> bar(600,0,620,320);<BR> circle(100,180,10);<BR> line(100,190,100,200);<BR> rectangle(80,200,120,240);<BR> line(85,240,85,300);<BR> line(115,240,115,300);<BR> line(50,170,80,210);<BR> line(150,170,120,210);<BR> circle(500,290,10);<BR> line(490,290,480,285);<BR> rectangle(480,270,440,300);<BR> line(470,285,410,285);<BR> line(440,290,380,295);<BR> settextstyle(0,0,3);<BR> outtextxy(200,100,"YOU WIN !");<BR>}<BR>int main(void)<BR>{<BR> int gd=DETECT,mode;<BR> initgraph(&gd,&mode,"");<BR> gameplay();<BR>}<BR>/* 本来想左右移只做一个函数的,不过为了好区分一点,就分开写了!<BR>实际上是不能这写的!(汗!还好意思说?) */</P>
高手!支持一下! 看不懂 [em02] ,看不懂,高手的还是要顶一下的
呵呵,向高手学习!!!~~~~~~
页:
[1]
2
