| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1087 人关注过本帖
标题:求各位帮忙看看,把下面Button()函数改掉为什么不行。
只看楼主 加入收藏
挨个试试
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-23
收藏
 问题点数:0 回复次数:3 
求各位帮忙看看,把下面Button()函数改掉为什么不行。
我想把下面程序中的button()改成如下,可结果并不能通过wads键来控制蛇头的方向,请问为什么。
void Button()
{   
    int key;
while(kbhit()!=0)
     {
   key=getch();
        }
        switch(key)
   {
             case 'w':now=0;break;
             case 's':now=1;break;
             case 'a':now=2;break;
             case 'd':now=3;break;
        }
}

 
小游戏:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<conio.h>
#include<time.h>
const int H=8;
const int L=16;
int   now;
int   over=0;
int   win=0;
int   dx[4]={0,0,-1,1};
int   dy[4]={-1,1,0,0};
int   head_x;
int   head_y;
char Head='@';
char Map[H][L];
void Initial();
void Move();
void Show();
void Button();
void Check_Head();
main()
{
Initial();
Show();
return 0;
}
void Initial()
{   
    int i,j,x,y;
    system("title 新游戏");
memset(Map,'.',sizeof(Map));
srand(time(0));
x=rand()%H;
y=rand()%L;
head_x=x;
head_y=y;
now=-1;
Map[x][y]=Head;
for(i=0;i<H;i++)
 {for(j=0;j<L;j++)
  printf("%c",Map[i][j]);
  printf("\n");
 }
printf("小游戏\n");
printf("请通过小键盘方向键填满地图");
getch();      
}
void Show()
{  
   int i,j;
   while(1)
    {
      Sleep(500);
  Button();
      Move();
      if(win)
      {
          printf("游戏成功\n");
          printf("\(^o^)/~");
getchar();
break;
      }
         if(over)
      {
        printf("游戏失败\n");
printf("(> _ <)");
getchar();
break;
      }
      system("cls");
      for(i=0;i<H;i++)
       {for(j=0;j<L;j++)
        printf("%c",Map[i][j]);
          printf("\n");
       }
    }
}
void Button()
{   
    int key;
while(kbhit()!=0)
     {
   key=getch();
        }
        switch(key)
   {
             case 75:now=0;break;
             case 77:now=1;break;
             case 72:now=2;break;
             case 80:now=3;break;
        }
}

void Check_Head()
{   
    int i,j;
    for(i=0;i<H;i++)
     {for(j=0;j<L;j++)
       if(Map[i][j]=='.')
        break;
      if(Map[i][j]=='.')
       break;
     }
    if(i==H&&j==L)//*因为i++和j++的缘故所以要i<H,j<L*//
      {win=1;
      }
    if(Map[head_x][head_y]=='@'||head_x<0||head_x>=H||head_y<0||head_y>=L)
 over=1;
}

void Move()
{
    head_x=head_x+dx[now];
head_y=head_y+dy[now];
Check_Head();     
Map[head_x][head_y]='@';
}
 
搜索更多相关主题的帖子: include 小游戏 button 
2017-04-23 15:13
挨个试试
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-23
收藏
得分:0 
来人呀
2017-04-23 17:47
挨个试试
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-23
收藏
得分:0 
大家快来看看呀
2017-04-23 17:48
挨个试试
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2017-4-23
收藏
得分:0 
顶顶
2017-04-23 17:48
快速回复:求各位帮忙看看,把下面Button()函数改掉为什么不行。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.030406 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved