java - 石头剪刀布游戏的胜者

标签 java methods

在这个剪刀石头布游戏中,我需要一种不同的方法来确定获胜者。当我运行我的程序时,其余部分运行顺利,但我不会显示获胜者。我认为它们可能是我的代码中的逻辑错误。

public static void determineWinner(String userLower, String comp) {

      String user = userLower;
      String computer = comp;

      if(user.equals(computer)) {
            System.out.println("It's a tie!");
      } else if(user.equals("rock")) {
            if(computer.equals("scissors")) {
                  System.out.println("You win!");
            }
      } else if(computer.equals("rock")) {
            if(user.equals("scissors")) {
                  System.out.println("You lose!");
            }
      } else if(user.equals("scissors")) {
            if(computer.equals("paper")){
                  System.out.println("You win!");
            }
      } else if(computer.equals("scissors")) {
            if(user.equals("paper")) {
                  System.out.println("You lose");
            }
      } else if(user.equals("paper")) {
            if(computer.equals("rock")) {
                  System.out.println("You Win!");
            }
      } else if(computer.equals("paper")) {
            if(user.equals("rock")) {
                  System.out.println("You lose!");
            }    
      }       

最佳答案

基本上,您正在测试所有可能的组合(平局除外)。使用石头剪刀布,你会得到 9 种不同的结果,其中 3 种是平局,所以还剩下 6 种。

现在想象一下,您必须对 21 世纪的变体“石头剪刀布蜥蜴史波克”执行此操作:25 种不同的结果。这是一长串 if else 的列表。

但是:所有可能的结果都可以存储到一个表中,并且该表可以根据需要小(或大)。这个表是针对RPSLS的(找不到RPS的),但是原理是一样的:

rock-paper-scissors-lizard-spock winners

您垂直选择您的选择,计算机水平选择;那么,左边的数字就是你的分数(显然,1是赢,-1是输),右边的数字是对手。

<小时/>

(编辑)这是剪刀石头布的表格。每个组合不需要两个元素,另一个总是与显示的相反。该表在列中显示获胜者,在行中显示失败者。

+----------+-------+-------+--------+
|          | Rock  | Paper |Scissors|
+----------+-------+-------+--------+
| Rock     |   0   |   1   |   -1   |
| Paper    |  -1   |   0   |    1   |
| Scissors |   1   |  -1   |    0   |
+----------+-------+-------+--------+

关于java - 石头剪刀布游戏的胜者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20214198/

相关文章:

javascript - 复制到剪贴板 React 中的斜体

java - 如何使用Java中类的成员方法从文件中读取数据?

ruby - 如何在二叉树上的 ruby​​ 中实现就地映射方法(映射!)?

java - 在实现另一个类接口(interface)的类中使用属​​性

java - 从结果集中选择(单击而不是 SQL Select)特定结果

java - 访问第二类中另一个类的 Swing 组件

java - Cassandra + Spring 数据

java - getParseObject() 返回 null

java - 循环从字符串中一一删除字符

powershell - 找不到powershell dll方法