两个相互作用的线程函数(不兼容)

时间:2016-08-09 06:09:24

标签: c++ multithreading visual-c++

我遇到的情况是我的两个线程正在互相工作。

我想让程序做的是在按下一个键后直接画一个字符(字母或数字)。但是,我认为发生的事情如下:

  1. 按一个键,屏幕上出现一个特定位置的字符。
  2. 按相同的键再次移动相同的字符,但另一个字符出现在另一个预定的位置。
  3. 按相同的键,第一个字符移动一步。
  4. 第四次按下相同的键,第一个字符没有任何反应,但我认为第二个字符已在之前的位置重新绘制。
  5. 以下是我正在处理的一些代码:

    • 移动角色的代码:

      static void Move(Player player)
      {       
          char c;
          while (true)
          {
              if (_kbhit)
              {
                  c = _getch();
                  if (c == player.charPlayer[0])
                  {
                      player.posY++;
                  }
      
                  if (c == player.charPlayer[2])
                  {
                      player.posY--;
                  }
      
                  if(c == 'x')
                  {
                      cout << "Program is now breaking!\n";
                      break;
                  }
              }
              DrawChar(player);
          }
      }
      
    • 绘制角色的代码:

      static void DrawChar(Player player)
      {
          Console::gotoxy(player.posX, player.posY);
      }
      
    • 应该发生魔法:

      void StartChasing()
      {
         // Create player 1 and player 2.
         Player p1('1', 'a', 'w', 'd', 's', 10, 10);
         Player p2('2', 'g', 'y', 'j', 'h', 20, 20);
      
         thread th1(Move, p1);
         thread th2(Move, p2);
         th1.join();
         th2.join();
      }
      

    感谢您的任何建议,请原谅我的任何无知错误,因为我不熟悉堆栈溢出的方式。

0 个答案:

没有答案