Java控制臺實(shí)現(xiàn)猜拳游戲
本文實(shí)例為大家分享了Java控制臺實(shí)現(xiàn)猜拳游戲的具體代碼,供大家參考,具體內(nèi)容如下
1、目標(biāo)
通過控制臺實(shí)現(xiàn)一個人機(jī)對戰(zhàn)的猜拳游戲,用戶通過輸入(1.剪刀 2.石頭 3.布),機(jī)器隨機(jī)生成(1.剪刀 2.石頭 3.布),勝者積分,n 局以后通過積分的多少判定勝負(fù)。
2、源碼
根據(jù)目標(biāo)的要求,可以大概知道,我們需要的類有:
①一個用戶類User,用于獲得和存儲用戶的出拳;
②一個機(jī)器人的類Robot,用于隨機(jī)生成機(jī)器人的出拳;
③一個Game類,是存放核心代碼的類,用戶和機(jī)器人的出拳在這里進(jìn)行對比,對結(jié)果進(jìn)行記錄,最后輸出結(jié)果;
④最后是一個調(diào)用各個方法的Guess類。
直接上代碼:
User.java
import java.util.Scanner;
public class User{
static Scanner input = new Scanner(System.in);
int user = 0;//用戶出拳
int score = 0;//用戶積分
int num = 0;//對戰(zhàn)局?jǐn)?shù)
public int setUser(){
System.out.println("請輸入:1.剪刀 2.石頭 3.布");
user = input.nextInt();
if (user == 1){
System.out.println("用戶出拳:剪刀");
}else if (user == 2){
System.out.println("用戶出拳:石頭");
}else if (user == 3){
System.out.println("用戶出拳:布");
}
return user;
}
}
Robot.java
import java.util.Random;
public class Robot {
int id = 0;//獲得機(jī)器人的出手
int score = 0;//機(jī)器人的積分
//獲得機(jī)器人的出拳
public int setId(){
Random random = new Random();
int r = random.nextInt(3);
id = r + 1;//獲取機(jī)器人隨機(jī)出拳
if (id == 1){
System.out.println("機(jī)器人出拳:剪刀");
}else if (id == 2){
System.out.println("機(jī)器人出拳:石頭");
}else if (id == 3){
System.out.println("機(jī)器人出拳:布");
}
return id;
}
}
Game.java
import java.util.Scanner;
public class Game {
//對用戶類和機(jī)器人類進(jìn)行初始化
User user = new User();
Robot robot = new Robot();
public void GameStart() {
//初始化界面
System.out.println("-------------歡迎進(jìn)入猜拳游戲---------------");
System.out.println();
System.out.println("******************************************");
System.out.println("——————出拳規(guī)則:1.剪刀 2.石頭 3.布——————————");
System.out.println("-------------》》》猜拳開始《《《------------");
System.out.println("-------------------------------------------");
Scanner input = new Scanner(System.in);
//獲得用戶想要進(jìn)行的對戰(zhàn)次數(shù)
System.out.println("請輸入對戰(zhàn)局?jǐn)?shù):");
user.num = input.nextInt();
System.out.println("游戲開始");
int userFirst;//用戶出拳
int robotFirst;//機(jī)器人出拳
for (int i = 0; i < user.num; i++) {
//獲取雙方的出拳
userFirst = user.setUser();
robotFirst = robot.setId();
//判斷勝負(fù)
if (userFirst == robotFirst) {
System.out.println("結(jié)果:平局,不積分。");
} else if ((userFirst == 2 && robotFirst == 1) || (userFirst == 3 && robotFirst == 2)) {
System.out.println("結(jié)果:你贏了,加一分!");
user.score++;
} else {
System.out.println("結(jié)果:你輸了,機(jī)器人加一分。");
robot.score++;
}
}
//顯示結(jié)果
showResult();
}
//輸出對戰(zhàn)結(jié)果
private void showResult() {
//顯示對戰(zhàn)次數(shù)
System.out.println("------------------------------");
System.out.println("對戰(zhàn)次數(shù):" + user.num);
//顯示最終得分
System.out.println("\n姓名\t得分");
System.out.println("用戶" + "\t" + user.score);
System.out.println("機(jī)器人" + "\t" + robot.score + "\n");
//顯示對戰(zhàn)結(jié)果
int result = Result();
if (result == 1) {
System.out.println("結(jié)果:打成平手。");
} else if (result == 2) {
System.out.println("結(jié)果:恭喜你贏得對戰(zhàn)!");//用戶獲勝
} else {
System.out.println("結(jié)果:你輸了,不氣餒,下次再來");//計算機(jī)贏
}
System.out.println("游戲結(jié)束");
System.out.println("--------------------------");
}
//計算比賽結(jié)果
private int Result() {
if (user.score == robot.score) {
return 1;
} else if (user.score > robot.score) {
return 2;
} else {
return 3;
}
}
}
Guess.java
public class Guess {
public static void main(String[] args) {
Game game = new Game();
//調(diào)用輸出比賽結(jié)果的方法
game.GameStart();
}
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
親測SpringBoot參數(shù)傳遞及@RequestBody注解---踩過的坑及解決
這篇文章主要介紹了親測SpringBoot參數(shù)傳遞及@RequestBody注解---踩過的坑及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-10-10
SpringBoot根據(jù)目錄結(jié)構(gòu)自動生成路由前綴的實(shí)現(xiàn)代碼
本文介紹如何根據(jù)目錄結(jié)構(gòu)給RequestMapping添加路由前綴,具體實(shí)現(xiàn)方法,本文通過示例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2021-08-08
Spring 實(shí)現(xiàn)自定義監(jiān)聽器案例
這篇文章主要介紹了Spring 實(shí)現(xiàn)自定義監(jiān)聽器案例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-01-01
java調(diào)用python代碼的兩種實(shí)現(xiàn)方式:Runtime.exec()和Jython
在Java中調(diào)用Python代碼有多種方法,包括使用Runtime.exec()和第三方庫如Jython,Runtime.exec()通過系統(tǒng)命令執(zhí)行Python腳本,適用于簡單的調(diào)用場景,Jython則是一個Python的Java實(shí)現(xiàn),允許在Java中直接運(yùn)行Python代碼,適用于更深層次的集成需求2025-01-01
SpringBoot3實(shí)現(xiàn)上傳圖片并返回路徑讓前端顯示圖片
這篇文章主要介紹了SpringBoot3實(shí)現(xiàn)上傳圖片并返回路徑讓前端顯示圖片,文中通過圖文和代碼講解的非常詳細(xì),對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下2024-12-12
Java日常練習(xí)題,每天進(jìn)步一點(diǎn)點(diǎn)(13)
下面小編就為大家?guī)硪黄狫ava基礎(chǔ)的幾道練習(xí)題(分享)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧,希望可以幫到你2021-07-07
Java連接mysql數(shù)據(jù)庫以及mysql驅(qū)動jar包下載和使用方法
這篇文章主要給大家介紹了關(guān)于Java連接mysql數(shù)據(jù)庫以及mysql驅(qū)動jar包下載和使用方法,MySQL是一款常用的關(guān)系型數(shù)據(jù)庫,它的JDBC驅(qū)動程序使得我們可以通過Java程序連接MySQL數(shù)據(jù)庫進(jìn)行數(shù)據(jù)操作,需要的朋友可以參考下2023-11-11

