一个C语言的贪吃蛇代码,怎么在代码上添加上两个固定位置的障碍物蛇撞上就死,而且食物不能在障碍物上。

一个C语言的贪吃蛇代码,怎么在代码上添加上两个固定位置的障碍物蛇撞上就死,而且食物不能在障碍物上。,第1张

#define N 200

#include <graphics.h>

#include <stdlib.h>

#include <dos.h>

#define LEFT 0x4b00

#define RIGHT 0x4d00

#define DOWN 0x5000

#define UP 0x4800

#define ESC 0x011b

int i,key

int score=0/*得分*/

int gamespeed=50000/*游戏速度自己调整*/

struct Food

{

int x/*食物的横坐标*/

int y/*食物的纵坐标*/

int yes/*判断是否要出现食物的变量*/

}food/*食物的结构体*/

struct Snake

{

int x[N]

int y[N]

int node/*蛇的节数*/

int direction/*蛇移动方向*/

int life/* 蛇的生命,0活着,1死亡*/

}snake

void Init(void)/*图形驱动*/

void Close(void)/*图形结束*/

void DrawK(void)/*开始画面*/

void GameOver(void)/*结束游戏*/

void GamePlay(void)/*玩游戏具体过程*/ 怎么全是void

void PrScore(void)/*输出成绩*/

/*主函数*/

void main(void)

{

Init()/*图形驱动*/

DrawK()/*开始画面*/

GamePlay()/*玩游戏具体过程*/

Close()/*图形结束*/

}

/*图形驱动*/

void Init(void)

{

int gd=DETECT,gm /*定义图形的驱动器变量和模式变量,驱动变量为自动检测*/

initgraph(&gd,&gm,"c:\\tc") /*此处为turboc的路径*/

cleardevice() /*清除屏幕*/

}

/*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/

void DrawK(void)

{

/*setbkcolor(LIGHTGREEN)*/

setcolor(11)

setlinestyle(SOLID_LINE,0,THICK_WIDTH)/*设置线型*/

for(i=50i<=600i+=10)/*画围墙*/

{

rectangle(i,40,i+10,49)/*上边*/

rectangle(i,451,i+10,460)/*下边*/

}

for(i=40i<=450i+=10)

{

rectangle(50,i,59,i+10)/*左边*/

rectangle(601,i,610,i+10)/*右边*/

}

}

/*玩游戏具体过程*/

void GamePlay(void)

{

randomize()/*随机数发生器*/

food.yes=1/*1表示需要出现新食物,0表示已经存在食物*/

snake.life=0/*活着*/

snake.direction=1/*方向往右*/

snake.x[0]=100snake.y[0]=100/*蛇头*/

snake.x[1]=110snake.y[1]=100

snake.node=2/*节数*/

PrScore()/*输出得分*/

while(1)/*可以重复玩游戏,压ESC键结束*/

{

while(!kbhit())/*在没有按键的情况下,蛇自己移动身体*/

{

if(food.yes==1)/*需要出现新食物*/

{

food.x=rand()%400+60

food.y=rand()%350+60

while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/

food.x++

while(food.y%10!=0)

food.y++

food.yes=0/*画面上有食物了*/

}

if(food.yes==0)/*画面上有食物了就要显示*/

{

setcolor(GREEN)

rectangle(food.x,food.y,food.x+10,food.y-10)

}

for(i=snake.node-1i>0i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/

{

snake.x[i]=snake.x[i-1]

snake.y[i]=snake.y[i-1]

}

/*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/

switch(snake.direction)

{

case 1:snake.x[0]+=10break

case 2: snake.x[0]-=10break

case 3: snake.y[0]-=10break

case 4: snake.y[0]+=10break

}

for(i=3i<snake.nodei++)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/

{

if(snake.x[i]==snake.x[0]&&snake.y[i]==snake.y[0])

{

GameOver()/*显示失败*/

snake.life=1

break

}

}

if(snake.x[0]<55||snake.x[0]>595||snake.y[0]<55||

snake.y[0]>455)/*蛇是否撞到墙壁*/

{

GameOver()/*本次游戏结束*/

snake.life=1/*蛇死*/

}

if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/

break

if(snake.x[0]==food.x&&snake.y[0]==food.y)/*吃到食物以后*/

{

setcolor(0)/*把画面上的食物东西去掉*/

rectangle(food.x,food.y,food.x+10,food.y-10)

snake.x[snake.node]=-20snake.y[snake.node]=-20

/*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

snake.node++/*蛇的身体长一节*/

food.yes=1/*画面上需要出现新的食物*/

score+=10

PrScore()/*输出新得分*/

}

setcolor(4)/*画出蛇*/

for(i=0i<snake.nodei++)

rectangle(snake.x[i],snake.y[i],snake.x[i]+10,

snake.y[i]-10)

delay(gamespeed)

setcolor(0)/*用黑色去除蛇的的最后一节*/

rectangle(snake.x[snake.node-1],snake.y[snake.node-1],

snake.x[snake.node-1]+10,snake.y[snake.node-1]-10)

} /*endwhile(!kbhit)*/

if(snake.life==1)/*如果蛇死就跳出循环*/

break

key=bioskey(0)/*接收按键*/

if(key==ESC)/*按ESC键退出*/

break

else

if(key==UP&&snake.direction!=4)

/*判断是否往相反的方向移动*/

snake.direction=3

else

if(key==RIGHT&&snake.direction!=2)

snake.direction=1

else

if(key==LEFT&&snake.direction!=1)

snake.direction=2

else

if(key==DOWN&&snake.direction!=3)

snake.direction=4

}/*endwhile(1)*/

}

/*游戏结束*/

void GameOver(void)

{

cleardevice()

PrScore()

setcolor(RED)

settextstyle(0,0,4)

outtextxy(200,200,"GAME OVER")

getch()

}

/*输出成绩*/

void PrScore(void)

{

char str[10]

setfillstyle(SOLID_FILL,YELLOW)

bar(50,15,220,35)

setcolor(6)

settextstyle(0,0,2)

sprintf(str,"score:%d",score)

outtextxy(55,20,str)

}

/*图形结束*/

void Close(void)

{

getch()

closegraph()

}

PSP合金装备掌上行动攻略

序关:

开始有2个小关,就是照指示从牢房里脱出救到ROY,从床铺下面的洞口爬出去可拿到MK22q。本关纯熟悉 *** 作用,在这不说了!

1、SOVIET PATROL BASE:

前走2步就会看见几个小兵在交谈,在他们的头头后面可看见个红色的东西,(按太快没注意是啥玩意)现在的目的就是把他拿到手就行了。剧情后随便弄晕个敌人将他拖到自己的卡车处便可过关。之后在选关画面先按X键打开菜单,在里面选择MANAGE这项,在这里把刚抓到的士兵分配到SANKE一起来,(就是按方块键移动到第一项)这样可以触发下一任务地点。

2、COMM BASE:

这关可以先按START键打开菜单选择MEMBER CHANGE把SNAKE选好隐藏点换成刚俘虏的士兵 *** 作,(当然也可以不换人直接用SNAKE过关)直接去地图X处房间里的目的地就行,自己控制的士兵在走动时敌人是不会注意你的,很轻松过本关。

3、HOSPITAL:

本关地图上可看见3个X,正确的是中间那个。最简单的过关方法就是绕去正北方围墙下的洞爬过去再爬楼梯上2楼,直接右边破窗到目的地,一个敌人都没有。

4、RESEARCHLAB:

也可走近路,直接走汽车左边围墙下的通道爬过去直走再上去右边任务点触发剧情,之后去房子里面的目的地,里面没敌人,直接冲进去吧。接下来的任务是去抓个有(SPY)间谍能力的敌兵进卡车,之后在选关画面时选MANAGE分配这些士兵到第2项SPY(耳朵图标)的SUPPLY DEPOT里面,再在主菜单选择REPORT看报告就能触发下一个任务点。(在这建议之后每新到一个地点就安排一个有间谍能力的士兵放在该地点,这样才能收到他们的报告触发新任务继续剧情)

5、SUPPLY DEPOT:

