如何在达到特定坐标时调用函数

时间:2016-10-12 13:21:18

标签: c++

所以我在这里玩了一个小迷宫游戏,保持非常简单。 但是怎么可能,当播放器" 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;
    }

1 个答案:

答案 0 :(得分:1)

一个OO方式

  1. 制作一个包含您个人位置的课程
  2. 把getter&amp;获得指导的制定者
  3. 创建一个子类接口,并为此接口创建一个setter (这被称为观察者模式)
  4. 当调用coords的setter时,请调用界面上的函数。
  5. 让另一个类实现此接口。
  6. 功能方式

    每次更改x或y时调用一个函数,然后根据它们的位置将其变为更有趣的函数。