21xrx.com
2025-03-27 17:23:58 Thursday
文章检索 我的文章 写文章
C++实现石头剪刀布游戏
2023-06-30 18:11:22 深夜i     15     0
C++ 石头剪刀布 游戏 实现 编程

石头剪刀布是一款经典的游戏,现在我们可以利用C++语言来实现这个游戏,让我们来看看具体实现方法。

首先,我们需要定义三种不同的出拳方式,即石头、剪刀和布。我们可以使用枚举类型来实现,代码如下:

enum Move
  SCISSORS
;

接着,我们需要定义一个比较函数,用于比较两个出拳方式的胜负。比较函数返回值为一个整数,表示第一个出拳方式的胜负情况,0表示平局,1表示第一个出拳方式胜利,-1表示第二个出拳方式胜利。比较函数代码如下:

int compareMove(Move first, Move second) {
  if (first == second)
    return 0;
   else if (first == ROCK && second == SCISSORS || first == PAPER && second == ROCK || first == SCISSORS && second == PAPER)
    return 1;
   else
    return -1;
  
}

接着,我们可以定义一个游戏函数,由玩家输入自己的出拳方式,并随机生成电脑的出拳方式,然后调用比较函数,输出胜负结果。游戏函数代码如下:

void playGame() {
  Move playerMove, computerMove;
  cout << "请选择出拳方式(1.石头 2.剪刀 3.布):";
  int choice;
  cin >> choice;
  switch (choice) {
    case 1:
      playerMove = ROCK;
      cout << "你出了石头。" << endl;
      break;
    case 2:
      playerMove = SCISSORS;
      cout << "你出了剪刀。" << endl;
      break;
    case 3:
      playerMove = PAPER;
      cout << "你出了布。" << endl;
      break;
    default:
      cout << "输入无效,请重新选择。" << endl;
      playGame();
      return;
  }
  srand(time(NULL));
  computerMove = (Move)(rand() % 3);
  switch (computerMove)
    case 1:
      cout << "电脑出了石头。" << endl;
      break;
    case 2:
      cout << "电脑出了剪刀。" << endl;
      break;
    case 3:
      cout << "电脑出了布。" << endl;
      break;
  
  int result = compareMove(playerMove, computerMove);
  if (result == 0)
    cout << "平局。" << endl;
   else if (result == 1)
    cout << "你赢了!" << endl;
   else
    cout << "你输了。" << endl;
  
}

最后,我们可以在主函数中调用游戏函数,让玩家可以不停地玩游戏,直至玩家选择退出。主函数代码如下:

int main() {
  bool playAgain = true;
  while (playAgain) {
    playGame();
    cout << "是否重新开始?(y/n)";
    char choice;
    cin >> choice;
    if (choice != 'y' && choice != 'Y')
      playAgain = false;
    
  }
  return 0;
}

通过以上步骤,我们就可以实现一个简单的石头剪刀布游戏。当然,我们也可以根据需求进行更多的功能扩展,例如记录胜负记录、增加游戏难度等等。

  
  

评论区