c语言格斗游戏,[原创]格斗游戏

[原创]格斗游戏

/*呵呵,其实这个没什么技术含量,自我感觉就像在放幻灯片一样!呵呵,

我没学过数据结构,所以写得很乱,还望见谅!(不过我准备学了!)

做这个只是放松一下心情,太累了!

以下在TC2.0/XP 通过编译*/

#include

#include

#include

#include

#include

#include

#include

#define ESC 0x011b

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define D 0x2064 /* 用手攻击 */

#define F 0x2166 /* 用脚攻击 */

void gameplay()

{

void shiftleft(int move);

void fail();

void win();

void shiftright(int move);

void score(int blood,int blood1);

void onset_by_hand(int move,int j,int k);

void onset_by_leg(int move,int b,int v,int c);

void opponent(int move1,int y,int h,int u,int w,int s,int o,int p);

void drawmap();

int key,move=0,move1=0,j=0,k=0,a=1,t=1,b=0,c=0,v=0,x,e;

int y=520,h=480,u=320,w=490,s=240,o=480,p=260,f1;

int blood=0,blood1=0;

shiftright(move);

score(blood,blood1);

opponent(move1,y,h,u,w,s,o,p);

drawmap();

while(1)

{

f1=random(4);

key=bioskey(0);

if(blood1>=100)

{

cleardevice();

win();

sleep(10);

closegraph();

exit(0);

}

if(key==RIGHT)

{

if(move<410&&move<330+move1)

{

move+=5;

cleardevice();

shiftright(move);

drawmap();

opponent(move1,y,h,u,w,s,o,p);

score(blood,blood1);

}

else

getch();

a=0;

t=0;

}

else if(key==LEFT)

{

if(move>-60)

{

move-=5;

cleardevice();

shiftleft(move);

drawmap();

opponent(move1,y,h,u,w,s,o,p);

score(blood,blood1);

}

else

getch();

a=0;

t=0;

}

else if(key==D)

{

if(a==1)

{

j=130;

k=260;

a=0;

}

else if(a==0)

{

j=160;

k=210;

a=1;

}

cleardevice();

onset_by_hand(move,j,k);

drawmap();

if(((485+move1)-(115+move))<=45)

{

move1+=50;

if(move1>80)

move1=80;

blood1+=1;

}

opponent(move1,y,h,u,w,s,o,p);

score(blood,blood1);

delay(1000);

t=0;

}

else if(key==F)

{

if(t==1)

{

b=80;

v=120;

c=320;

t=0;

}

else if(t==0)

{

b=100;

v=180;

c=240;

t=1;

}

cleardevice();

onset_by_leg(move,b,v,c);

drawmap();

if(((485+move1)-(115+move))<=45)

{

move1+=60;

if(move1>80)

move1=80;

blood1+=2;

}

opponent(move1,y,h,u,w,s,o,p);

score(blood,blood1);

delay(1000);

a=0;

}

else if(key==ESC)

{

cleardevice();

settextstyle(0,0,3);

outtextxy(200,100,"GAME OVER !");

sleep(10);

closegraph();

exit(0);

}

else

getch();

if(f1==2||f1==0) /*对手的移动*/

{

while(!kbhit())

{

if(move1>-390&&((485+move1)-(115+move))>40)

{

move1-=10;

cleardevice();

opponent(move1,y,h,u,w,s,o,p);

shiftright(move);

drawmap();

score(blood,blood1);

delay(100000);

move1+=5;

cleardevice();

opponent(move1,y,h,u,w,s,o,p);

shiftright(move);

drawmap();

score(blood,blood1);

}

else

break;

}

}

while(!kbhit()) /* 对手的攻击 */

{

x=random(50);

if(((485+move1)-(115+move))<=40)

{

if(x==11) /* 用手*/

{

w=485;

s=210;

o=440;

p=210;

cleardevice();

opponent(move1,y,h,u,w,s,o,p);

shiftright(move);

drawmap();

score(blood,blood1);

delay(100000);

cleardevice();

w=490;

s=240;

o=480;

p=260;

move-=40;

if(move

move=-60;

blood+=1;

if(blood>=100)

{

cleardevice();

fail();

sleep(10);

closegraph();

exit(0);

}

opponent(move1,y,h,u,w,s,o,p);

shiftright(move);

drawmap();

score(blood,blood1);

}

else if(x==48) /* 用脚*/

{

y=500;

h=420;

u=240;

cleardevice();

opponent(move1,y,h,u,w,s,o,p);

shiftright(move);

drawmap();

score(blood,blood1);

delay(100000);

cleardevice();

y=520;

h=480;

u=320;

move-=50;

if(move

move=-60;

blood+=2;

if(blood>=100)

{

cleardevice();

fail();

sleep(10);

closegraph();

exit(0);

}

opponent(move1,y,h,u,w,s,o,p);

shiftright(move);

drawmap();

score(blood,blood1);

}

}

/*if(!kbhit()&&key==ESC||!kbhit()&&key==LEFT||!kbhit()&&key==RIGHT||!kbhit()&&key==D||!kbhit()&&key==F)

break;*/

}

}

}

void shiftright(int move) /*右移*/

{

int i=10;

circle(100+move,180,10); /*head*/

line(100+move,190,100+move,200); /*neck*/

rectangle(85+move,200,115+move,240); /*body*/

line(100+move,240,80+move-i,320); /*left leg*/

line(100+move,240,120+move,320); /*right leg*/

line(100+move,210,130+move,260); /* right hand*/

line(110+move,240,120+move,260); /* left hand*/

i+=30;

if(i>=30)

i=10;

}

void shiftleft(int move) /*左移*/

{

int i=10;

circle(100+move,180,10); /*head*/

line(100+move,190,100+move,200); /*neck*/

rectangle(85+move,200,115+move,240); /*body*/

line(100+move,240,80+move,320); /*left leg*/

line(100+move,240,120+move-i,320); /*right leg*/

line(100+move,210,130+move,260); /*right hand*/

line(115+move,207,160+move,200); /*left hand*/

i+=20;

if(i>=30)

i=10;

}

void onset_by_hand(int move,int j,int k) /* 用手攻击*/

{

int i=10;

circle(100+move,180,10);

line(100+move,190,100+move,200);

rectangle(85+move,200,115+move,240);

line(100+move,240,80+move,320);

line(100+move,240,120+move-i,320);

line(100+move,210,j+move,k);

line(110+move,240,120+move,260);

i+=20;

if(i>=30)

i=10;

}

void onset_by_leg(int move,int b,int v,int c) /* 用脚攻击 */

{

circle(100+move,180,10);

line(100+move,190,100+move,200);

rectangle(85+move,200,115+move,240);

line(100+move,240,b+move,320);

line(100+move,240,v+move,c);

line(100+move,210,130+move,260);

line(110+move,240,120+move,260);

}

void drawmap()

{

bar(0,300,600,320);

bar(600,0,620,320);

}

void opponent(int move1,int y,int h,int u,int w,int s,int o,int p) /* 对手*/

{

circle(500+move1,180,10);

line(500+move1,190,500+move1,200);

rectangle(485+move1,200,515+move1,240);

line(500+move1,240,h+move1,u);

line(500+move1,240,y+move1,320);

line(500+move1,210,470+move1,260);

line(w+move1,s,o+move1,p);

/*line(485,210,440,210);*/

}

void score(int blood,int blood1) /* 生命力 */

{

bar(50,5,150-blood,10);

bar(450,5,550-blood1,10);

}

void fail() /* 输了的画面*/

{

bar(0,300,600,320);

bar(600,0,620,320);

circle(500,180,10);

line(500,190,500,200);

rectangle(480,200,520,240);

line(485,240,485,300);

line(515,240,515,300);

line(450,170,480,210);

line(550,170,520,210);

circle(100,290,10);

line(110,290,120,285);

rectangle(120,270,160,300);

line(130,285,190,285);

line(160,290,220,295);

settextstyle(0,0,3);

outtextxy(200,100,"YOU FAIL !");

}

void win()

{

bar(0,300,600,320);

bar(600,0,620,320);

circle(100,180,10);

line(100,190,100,200);

rectangle(80,200,120,240);

line(85,240,85,300);

line(115,240,115,300);

line(50,170,80,210);

line(150,170,120,210);

circle(500,290,10);

line(490,290,480,285);

rectangle(480,270,440,300);

line(470,285,410,285);

line(440,290,380,295);

settextstyle(0,0,3);

outtextxy(200,100,"YOU WIN !");

}

int main(void)

{

int gd=DETECT,mode;

initgraph(&gd,&mode,"");

gameplay();

}

/* 本来想左右移只做一个函数的,不过为了好区分一点,就分开写了!

实际上是不能这写的!(汗!还好意思说?) */

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很高兴回答您关于C语言双人格斗小游戏的问题!为了帮助您更好地了解该游戏的开发,我将为您提供一些基本的思路和步骤。 首先,您需要选择一个合适的开发环境,比如Code::Blocks或者Dev-C++,以便编写和运行C语言代码。 接下来,您可以考虑以下几个方面来设计和实现您的双人格斗小游戏: 1. 角色选择和初始化:让玩家选择自己的角色,并初始化双方角色的属性,如血量、攻击力等。 2. 控制和输入:使用键盘输入来控制角色的移动和攻击操作。您可以使用C语言的输入函数(如scanf)来获取玩家的输入。 3. 游戏循环:使用一个循环结构来实现游戏的进行。在每一轮循环中,检测玩家的输入并更新游戏状态,最后显示结果。 4. 攻击和防御:定义角色的攻击和防御动作,并在游戏中实现。您可以使用条件语句(如if-else)来判断角色之间的攻击和防御关系,并更新双方角色的血量。 5. 游戏结束条件:当其中一方角色的血量归零时,游戏结束。您可以使用条件语句来判断并显示获胜方。 6. 图形界面:如果您希望为游戏增加一些可视化效果,您可以考虑使用图形库(如graphics.h)来绘制角色和游戏场景。 这只是一个简单的思路,您可以根据自己的需求和实际情况进行更详细的设计和开发。希望这些信息对您有所帮助!如果您有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值