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国庆礼包后,开启礼包可以获得一个华丽的徽章套装自选礼盒,开...

精品推荐

友情链接

友链互换QQ:

谷财 备案编号:蜀ICP备11019336号-3商务合作:235-677-2621

Copyright 2009-2020 Chengdu Sanzilewan Technology Co.,Ltd all rights reserve

抵制不良游戏 拒绝盗版游戏 注意自我保护 谨防受骗上当 适度游戏益脑 沉迷游戏伤身 合理安排时间 享受健康生活