21xrx.com
2024-12-23 00:06:33 Monday
登录
文章检索 我的文章 写文章
C++实现石头剪刀布游戏
2023-06-30 18:11:22 深夜i     --     --
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;

}

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

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复