首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

Android 簡單剪刀石頭布遊戲邏輯實現

     編輯:程式設計疑難解答

核心邏輯

定義:石頭=1、剪刀=2、布=3。規則:(用戶 - 電腦 + 3) % 3 → 0 平、1 贏、2 輸。

完整 Java 代碼

public class RockPaperScissors {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Random rand = new Random();
        String[] gestures = {"", "石頭", "剪刀", "布"}; // 索引 1-3
        
        while (true) {
            System.out.print("請輸入 (1石頭 2剪刀 3布 0退出): ");
            int user = sc.nextInt();
            if (user == 0) break;
            if (user < 1 || user > 3) { System.out.println("輸入錯誤"); continue; }
            
            int cpu = rand.nextInt(3) + 1; // 1-3
            System.out.println("你出: " + gestures[user] + ",電腦出: " + gestures[cpu]);
            
            int diff = (user - cpu + 3) % 3;
            if (diff == 0) System.out.println("平局");
            else if (diff == 1) System.out.println("你贏了!");
            else System.out.println("你輸了!");
        }
    }
}

Android 活動版 (按鈕點擊)

public class GameActivity extends AppCompatActivity {
    private TextView tvResult;
    private Random rand = new Random();
    private String[] g = {"", "石頭", "剪刀", "布"};
    
    @Override protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);
        tvResult = findViewById(R.id.tvResult);
        findViewById(R.id.btnRock).setOnClickListener(v -> play(1));
        findViewById(R.id.btnScissors).setOnClickListener(v -> play(2));
        findViewById(R.id.btnPaper).setOnClickListener(v -> play(3));
    }
    
    private void play(int user) {
        int cpu = rand.nextInt(3) + 1;
        int diff = (user - cpu + 3) % 3;
        String msg = "你: " + g[user] + "  電腦: " + g[cpu] + "\n";
        msg += (diff == 0) ? "平局" : (diff == 1 ? "你贏了!" : "你輸了!");
        tvResult.setText(msg);
    }
}

關鍵點

  • 模數運算 `(user - cpu + 3) % 3` 完美覆蓋循環勝負關係,避免冗長 `if-else`。
  • Android UI 線程直接更新 TextView,無需 Handler。
  • 隨機數用 `Random`,加密級安全性可用 `SecureRandom`。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved