| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1376 人关注过本帖
标题:关于贪吃蛇游戏的
只看楼主 加入收藏
yxwsbobo
Rank: 5Rank: 5
等 级:职业侠客
帖 子:345
专家分:306
注 册:2007-10-29
结帖率:100%
收藏
已结贴  问题点数:100 回复次数:14 
关于贪吃蛇游戏的
最近教别人写个小游戏,突然发现似乎有点困难

记得这里有很多贪吃蛇游戏,所以来问问



控制蛇走假设为'W'

那么getchar  可以获取到 W  但是 getchar 是同步函数,是会让程序等待的,这个时候游戏画面就无法移动了,不知道大家是怎么解决这个问题的,觉得异步输入似乎是个好的解决办法?


因为是教别人C语言  所以要求使用C语言中的内容,因为课本中没有多线程  所以使用单线程,要求使用控制台
搜索更多相关主题的帖子: 小游戏 贪吃蛇 多线程 控制台 C语言 
2011-07-07 12:04
njkido
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:224
专家分:1184
注 册:2011-3-8
收藏
得分:0 
看来还是多线程吧

或者 用sleep或者WaitForSingleObject等待

[ 本帖最后由 njkido 于 2011-7-7 19:03 编辑 ]
2011-07-07 18:58
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:100 
用不着多线程  附上代码
程序代码:
#include <stdio.h>
#include <windows.h>
#include <conio.h>
int main()
{
    char way = 'd';
    while(1)
    {//
        while(!kbhit())//检测是否按下了键 按下了不进入循环  每按下进入循环输出当前方向
        {      
            switch(way)
            {
            case 'w':
                printf("w\n");
                break;
            case 'a':
                printf("a\n");
                break;
            case 's':
                printf("s\n");
                break;
            case 'd':
                printf("d\n");
                break;
            }
            Sleep(150);//间隔150毫秒
        }
        way = getch();//按下了键 那么way就会改变
    }
}

                                         
===========深入<----------------->浅出============
2011-07-07 19:11
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
运行之后按w a s d然后就会按照你按下的输出

                                         
===========深入<----------------->浅出============
2011-07-07 19:13
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 3楼 laoyang103
kbhit()是头文件里有的函数吗?就是用来判断是否有按键消息的?

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-07-07 19:43
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
我觉得还是用GDI好,方便。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-07-07 19:44
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
回复 5楼 waterstar
conio.h 里面的函数

[ 本帖最后由 laoyang103 于 2011-7-9 11:26 编辑 ]

                                         
===========深入<----------------->浅出============
2011-07-07 20:22
waterstar
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:5
帖 子:984
专家分:2810
注 册:2010-2-12
收藏
得分:0 
回复 7楼 laoyang103
谢谢。

冰冻三尺,非一日之寒;士别三日,不足刮目相看!
2011-07-08 08:25
yangfanconan
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:10
帖 子:397
专家分:541
注 册:2009-9-22
收藏
得分:0 
我怎么记得有检测按键函数呢?
2011-07-08 11:33
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:0 
就是这个函数 kbhit

                                         
===========深入<----------------->浅出============
2011-07-08 15:16
快速回复:关于贪吃蛇游戏的
数据加载中...
 
   



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

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