问dnf刃影白金徽章怎么选
dnf 刃影
-
小维
达到你说的要求,可以使用kbhit()函数,上百度搜一下它的用法,这个函数可以检测到游戏中是否有按键被按下,如果没有就使用一个死循环使蛇身一直移动,如果检测到了有按键被按下,就判断是否是方向键或者程序中设置的其他功能键(如esc退出键,调速键等),如果不是,不做响应,如果是,就就bioskey()函数接收这个键,并根据这个键值做出相应的响应!写游戏要注意模块化,你这样全写在main里很乱的。使用数组解决贪吃蛇的问题有点挠头,最好是自己构造一个合适的数据类型。还有就是学习一下这个头文件,只需要里面的几个函数就可以设计贪吃蛇的图形界面。给你个现成的贪吃蛇游戏,代码不长,仔细看一下里面的数据结构和算法思想。贪吃蛇游戏*/
define n 200
include
include
include
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 prscore(void);输出成绩*/
主函数*/
void main(void)
{
init();图形驱动*/
drawk();开始画面*/
gameplay();玩游戏具体过程*/
close();图形结束*/
}
图形驱动*/
void init(void)
{
int gd=detect,gm;initgraph(&gd,&gm,"c:\\tc");initgraph(&gd,&gm,"c:\\jmsoft\\drv");}
开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/
void drawk(void)
{
setbkcolor(lightgreen);setcolor(11);setlinestyle(solid_line,0,thick_width);设置线型*/
for(i=50;i;i+10)/*画围墙*/
{
rectangle(i,40,i+10,49);上边*/
rectangle(i,451,i+10,460);下边*/
}
for(i=40;i;i+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]=100;snake.y[0]=100;蛇头*/
snake.x[1]=110;snake.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;画面上有食物了*/
setcolor(green);rectangle(food.x,food.y,food.x+10,food.y-10);}
for(i=snake.node-1;i>0;i-)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/
{
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]+10;break;case 2:snake.x[0]-=10;break;case 3:snake.y[0]-=10;break;case 4:snake.y[0]+10;break;}
for(i=3;i;i+)/*从蛇的第四节开始判断是否撞到自己了,因为蛇头为两节,第三节不可能拐过来*/
{
if(snake.x[i]=snake.x[0]&snake.y[i]=snake.y[0])
{
gameover();显示失败*/
snake.life=1;break;}
}
if(snake.x[0]|snake.x[0]>595|snake.y[0]|
snake.y[0]>455)/*蛇是否撞到墙壁*/
{
gameover();本次游戏结束*/
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]=-20;snake.y[snake.node]=-20;新的一节先放在看不见的位置,下次循环就取前一节的位置*/
snake.node+;蛇的身体长一节*/
food.yes=1;画面上需要出现新的食物*/
score+10;prscore();输出新得分*/
}
setcolor(4);画出蛇*/
for(i=0;i;i+)
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();}
这个程序有只有一个地方需要改,就是initgraph(&gd,&gm,"c:\\jmsoft\\drv");这句代码中的第三个参数是 bgi文件的路径,你按下键盘上的alt+f 搜索一下*.bgi在哪个目录下,把那个路径复制到这个地方就可以了直接运行了,不然可能提示你 初始化错误!
-
问 dnf女气功白金徽章选择
提问时间:2024-05-08 21:38:13
答 dnf女气功白金徽章选择 DNF女气功白金徽章选择问题,对于很多DNF玩家来说都是非常头疼的问题,因为这个选择关系到你的角色属性加成、技能加强等效果,所以选择一...
-
问 dnf白金徽章获取
提问时间:2024-05-08 18:10:08
答 dnf白金徽章获取 DNF白金徽章是DNF游戏中很重要的一个奖励装备,它可以提高玩家的游戏体验和战斗效率。那么,白金徽章怎么得呢?下面就为大家详细介绍。首先,要...
-
问 dnf魔道白金徽章选择
提问时间:2024-05-08 12:44:42
答 dnf魔道白金徽章选择 DNF魔道白金徽章是DNF游戏中非常重要的道具之一,它可以带给玩家不同的加成,选择正确的魔道白金徽章对于游戏玩家来说是非常关键的。那么下...
-
问 dnf元素白金徽章选择
提问时间:2024-05-08 05:38:25
答 dnf元素白金徽章选择 DNF(Dungeon&Fighter)是一款以动作为主的在线游戏,并且在游戏中有各种各样的元素白金徽章,这些徽章的选择对于游戏中的角色...
-
问 dnf合金战士白金徽章选择
提问时间:2024-05-08 06:55:01
答 dnf合金战士白金徽章选择 DNF合金战士白金徽章是玩家在完成一定任务后所获得的一种荣誉徽章,可以用于兑换各种珍贵的物品和道具。但是很多玩家在选择兑换物品时会有...
-
问 dnf手游白金徽章属性
提问时间:2024-05-08 12:10:09
答 dnf手游白金徽章属性 DNF手游是一款非常受欢迎的角色扮演类游戏,其中白金徽章是游戏中的一种重要道具,具有非常强大的属性加成。下面就来了解一下DNF手游白金徽...
-
问 DNF刃影怎么玩
提问时间:2024-05-08 09:36:46
答 DNF刃影怎么玩 集够150个圣者金币可以在赛丽亚商店兑换亚贝罗亲选宝珠自选礼盒!宝珠自选礼盒有头肩、腰带、鞋子、辅助装备4个部位的宝珠。属性虽然不如金秋、新春...
-
问 金铲铲之战徽章怎么选
提问时间:2024-05-08 17:03:13
答 金铲铲之战徽章怎么选 《金铲铲之战》羁绊徽章盒礼包怎么获得【羁绊徽章盒礼包】2022年11月3日11点,商城-时空魔典页签上架【隐秘之海】的羁绊徽章盒礼包,礼包...
-
问 dnf徽章怎么用
提问时间:2024-05-08 01:16:43
答 dnf徽章怎么用 dnf合成徽章方法1、在游戏《地下城与勇士》中,玩家合成徽章的方法是玩家首先前往西海岸港口,在此处找到***达芙妮。2、玩家点击该***,就会...
-
问 dnf如何取下徽章
提问时间:2024-05-08 01:38:03
答 dnf如何取下徽章 在dnf这款游戏中,黄色力量徽章的获得方法是购买2021国庆礼包。玩家购买2021国庆礼包后,开启礼包可以获得一个华丽的徽章套装自选礼盒,开...