由于安排了间谍,本关地图上可以看见某些道具的分布位置,任务目的是潜入到右上角大房子里面找到地图就行,难度不大。

6、RAIL BRIDGE:

直接在左上触发剧情,之后派间谍到TOWN地点去制造骚乱,等过段时间他们发来报告查看后(可以在菜单选择WAIT快速过完本天)会触发TOWN里的任务。

7、TOWN:

进本关前先把身上装备好TNT这样武器,你在本关地图上会看见3处X,其实就是3两卡车,任务目的就是站在卡车旁边使用TNT炸掉卡车,3个都炸掉就OK了,当然得先把卡车周围的喽罗解决了再去炸,注意使用了TNT后要再按一下方块键才会爆炸,放好后走远点再引爆别炸到自己了。

8、RESEARCHLAB:

本关有2个任务地点,随便去一个地点用TNT炸掉里面的机器都可完成任务。

9、HOSAPITAL:

这个任务没有一个敌人,但是地上角落到处有炸d,任务目的就是清除这里所有的炸d。不过要注意的是那些女医生看见你就会吓的乱跑,为避免她们踩到炸d,最好是看见他们就立即将她们打晕。

10、SUPPLY DEPOT:

23 DECEMBER 1970收到报告后前往该地,本关任务也就是用TNT炸掉前面不远的一两货车,没啥难度。

11、RAIL BRIDGE:

原本桥上的2两卡车现在开走一两了,直接过桥到目的地,2边会有几个敌人,右边的房间里有把M37。

12、HARBOR:

就在前面屋顶上有把M63,可把对面桥上的人都干掉,过桥后进左边上面的门,在里面前走几步就会发生剧情了。之后这里前走会接到神秘人的电话。

13、SOVIET PATROL BASE:

这关任务是救出被关起的士兵,牢房位置在右中房间的地下室里,路上有不少敌人,小心前进,干掉守牢房的士兵可拿到钥匙开门。(必须装备好用三角键开牢门)

14、SECURITY BASE:

本关的地下通道四通八达,在地图西北方的房间里面可找到件衣服穿上。(必须爬地洞过去)去地图东北角房子里的楼上一房间里可找到一红色道具,路上的敌人直接用MK22让他们睡觉就是。

15、WARHEAD STORAGE:

本关任务是阻止敌人运送d药。先直接右边下到地下室仓库,这里安装了警报系统,注意别乱走,在右边爬梯子上去可找到个THERM G,装备好后即可清晰的看到警报线和敌人位置,另外这里的敌人会扔手雷,别被他们发现了。去对面上楼后右边进门走到尽头的机器室里面,在机器前放个TNT炸d即可。(身上没准备TNT的话在某处需爬进去的地道中可以找到个)注意剧情后会要进行BOSS战斗,打该BOSS不能使用炸d,(也不要拿出来,要不然他直接开q在你受伤引爆…)也不能靠他太近,要不他会把你武器冻住不能使用,能见度也非常地低,打他需要耐心。我的打法是站在射程内按住L键锁定,左右移动开q,我直接用MK22q把他弄死了,一个药瓶都没用,哈哈!MK22打他只损体力不损HP,但它体力耗尽一样挂。

16、AIRPORT:

看完WARHEAD STORAGE地点发来的报告后即可进入AIRPORT了。直接进入前面的屋子里面,由2楼尽头走廊去3楼,一路上的士兵很好解决,在这里用CQC这招威逼黑衣男子说出话就OK了。

17、SILO ENTRANCE:

先上楼去地图的西北角位置,这个地点地图上没标出来,不过到了自然会看见。剧情后是和NULL的BOSS战,这家伙的刀能挡住子d,也不要近身,和他打游击战吧,可以使用炸d打,不过别在他视线内放炸d,要不他会开q引爆炸到你自己,利用障碍物就行。爬到最高点某处可找到把狙击q,把他甩远点用q偷袭他也很不错的。

18、SILO ENTRANCE:

胜利后再次进入这场景,这次要选个自己编辑的小队进去,任务目的是救出SNAKE,只要不停的CQC敌人逼他们说出地址就行了,成功后ROY会联系你,另外本关好象有时间限制,因为我有次ROY联系上我结果任务失败。

