学C中 发表于 2006-1-4 20:22

[原创]格斗游戏

<P>/*呵呵,其实这个没什么技术含量,自我感觉就像在放幻灯片一样!呵呵,<BR>我没学过数据结构,所以写得很乱,还望见谅!(不过我准备学了!)<BR>做这个只是放松一下心情,太累了!<BR>以下在TC2.0/XP 通过编译*/<BR>#include &lt;stdio.h&gt;<BR>#include &lt;graphics.h&gt;<BR>#include &lt;math.h&gt;<BR>#include &lt;dos.h&gt;<BR>#include &lt;bios.h&gt;<BR>#include &lt;stdlib.h&gt;<BR>#include &lt;time.h&gt;<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&gt;=100)   <BR>       {<BR>   cleardevice();<BR>   win();<BR>   sleep(10);<BR>   closegraph();<BR>   exit(0);<BR>       }<BR>       if(key==RIGHT)<BR>       {</P>
<P>    if(move&lt;410&amp;&amp;move&lt;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&gt;-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))&lt;=45)<BR>   {<BR>      move1+=50;<BR>      if(move1&gt;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))&lt;=45)<BR>   {<BR>      move1+=60;<BR>      if(move1&gt;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&gt;-390&amp;&amp;((485+move1)-(115+move))&gt;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))&lt;=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&lt;-60)<BR>  move=-60;<BR>  blood+=1;<BR>                if(blood&gt;=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&lt;-60)<BR>  move=-60;<BR>  blood+=2;<BR>                if(blood&gt;=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()&amp;&amp;key==ESC||!kbhit()&amp;&amp;key==LEFT||!kbhit()&amp;&amp;key==RIGHT||!kbhit()&amp;&amp;key==D||!kbhit()&amp;&amp;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&gt;=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&gt;=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&gt;=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(&amp;gd,&amp;mode,"");<BR>   gameplay();<BR>}<BR>/*  本来想左右移只做一个函数的,不过为了好区分一点,就分开写了!<BR>实际上是不能这写的!(汗!还好意思说?)  */</P>

东门飘雨 发表于 2006-1-4 22:45

两个字,高手

等待 发表于 2006-1-5 01:52

<P>真是高手,佩服!</P>

magic_ln 发表于 2006-1-5 08:57

怎么高手是那么的谦虚啊。

flylee 发表于 2006-1-5 17:47

顶一个

他们的学生 发表于 2006-1-7 13:27

无论如何我都要顶!!!!<BR>谦虚得让我比较[em03][em04]

lordair 发表于 2006-1-7 15:13

奋起直追!!

blackhold 发表于 2006-1-7 17:00

不得不佩服。。。。。。

剑人 发表于 2006-1-7 21:55

对了<BR><BR>我在.net上运行不了!<BR><BR>那些头文件是怎么回事?<BR><BR>#include &lt;graphics.h&gt;??<BR><BR>还有其他几个头文件是怎么回事?<BR><BR>谢谢。<BR><BR>给个回答吧<BR><BR>这个游戏是怎么玩呀?

ak47my 发表于 2006-1-8 18:56

高手一般都很谦虚。相反。。菜鸟一般都很高吊的。就象我。。。。。。。

271391233 发表于 2006-1-9 00:17

看不懂

wzzhi 发表于 2006-1-9 19:19

<P>想他学习</P>

sobolipeng 发表于 2006-1-9 22:25

牛!

污秽摇篮 发表于 2006-1-10 19:57

很不错写的  就是看不懂..

龙井茶 发表于 2006-1-10 20:05

[em03]不得不佩服啊~~~~

卡拉是只猫 发表于 2006-1-11 02:45

一个字 强。<BR>  你要是女的我就娶你回家做老婆。

盖茨他爹 发表于 2006-1-11 02:47

<IMG src="http://www.bc-cn.net/bbs/showimg.asp?BoardID=34&amp;filename=2005-12/20051217014884383.jpg" border=0><br>这么帅的小伙不愁找不到老婆[em05]

welldone2006 发表于 2006-1-11 08:32

高手!支持一下!

goodstudy 发表于 2008-7-8 10:53

看不懂

学不懂也要学C 发表于 2008-7-8 11:11

[em02] ,看不懂,高手的还是要顶一下的
呵呵,向高手学习!!!~~~~~~

页: [1] 2

编程论坛