📄 c语言编的仿linux下ktron的街机游戏,对以前发的有点小修改_c语言游戏编程_c游戏编程_c语言_c 语言之家.htm
字号:
key:");<BR> outtextxy(160,200,"Player2
control
key:");<BR> outtextxy(160,220,"Help:
Level:
Exit:");<BR> outtextxy(160,230,"Player
color:");<BR> outtextxy(160,250,"Author:");<BR> outtextxy(160,260,"E_mail:");<BR> outtextxy(160,270,"Q
Q
:");<BR> setcolor(RED);<BR> outtextxy(330,190,"r,f,d,g");<BR> outtextxy(330,200,"up,down,left,right");<BR> outtextxy(160,220,"
F1
F2
Esc");<BR> outtextxy(160,230,"
F3/F4");<BR> outtextxy(220,250,"GaoWenfeng");<BR> outtextxy(220,260,"<A
href="mailto:hostadmin@163.com">hostadmin@163.com</A>");<BR> outtextxy(220,270,"277566252");<BR> setcolor(BLUE);<BR> outtextxy(175,290,"If
you have any question or modify
these");<BR> outtextxy(160,300,"code,Please
send email to me. Thank
you");<BR> outtextxy(160,310,"play this
game! <A
href="http://www.ourwp.com/">http://www.ourwp.com/</A>");<BR> setcolor(BLACK);<BR> outtextxy(410,320,"12/04/2005");<BR>}</P>
<P>/* 获取按键,如果低八位非0则为ASCII码,如为0则为控制键 */<BR>int
GetKey(void)<BR>{<BR> int
key;<BR> key=bioskey(0);<BR> if(key<<8)<BR> {<BR> key=key&0x00ff;<BR> if(isalpha(key))
/* 如果为字母则转换为大写
*/<BR> key=toupper(key);<BR> }<BR> return
key;<BR>}</P>
<P>/* 初始化开始方向,只有两个游戏者都按下了方向键才开始游戏 */<BR>void
Initfx(int *player1fx,int
*player2fx)<BR>{<BR> int
key;<BR> while(!(*player1fx) ||
!(*player2fx))<BR> {<BR> key=GetKey();<BR> if(key==RIGHT1
|| key==LEFT1 || key==UP1 ||
key==DOWN1)<BR> (*player1fx)=key;<BR> else
if(key==RIGHT || key==LEFT || key==UP
||key==DOWN)<BR> (*player2fx)=key;<BR> }<BR>}</P>
<P>/* 最主要函数,控制画框方向以及判断是否已死 */<BR>int
ManageMove(CurrentCoor player1,CurrentCoor
player2)<BR>{<BR> int
player1fx=0,player2fx=0; /* 记录游戏者的方向
*/<BR> int die=0,die1=0,die2=0; /*
记录游戏者是否已死 */<BR> int key;<BR> int
currentfx1,currentfx2; /*
记录游戏者所按的方向键,它需与player1fx与player2fx比较,确定是否转向
*/<BR> clock_t current_time,front_time; /*
用于控制游戏速度的变量
*/<BR> Initfx(&player1fx,&player2fx);<BR> currentfx1=player1fx;<BR> currentfx2=player2fx;<BR> front_time=clock();<BR> while(die==0)<BR> {<BR> if(bioskey(1))<BR> {<BR> key=GetKey();<BR> if(key==DOWN1
|| key==UP1 || key==LEFT1 ||
key==RIGHT1)<BR> currentfx1=key;<BR> else
if(key==DOWN || key==UP || key==LEFT ||
key==RIGHT)<BR> currentfx2=key;<BR> }<BR> current_time=clock();<BR> if(
(current_time - front_time) > Timeout) /*
如果超过游戏间隔则开始画
*/<BR> {<BR> front_time=current_time;<BR> if(player1fx==RIGHT1
|| player1fx==LEFT1) /*
如果现在方向为左或右则只有按下上下键才改变方向,反之相同
*/<BR> {<BR> if(currentfx1==UP1
||
currentfx1==DOWN1)<BR> {<BR> if(currentfx1==UP1)<BR> player1.y-=1;<BR> else<BR> player1.y+=1;<BR> player1fx=currentfx1;<BR> }<BR> else<BR> {<BR> if(player1fx==RIGHT1)<BR> player1.x+=1;<BR> else<BR> player1.x-=1;<BR> }<BR> }<BR> else
if(player1fx==UP1 ||
player1fx==DOWN1)<BR> {<BR> if(currentfx1==RIGHT1
||
currentfx1==LEFT1)<BR> {<BR> if(currentfx1==RIGHT1)<BR> player1.x+=1;<BR> else<BR> player1.x-=1;<BR> player1fx=currentfx1;<BR> }<BR> else<BR> {<BR> if(player1fx==UP1)<BR> player1.y-=1;<BR> else<BR> player1.y+=1;<BR> }<BR> }<BR> if(player2fx==RIGHT
||
player2fx==LEFT)<BR> {<BR> if(currentfx2==UP
||
currentfx2==DOWN)<BR> {<BR> if(currentfx2==UP)<BR> player2.y-=1;<BR> else<BR> player2.y+=1;<BR> player2fx=currentfx2;<BR> }<BR> else<BR> {<BR> if(player2fx==RIGHT)<BR> player2.x+=1;<BR> else</P>
<P> player2.x-=1;<BR> }<BR> }<BR> else
if(player2fx==UP ||
player2fx==DOWN)<BR> {<BR> if(currentfx2==RIGHT
||
currentfx2==LEFT)<BR> {<BR> if(currentfx2==RIGHT)<BR> player2.x+=1;<BR> else<BR> player2.x-=1;<BR> player2fx=currentfx2;<BR> }<BR> else<BR> {<BR> if(player2fx==UP)<BR> player2.y-=1;<BR> else<BR> player2.y+=1;<BR> }<BR> }</P>
<P> if(player1.x<0 ||
player1.x>=maxX ||player1.y<0 ||
player1.y>=maxY ||
coordinate[player1.x][player1.y].draw==1) /*
判断是否到边界或是已走路,如果是则退出,否则画框
*/<BR> { die1=1; die=1; }<BR> else<BR> Drawbar(player1,1);</P>
<P> if(player2.x<0 ||
player2.x>=maxX || player2.y<0 ||
player2.y>=maxY ||
coordinate[player2.x][player2.y].draw==1)<BR> { die2=1, die=2; }<BR> else<BR> Drawbar(player2,2);</P>
<P> }<BR> }<BR> if(die1
&&
die2)<BR> die=3;<BR> return
die;<BR>}</P>
<P>/* 设定游戏等级函数 */<BR>void
Set_Level(void)<BR>{<BR> int
key,pass=0,i=0;<BR> clock_t
front_time,current_time;<BR> front_time=clock();<BR> setfillstyle(1,WHITE);<BR> bar(180,150,460,300);<BR> setcolor(LIGHTRED);<BR> rectangle(182,152,458,298);<BR> setcolor(BLACK);<BR> rectangle(184,154,456,174);<BR> rectangle(184,176,456,296);<BR> setcolor(RED);<BR> outtextxy(260,160,"Level
Setting");<BR> setcolor(BLACK);<BR> outtextxy(190,200,"Here
have three
level:");<BR> outtextxy(190,260,"Please input
a
number[0,1,2]:");<BR> setcolor(BLUE);<BR> outtextxy(200,220,"0:
fast");<BR> outtextxy(200,230,"1:
normal");<BR> outtextxy(200,240,"2:
slow");</P>
<P> while(pass==0)<BR> {<BR> if(bioskey(1))<BR> {<BR> key=GetKey();<BR> if(key=='0'
|| key=='1' || key=='2') /* 通过设置全局变量Timeout来确定游戏速度
*/<BR> {<BR> pass=1;<BR> if(key=='0') Timeout=0;<BR> else
if(key=='1') Timeout=1;<BR> else Timeout=2;<BR> }<BR> else<BR> {<BR> setcolor(LIGHTRED);<BR> outtextxy(190,280,"Please
input
0,1,2!");<BR> }<BR> }<BR> else<BR> {<BR> current_time=clock();<BR> if(current_time-front_time>6)
/* 光标闪动效果,不知谁有更有效的方法?
*/<BR> {<BR> front_time=current_time;<BR> i=(i+1)%2;<BR> if(i==0)
setcolor(BLACK);<BR> else
setcolor(WHITE);<BR> outtextxy(420,260,"_");<BR> }<BR> }<BR> }<BR>}</P>
<P>/*
设置游戏者颜色,其实就是设置全局变量Player2Color与Player1Color,根据who来判断哪一个游戏者
*/<BR>void Set_Color(int who)<BR>{<BR> int
pass=0,color,key,i=0;<BR> int
x,y,count;<BR> clock_t
front_time,current_time;<BR> setfillstyle(1,WHITE);<BR> bar(150,160,500,340);<BR> setcolor(LIGHTRED);<BR> rectangle(152,162,498,338);<BR> setcolor(BLACK);<BR> rectangle(154,164,496,180);<BR> rectangle(154,182,496,336);<BR> setcolor(LIGHTRED);<BR> if(who==1)<BR> outtextxy(245,170,"Player1");<BR> else
if(who==2)<BR> outtextxy(245,170,"Player2");</P>
<P> setcolor(GREEN);<BR> outtextxy(245,170,"
Color
Setting");<BR> setcolor(BLACK);<BR> outtextxy(160,190,"You
can select underside
color:");<BR> outtextxy(160,300,"Please input
color number[1-f]:");</P>
<P> for(count=1;count<16;count++)<BR> {<BR> x=189+count*16;<BR> y=220;<BR> setfillstyle(1,count);<BR> bar(x,y,x+14,y+40);<BR> rectangle(x,y,x+14,y+40);<BR> }<BR> outtextxy(210,265,"1
2 3 4 5 6 7 8 9 A B C D E F");</P>
<P> front_time=clock();<BR> while(pass==0)<BR> {<BR> if(bioskey(1))<BR> {<BR> key=GetKey();<BR> if(
key>='1'&&
key<='9')<BR> {<BR> pass=1;<BR> color=key-'0';<BR> }<BR> else
if( key>='A' &&
key<='F')<BR> {<BR> pass=1;<BR> color=key-55;
/*
key-'A'+10*/<BR> }<BR> else<BR> {<BR> setcolor(LIGHTRED);<BR> outtextxy(160,320,"Please
input 1 to 9,or a to
f!");<BR> }<BR> }<BR> else<BR> {<BR> current_time=clock();<BR> if(current_time-front_time>6)<BR> {<BR> front_time=current_time;<BR> i=(i+1)%2;<BR> if(i==0)
setcolor(BLACK);<BR> else
setcolor(WHITE);<BR> outtextxy(410,300,"_");<BR> }<BR> }<BR> }<BR> if(who==1)<BR> Player1Color=color;<BR> else
if(who==2)<BR> Player2Color=color;<BR>}</P>
<P>/* 确认退出函数,返回1(退出)与0(继续游戏) */<BR>int
Exit_Game(void)<BR>{<BR> int
Quit=-1;<BR> int key,i=0;<BR> clock_t
front_time,current_time;<BR> front_time=clock();<BR> setfillstyle(1,WHITE);<BR> bar(180,150,460,300);<BR> setcolor(LIGHTRED);<BR> rectangle(182,152,458,298);<BR> setcolor(BLACK);<BR> rectangle(184,154,456,174);<BR> rectangle(184,176,456,296);<BR> setcolor(LIGHTRED);<BR> outtextxy(280,160,"Exit
Trone");<BR> setcolor(BLACK);<BR> outtextxy(215,190,"Thanks
play this game! If
you");<BR> outtextxy(200,205,"want to modify
this game
code,");<BR> outtextxy(200,220,"please tell
me or send email
to");<BR> outtextxy(200,235,"me! Welcome to
'www.ourwp.com'");<BR> setcolor(RED);<BR> outtextxy(200,255,"Author:GaoWenfeng");<BR> outtextxy(200,265,"Email:
<A
href="mailto:hostadmin@163.com">hostadmin@163.com</A>");<BR> setcolor(LIGHTRED);<BR> outtextxy(200,280,"Really
quit game(Y/N)?:");</P>
<P> while(Quit==-1)<BR> {<BR> if(bioskey(1))<BR> {<BR> key=GetKey();<BR> if(key=='Y')<BR> Quit=1;<BR> else
if(key=='N')<BR> Quit=0;<BR> }<BR> else<BR> {<BR> current_time=clock();<BR> if(current_time-front_time>6)<BR> {<BR> front_time=current_time;<BR> i=(i+1)%2;<BR> if(i==0)
setcolor(BLACK);<BR> else
setcolor(WHITE);<BR> outtextxy(385,280,"_");<BR> }<BR> }<BR> }<BR> return
Quit;<BR>}</P>
<P>/*
游戏控制函数,完成一系列初始化操作,最后调用ManageMove函数,完后便显示谁胜及一些快捷键
*/<BR>void GameManage(void)<BR>{<BR> int
Quit=0,key,die,i=1;<BR> int
start_game;<BR> CurrentCoor
player1,player2; /* 记录游戏者下标位置
*/<BR> clock_t
front_time,current_time;<BR> InitFace();<BR> HelpMassage();<BR> GetKey();<BR> while(Quit==0)<BR> {<BR> die=0;<BR> InitFace();<BR> InitCoordinate();<BR> InitPlayerPlace(&player1,&player2);<BR> Drawbar(player1,1);<BR> Drawbar(player2,2);<BR> while(die==0)<BR> {<BR>
die=ManageMove(player1,player2);<BR> }<BR> setcolor(WHITE);<BR> if(die==1)<BR> outtextxy(7,457,"Player2
Win!");<BR> else
if(die==2)<BR> outtextxy(7,457,"Player1
Win!");<BR> else<BR> outtextxy(7,457,"Player1
as same as Player2!");</P>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -