c语言-C语言五子棋获得上下左右键问题

问题描述

C语言五子棋获得上下左右键问题

bool getmove(NODE chessboard[][17]) // 获取光标移动,并响应,当按下悔棋、下子、退出热键时,返回true
{
char c;

for (;;)
{//循环开始
    c = getch();
    if (c == -32)
        switch (getch())
    {
        case 72:   // 上
            cursor.x--;
            if (cursor.x < 1)
                cursor.x = 1;//就是不能越界
            renew(chessboard, cursor.x + 1, cursor.y);
            renew(chessboard, cursor.x, cursor.y);
            break;
        case 80:   // 下
            cursor.x++;
            if (cursor.x > 15)
                cursor.x = 15;
            renew(chessboard, cursor.x - 1, cursor.y);
            renew(chessboard, cursor.x, cursor.y);
            break;
        case 75:   // 左
            cursor.y--;
            if (cursor.y < 1)
                cursor.y = 1;
            renew(chessboard, cursor.x, cursor.y + 1);
            renew(chessboard, cursor.x, cursor.y);
            break;
        case 77:   // 右
            cursor.y++;
            if (cursor.y > 15)
                cursor.y = 15;
            renew(chessboard, cursor.x, cursor.y - 1);
            renew(chessboard, cursor.x, cursor.y);
            break;
    }
    else if (c == 27) {   //退出
        quit = true;
        return true;
    }
    else if (c == 13 && chessboard[cursor.x][cursor.y].step == 0)
        return true;   // 下子
    else if (c == 'U' || c == 'u') {   // 悔棋
        regret = true;
        return true;
    }
}//循环结束

}
那个C=-32是什么意思啊,既然C都等于-32了,怎么后面switch还能选择其他情况啊?

解决方案

-32相当于224
后面switch的不是c而是getch,也就是下一个字符码

解决方案二:

getch每执行一次,都会读取下一个字符。

时间: 2024-10-29 09:36:03

c语言-C语言五子棋获得上下左右键问题的相关文章

算法-用一个C语言程序评判五子棋胜负(非人工智能),总是不过,求解

问题描述 用一个C语言程序评判五子棋胜负(非人工智能),总是不过,求解 11155 ly与lyon的终极巅峰对决 时间限制:1000MS 内存限制:65535K 提交次数:566 通过次数:130 题型: 编程题 语言: G++;GCC Description 从前有一天,ly与lyon在讨论人工智能里面的博弈问题,恰好,他们提到了五子棋. 当然,这里说的五子棋是指无禁手(不知道什么是禁手的也不用管了,跟这题没关系)的五子棋: 黑先下,黑白轮流下,最先在横竖斜任一方向上形成连续的5个子(或以上)

js实现键盘上下左右键选择文字并显示在文本框的方法

  本文实例讲述了js实现键盘上下左右键选择文字并显示在文本框的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67

js键盘上下左右键怎么触发function

 这篇文章主要是对js键盘上下左右键怎么触发function 进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 代码如下: <script type="text/javascript">  function jumpPage() {      if (event.keyCode==37)//左  fun_a();  if (event.keyCode==38)//上  fun_b();  if (event.keyCode==39)//右  fun_c()

js 上下左右键控制焦点

 这篇文章主要是对js上下左右键控制焦点的示例代码进行了详细的介绍,需要的朋友可以过来参考下,希望对大家有所帮助 如下所示: 代码如下: //begin---------------上下左右键控制   if('${iscontrol_mchntid}'.indexOf('${mchntid}')!=-1){   var texts = new Array(); //设置为focus所在的location var x = 2; var y = 3; var maxx = 0; var maxy =

win7如何更改语言 电脑语言改成英文的方法

今年evad3rs团队发布的iOS 7完美越狱工具有些特殊,中国版iOS7完美越狱工具中,捆绑有太极助手插件,此插件类似流氓插件,容易导致iOS越狱设备出现白苹果现象(国外版无此插件).目前比较好的解决办法是:在使用电脑中越狱的时候,将电脑语言改为英文,可绕过该插件.但很多电脑小白用户还不知道如何更改电脑语言,因此本文将为大家详细介绍下电脑语言更改教程. 如何更改电脑语言 电脑语言改为英文方法 以下笔者以Windows 7系统截图演示,教大家如何更改电脑语言.其他XP或者Win8系统设置方法与此

ubuntu vi上下左右键无法使用?

使用vm安装ubuntu出现vi上下左右键无法正常使用. 执行以下两句就可以了  $sudo apt-get remove vim-common    $sudo apt-get install vim

c语言-C语言递归的内存释放问题

问题描述 C语言递归的内存释放问题 我用C语言实现alpha-beta极小极大算法来做一个棋类游戏的AI,博弈树是用递归的方式构造的,然后发现AI每下一步程序的内存都在增大,原来是因为递归没有释放内存. 耗内存的指针是棋盘 char ** chessboard; 于是我在递归函数的每一个return之前都把 chessboard 给释放了,发现内存还是一直在涨,求解.. 解决方案 把递归函数实现贴出来. 解决方案二: 估计释放的不全.二级指针要分两级释放. 解决方案三: 二级指针的释放是要分两步

在winform中捕获上下左右键等控制键的按键事件

最近一直在做表单设计器,今天有一个需求就是:通过上下左右键来控制表单上的控件移动.但是控件的KeyDown捕获不到上下左右键,KeyUp事件倒是可以捕获到,但你通过上下左右键移动控件位置,不能点一下才移动一下啊,太不人性了.上网找了半天发现了这么一个方法: 重写Control的ProcessDialogKey方法,此处以winform表单为例: protected override bool ProcessDialogKey(Keys keyData) { Control control = t

通过上下左右键和回车键切换光标实现代码_jquery

做项目时,客户提出这样一个要求,在列表中的文本框里输入数据时,要能够通过上下左右键来切换光标,按回车键就把光标移到下一个文本框.这样就省得一直去用鼠标了,操作起来更方便. 不废话,上代码. 复制代码 代码如下: <asp:GridView id="gdv" runat="server" AllowPaging="True" PageSize="50" AutoGenerateColumns="False&quo