如何更新使用CursorPosition插入的字符(C / Windows API)

时间:2017-03-10 06:55:00

标签: c windows api

在MinGW编译器上使用C代码。

我正在尝试制作一个简单的ASCII游戏。我使用2D数组制作地图,然后我使用了一个函数,将光标放在数组上的特定点上,通过击键WASD跟踪玩家的移动(函数是gotoXY(int x,int y)。我能够让它工作(有点),但我对一些没有按预期发布的事情有疑问。

  1. 只要用户按下按键a(向左),就会出现这段代码。未注释的部分在正确的位置打印出字符“@”,但是它不会更新应该具有表示空白图块的“ - ”的先前位置。这就是我使用注释代码的原因,然而,当我运行程序时,所有这些行都没有注释,只要按下'a'就会崩溃。 gotoXY()函数只是将光标指向它作为参数的x,y坐标。为什么我的代码在添加注释部分时会崩溃?(第18-22行)

    nil
  2. 此外,每当我按下键移动我的角色时,它在屏幕上拍摄的速度太快了。我尝试使用系统(“暂停”)来解决这个问题,但这不起作用。那么,有没有办法在按下某些按键后延迟一段时间?这样@字符在屏幕上的移动速度更慢且更一致。

  3. 功能

    if let fileUrl = dict["fileUrl"] as? String {
                let url = URL(fileURLWithPath: fileUrl)
                if let data = NSData(contentsOf: url) {
                    let image = UIImage(data: data as Data) // you can cast NSData to Data without force or optional casting
                    let photo = JSQPhotoMediaItem(image: image)
                    self.messages.append(JSQMessage(senderId: senderId, displayName: senderName, media: photo))
                }
            }
    

    图片:

    - Program before key is pressed.

    - Program after key is pressed (lines still commented)

    - Program after key is pressed (lines un-commented)

    问题:

    1.为什么我的代码会崩溃?

    2.如何快速地将我的角色从键入到屏幕减慢速度。

    完整代码:

            //gotoXY(x, y);
            //printf('-');
            x-=2;
            gotoXY(x, y);
            printf("@");
    

1 个答案:

答案 0 :(得分:1)

我们不能写这样的代码

printf('-');

但您可以将此代码编写为

printf("-");