19、TOWN:

看完该点发来的报告进入这里,还是选择小队,这次注意找到这里的一个黑衣男人,(位置不好说,他乱走,不要杀他,要不任务失败)用CQC逼他说话任务就完成。

20、QUEST HOUSE:

选好小队进入,SNAKE被关在左边屋子里的B1层,建议爬地下通道过去,这样基本可以一个敌人都不遇到目的地救到SNAKE。

21、PLANT:

进入此关前记得先把身上装备都准备好,先去左下拐角处的任务点触发剧情,接下来BOSS登场。由ELISA控制的机器人。在它机q扫射的时候躲在箱子后就行了,扔炸d时狂跑躲开就行,先攻击它的几只脚,大概打掉它1/4血的时它就不能飞了,此时就要简单多了,直接攻击他张开双翼后漏出的部分就行,轻松多了。顺便说下手q基本对它无效,而炸d很难炸到它,这BOSS其实和容易打,只是防高血厚,所以多准备点机q,流d炮什么的吧!

22、RAVINE:

本关没什么好说的,只是路线象迷宫样的有点复杂,任务目的地在在最右下角,穿过山洞过去,路上敌人直接扫了好多了。

23、POWER SUBSTATION:

任务目的地在前面的大楼的机房里面,不过要进去得从右边绕上去到最左边进后门。

24、POWER SUBSTATION:

给SNAKE装备上TIME BOMB再次进入这里,这次目的地还是刚才的地方,目的很明确,就是炸掉刚才机房那机器。剧情后又要和NULL进行战斗,能力和之前比没任何长进,轻松解决。

25、SILO ENTRANCE:

注意本关有5分钟的时间限制,目的地在地图最右上角的那里,路上敌人非常多,而且有很多是拿着火箭炮的敌人,能躲则躲,躲不了的迅速解决,另外注意你的小队4个人是共用5分钟时间,可不是死1个人而5分钟重新计算哦。

26、SILO COMPLEX:

任务目的地在1F左下角,和上一关一样本关敌人火力很猛不要正面冲突,而且要注意有些墙壁上有监视器和机关q千万要避过去,或者扔个CHAFF G,这样监视器看不到你,要不会引来很多敌人。途中经过一张门时ROY会来电说要找到把钥匙才能开这张门,钥匙在对面一房间里面可以找到,注意要用前翻滚才能拿到这房间还有2个加血包也拿到为好。而由第2张门开始的后面有几张门你必须要CQC挟持个敌人一起才能进去,(打晕拖动也行,返回时也一样)再3F里面可找到个钥匙,之后由3F的铁栏走道左手边跳下(走道边按三角键攀上X键跳下去)到2F走道上,开门进去即可到任务目的地了。

27、SILO COMPLEX:

剧情后就是BOSS战了!BOSS驾着飞行器在空中他会机q扫射,放激光以及扔雷攻击,这BOSS用机q扫的话只能打他人才能造成伤害,而用火箭炮则直接向机身打也会给他造成伤害。打这个BOSS只能SNAKE孤军奋战,不能带小队跑了。打他最好先用火箭炮轰,等他受伤害飞低时用机q狂扫(这里还能拣到把红外线q)就这样几个来回就可以搞定他了。

28、LAUNCH CONTROL ROOM:

最终BOSS战斗了,注意这家伙会瞬移,一般是扔飞标攻击,左右闪躲就行,看见他全身蓄气就要注意了,他会冲刺攻击被冲到可是损失几乎一半HP的,最好翻滚躲开,要不直接走到2边高台上去,另外躲过这招之后也是最好攻击他的时机,因为他会要喘气一会。他偶尔会用幻影攻击,不过只要打到他一下就能破掉。

胜利后就是结局画面了,再看制作人员表时会有首不错的歌听哦,音乐也非常热血。看完之后选择存档之后继续游戏可以选择EXTREME模式开始游戏。

参考资料:http://psp.tgbus.com/pspgl/200612/20061208145102.shtml


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11419783.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-16
下一篇2023-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存