试图为c ++ cmd游戏制作块碰撞,以便平台稳固,但不会工作

时间:2014-07-20 18:09:14

标签: c++ game-physics

我正在玩cmd游戏以获得乐趣,而且我遇到了一个问题。我已经在运动和引力方面进行了编码,但是在我最后的if语句中,我试图让角色抓住他的向下运动,如果超过' 219' char或在其他病房一块,它不起作用。如果我试图摔倒它,我最终仍会直接通过该块并删除它。下面是完整的源代码,所以你可以运行它,看看我的意思。

using namespace std;

char Map[10][81] = { " ", " ", " ", " ", " ### ", " ", " ", " ", " ", "################################################################################", }; int main() { bool start = true; char dood('0'); bool print(false); int x = 1; int y = 8; Map [y][x] = dood; int cnt = 0; int Height = 0; int space_below = Map [y + 1][x]; while(start = true) { Sleep(20); system("cls"); for(auto &c: Map) { for(auto &d: c) { if(d == '#') { d = 219; } cout << d; } cout << endl; } cout << "Height: " << Height <<" units"; if(GetAsyncKeyState(VK_RIGHT) != 0) { if(x != 79) { Map [y][x] = ' '; x++; Map [y][x] = dood; } } if(GetAsyncKeyState(VK_LEFT) != 0) { if(x != 0) { Map [y][x] = ' '; x--; Map [y][x] = dood; } } if (GetAsyncKeyState(VK_UP) != 0) { if(y < 9 && y > 0) { Map[y][x] = ' '; y--; Height++; Map[y][x] = dood; } } if(y < 8 && !GetAsyncKeyState(VK_UP)) { if(space_below != '219') { Map[y][x] = ' '; y++; Height--; Map[y][x] = dood; } } } return 0; }

*注意:在这里粘贴它们时,Inlude语句会起作用,但我包含了iostream,windows.h和time.h.

最后一个if语句是我的引力,如果玩家没有举起,并且当space_below,或者他下面的区块不是&#39; 219&#39; ascii字符,但由于某种原因,当我尝试跳到那个平台时,我做了这个并不起作用,那个角色刚刚落下并将块变成一个空格(删除它)!

我对c ++有点新鲜,所以我理解我的错误可能很简单,但我还没能在互联网上找到解决办法。非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:2)

答案很简单:您正在将文字'219'与数字219进行比较,这不是同一件事。令牌实际上是完全不同的值。编译器没有报告类型错误是巧合。

有关单引号字符串实际是什么的更多详细信息,请参阅this stackoverflow question(我自己也不知道)。