How to Update Characters Inserted With CursorPosition (C/Windows API)
在 CODELIGHT 上使用 C 和 MinGW 编译器。
我正在尝试制作一个简单的 ASCII 游戏。我使用 2D 数组来制作地图,然后我使用了一个函数,将光标放在数组上的特定点上,通过击键 WASD(函数是 gotoXY(int x,int y)来跟踪玩家的移动。我能够让它工作(有点),但我对一些没有按预期出现的事情有疑问。
每当用户按下键 a(向左)时,我的代码片段就会出现。未注释的部分在正确的位置打印出字符 \\’@\\’,但是它不会更新应该具有表示空白图块的 \\’-\\’ 的先前位置。这就是我使用注释代码的目的,但是,当我在所有这些行都未注释的情况下运行程序时,只要我按下 \\’a\\’,它就会崩溃。 gotoXY() 函数只是将光标指向它作为参数的 x、y 坐标。为什么添加注释部分时我的代码会崩溃?(第 18-22 行)
1
2 3 4 5 |
另外,每当我按下键移动我的角色时,它在屏幕上的射击速度太快了。我尝试使用 system(“pause”) 来解决这个问题,但没有奏效。那么,有没有办法在按下某些键后延迟一段时间?这样,@ 字符在屏幕上的移动速度更慢且更一致。
功能:
1
2 3 |
printBoard(char board[50][50]); //Prints the gameboard just a 50 by 50 tile
createBoard(int size, int xPos, int yPos); //Creates the array gotoXY(int x, int y); //Sets position of Cursor |
图片:
-在按键之前编程。
– 按键后的程序(行仍然注释)
-按键后编程(行未注释)
问题:
1.为什么我的代码会崩溃?
2.如何让我的角色从快速输入屏幕的速度变慢。
完整代码:
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 68 69 70 71 72 73 74 75 76 77 78 79 80 81 |
#include <stdio.h>
#include <stdlib.h> #include <Windows.h>
void createBoard(int size, int xPos, int yPos); while(1){ } void printBoard(char board[50][50]){ for(i = 0; i < 50; i++){ void createBoard(int size, int xPos, int yPos){ for(i = 0; i < size; i++){ sampleBoard[xPos][yPos] = person; void gotoXY(int x, int y) { } |
我们不能这样写代码
1
|
但是你可以把这段代码写成
1
|
- 有时我简直不敢相信自己的愚蠢,谢谢。
来源:https://www.codenong.com/42712142/