| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 505 人关注过本帖
标题:liunx环境下getch()函数的问题
只看楼主 加入收藏
魏彬
Rank: 1
来 自:江苏无锡
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-3-4
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
liunx环境下getch()函数的问题
各位大虾:
        小的现在在编写贪吃蛇的游戏,在linux环境下,使用curses库。我想用4个方向键控制控制蛇的走向。主要代码如下:
                ch=getch();
    switch(ch)
    {
        case KEY_UP     :     if(m==KEY_DOWN)    break;
                                else    {tail->x--;steps++;m=KEY_UP;}
                            break;
        case KEY_DOWN    :     if(m==KEY_UP)    break;
                                else    {tail->x++;steps++;m=KEY_DOWN;}
                            break;
        case KEY_RIGHT    :     if(m==KEY_LEFT)    break;
                                else    {tail->y++;steps++;m=KEY_RIGHT;}   
                            break;  
        case KEY_LEFT    :     if(m==KEY_RIGHT) break;
                                else    {tail->y--;steps++;m=KEY_LEFT;}
                            break;  
            
    }
   按键改变蛇的走向功能是实现了,但是蛇必须按键才动,不按键他就停在那等你按键。比如你按->,蛇往右走一步,你再按下->,再往右走一步,你不按,他不动 等你按键。这贪吃蛇的蛇必须自己动啊,按键只是改变走向。希望大虾们指点下啊!!多谢
搜索更多相关主题的帖子: 贪吃蛇 linux 游戏 
2011-03-23 18:17
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
收藏
得分:4 
其实把这些语句放入一个while循环里面   然后循环的条件是是C语言里面的 kbhit
while(1)//
    {//
        while(!kbhit())  // 没有按键按下
        {      
            sanke.run();//way是个全局的变量  这个函数会根据way来跑
            Sleep(150);//
        } //
    way = getch();    //如果按下了键盘  那么way就会被改变 然后继续跳到while(!kbhit())  // 没有按键按下去执行

    } //
楼主把这代码嵌入到你的程序里  就可以了

                                         
===========深入<----------------->浅出============
2011-03-23 19:27
魏彬
Rank: 1
来 自:江苏无锡
等 级:新手上路
帖 子:4
专家分:0
注 册:2011-3-4
收藏
得分:0 
  试了下 貌似没用哎。。kbhir()函数  linux下没有  网上找了一个模拟的  不过没有效果
2011-03-24 15:38
刘定邦
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:687
专家分:1570
注 册:2010-9-21
收藏
得分:4 
强。我也想弄一个。就是弄不出来。
2011-03-24 19:01
新手写程序
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:62
专家分:120
注 册:2011-3-5
收藏
得分:4 
貌似这样也可以简单的一个输入
#include <stdio.h>
#include <stdlib.h>
int main(void){
    int c;

    system("stty raw");
    while('a' != (c = getchar())){
        system("stty cooked");
        putchar(c);
        printf("\n");
        system("stty raw");
    }
    system("stty cooked");

    return 0;
}
2011-03-24 20:16
xzy199999
Rank: 4
等 级:业余侠客
帖 子:326
专家分:286
注 册:2010-11-19
收藏
得分:4 
本人菜鸟,实在看不懂的飘过

我是初学者
2011-03-25 11:33
快速回复:liunx环境下getch()函数的问题
数据加载中...
 
   



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

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