如何在到达特定坐标时调用函数
How to call a funcion when a specific coordinate is reached
这里有一个简单的迷宫游戏。但是,当玩家"O"到达迷宫中的特定点时,我怎么可能调用函数或做其他事情呢?假设他到达右下角,在他到达那里之后,屏幕应该立即清除。
#include<iostream>
#include<windows.h>
#include<conio.h>
using namespace std;
char map[20][40] = {
"#######################################",
start -->"#O X XXXXX XX #",
"# X XX XXXX XXX#",
"# XXXXXXXXXXXXX XXXXXXXX XX #",
"# XX XXX XXXXX #",
"# XXXX XXX XXXX X XX X #",
"# X XXXX X X X XX X #",
"# XX X X X X X XX X X #",
"# XX X X X X XX X X #",
"# XX X X XX XXXXXXX X #",
"# X XXXXX XXXXXX #",
"#X X X X X X XXXXX X #",
"#X X XXX X X X XXXXX X X #",
"#X X X X XXXX X X #",
"# X XX X XXXX X XX X X #",
"# XXXXXX X X X XX #",
"# X X XXXX X XXXX#",
"# XXXXXXXX X X X z#", //<--where the O arrives
"#######################################"
};
int x = 1, y = 1;
bool game_running = true;
int main()
{
while(game_running == true)
{
HANDLE hStdout;
COORD destCoord;
hStdout = GetStdHandle(STD_OUTPUT_HANDLE);
//position cursor at start of window
destCoord.X = 0;
destCoord.Y = 0;
SetConsoleCursorPosition(hStdout, destCoord);
Sleep(100);
for(int display = 0; display < 20; display++)
{
cout<<map[display]<<endl;
}
if(GetAsyncKeyState(VK_DOWN))
{
int y2 = y + 1;
if(map[y2][x] == ' ')
{
map[y][x] = ' ';
y++;
map[y2][x] = 'O';
}
}
if(GetAsyncKeyState(VK_UP))
{
int y2 = y - 1;
if(map[y2][x] == ' ')
{
map[y][x] = ' ';
y--;
map[y2][x] = 'O';
}
}
if(GetAsyncKeyState(VK_RIGHT))
{
int x2 = x + 1;
if(map[y][x2] == ' ')
{
map[y][x] = ' ';
x++;
map[y][x] = 'O';
}
}
if(GetAsyncKeyState(VK_LEFT))
{
int x2 = x - 1;
if(map[y][x2] == ' ')
{
map[y][x] = ' ';
x--;
map[y][x] = 'O';
}
}
if(GetAsyncKeyState(VK_ESCAPE))
{
game_running = false;
}
}
system("pause>nul");
cout<<"GAME OVER"<<endl;
return 0;
}
OO方式
- 创建一个包含人物位置的类
- put getter &获取坐标 的设置
- 创建一个子类接口,并为这个接口创建一个setter(这就是所谓的观察者模式)
- 当调用坐标的setter时,调用接口上的函数。 让另一个类实现这个接口。
功能方式
每次更改x或y时调用一个函数,然后根据它们的位置将其分配给更有趣的函数。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- 为什么使用 "this" 指针调用派生成员函数?
- 函数调用中参数的顺序重要吗
- OpenGL - 在抛出"__gnu_cxx::recursive_init_error"实例后终止调用?
- QGraphicsPolygonItem在拖动时未更新QPolygonF坐标
- 基于另一个成员参数将函数调用从类传递给它的一个成员
- 为什么我的C#代码在调用回C++COM直到Task时会暂停.等待/线程.加入
- 在c++类上调用void函数
- 为什么 std::unique 不调用 std::sort?
- 调用专用模板时出错"no matching function for call to [...]"
- 选择要调用的构造函数
- C++为什么尽管我调用了void函数,它却不起作用
- 构造函数正在调用一个使用当前类类型的函数
- 变量没有改变?通过向量的函数调用
- 没有为自己的结构调用列表推回方法
- 调用'begin(int [n])'没有匹配函数
- 在 openGL 中,模型坐标应该在我的 CPU 上计算还是在 GPU 上使用 OpenGL 调用计算?
- 如何通过调用 gluUnproject 两次(不使用 gluUnProject)从场景坐标中获取深度值
- 如何在到达特定坐标时调用函数