用Java编写的石头剪刀布游戏应用

这是我第一次投稿。
我制作了一个经过大量撰写的石头剪子布应用程序。

制作时间:2天
语言:Java
环境:MacOS、终端
文本编辑器:Atom

这是一个通过命令操作的游戏。
游戏规则如下所示。

    • 3回勝負

 

    • じゃんけんの手は配列で管理

 

    • CPUはランダムな数値を作成して手を決める

 

    • プレイヤーは入力された文字を数値に変えて手を決める

 

    • 数値で勝敗を判定する

 

    最後に勝負の結果を表示する

实际的屏幕看起来是这个样子的。

スクリーンショット 2018-08-23 2.15.35.png

石头剪刀布课程 bù

这是一个对战类的课程。

package jankenapp;

public class Janken {
  static String[] handList = {"グー","チョキ","パー"};

  static void startMessage() {
    System.out.println("--------------------");
    System.out.println("じゃんけんをしましょう!3回勝負です!");
  }

  static void endMessage() {
    System.out.println("ありがとうございました!また遊びましょうね!");
    System.out.println("--------------------");
  }

  public static void main(String[] args) {
    Player player = new Player();
    CPU cpu = new CPU();
    Judge judge = new Judge();

    // 開始の挨拶
    startMessage();

    for (int i = 1; i <= 3; i++) {
     System.out.println("【" + i + "回戦目】");

     // CPUが手をランダムに作成
     cpu.setHand();
     // Playerが手を入力
     player.setHand();
     // Player,CPUの手を表示
     System.out.println("・あなたの手:" + handList[player.getHand()]);
     System.out.println("・わたしの手:" + handList[cpu.getHand()]);
     // 判定
     judge.judgement(cpu.getHand(), player.getHand());
    } // 繰り返し終わり
    // 結果を表示
    judge.result();
    // 終了の挨拶
    endMessage();
  }
}

玩家类

我正在使用Scanner来获取手部输入的字符串,并通过switch语句将其转换为数字。

package jankenapp;
import java.util.*;

public class Player {
  int hand;

  public void setHand() {
    System.out.print("「グー」「チョキ」「パー」のどれかを入力してください。>");
    Scanner sc = new Scanner(System.in);
    String inputHand = sc.nextLine();

    switch(inputHand) {
      case "グー":
        hand = 0;
        break;
      case "チョキ":
        hand = 1;
        break;
      case "パー":
        hand = 2;
        break;
      default:
        System.out.println("間違えたので終了します…。");
    }
  }

  public int getHand() {
    return hand;
  }
}

CPU类

我們正在使用隨機方法隨機選擇手勢。

package jankenapp;
import java.util.*;

public class CPU {
    int hand;

    public void setHand() {
     double rand = Math.random() * 3;
     hand = (int)rand;
    }

    public int getHand() {
      return this.hand;
    }
}

法官类

这是一个用于判断胜负并显示比赛结果的类。判断方法是将每个人的手势转化为数字,通过(CPU的手势-玩家的手势+3)%3 来计算。我们通过计数玩家赢的次数、输的次数和平局的次数,并通过if语句显示结果。

Package jankenapp;

public class Judge {
  int judge;
  int win;
  int lose;
  int even;

  public void judgement(int cpuHand, int playerHand) {
    judge = (cpuHand - playerHand + 3 ) % 3;

    switch(judge) {
      case 0:
        System.out.println("あいこです!");
        even++;
        break;
      case 1:
        System.out.println("あなたの勝ちです!");
        win++;
        break;
      case 2:
        System.out.println("あなたの負けです!");
        lose++;
        break;
      default:
    }
    System.out.println("--------------------");
  }

  public void result() {
    System.out.println("【勝敗の結果】");
    System.out.println("勝ち:" + win + "回");
    System.out.println("負け:" + lose + "回");
    System.out.println("あいこ:" + even + "回");
    System.out.println("");
    if (win > lose) {
      System.out.println("この勝負はあなたの勝ちです!おめでとう!");
    } else if (win < lose) {
      System.out.println("この勝負はあなたの負けです!どんまい!");
    } else {
      System.out.println("この勝負は引き分けです!");
    }
  }
}

如果有令人不悦之处 ,很抱歉因为是自学的。
如果能给予指导意见等,我会很高兴。

感谢您一直阅读到最后。

【参考】借鉴一下石头剪刀布算法
(参考了判定式的思路。)

(8/23) 我意识到即使输入错误,默认值仍然会显示“剪刀”。我将采取措施来解决这个问题。

广告
将在 10 秒后关闭
bannerAds