java實(shí)現(xiàn)猜拳游戲試題
本文實(shí)例為大家分享了java實(shí)現(xiàn)猜拳游戲的具體代碼,供大家參考,具體內(nèi)容如下
試題描述
通過(guò)控制臺(tái)方式實(shí)現(xiàn)一個(gè)人機(jī)對(duì)戰(zhàn)的猜拳游戲,用戶通過(guò)輸
入(1.剪刀 2.石頭 3.布),機(jī)器隨機(jī)生成(1.剪刀 2.石頭 3.布),勝者積分,n 局以后通過(guò)積分的多少判定勝負(fù)。
使用面向?qū)ο缶幊趟枷雽?shí)現(xiàn)一個(gè)猜拳游戲,以下代碼僅供參考!
思路
(1)首先需要明確的對(duì)象有哪些,玩家以及機(jī)器,和游戲規(guī)則;
(2)玩家需要出拳,機(jī)器隨機(jī)出拳,游戲規(guī)則就是判斷輸贏和積分的多少,并顯示最后的結(jié)果。
1.定義一個(gè)玩家類player
代碼如下(示例):
public class Player {
Scanner sc;
public void initPl() {
sc = new Scanner(System.in);
}
//玩家出拳方法
public int showFinger() {
System.out.println("請(qǐng)輸入您的出拳:1.剪刀,2.石頭,3.布,4.結(jié)束本局");
int result = sc.nextInt();
return result;
}
}
2.定義一個(gè)機(jī)器類Compyter
代碼如下(示例):
public class Computer {
Random random;
public void initCom() {
random = new Random();
}
//電腦開(kāi)始出拳,返回1到3的隨機(jī)數(shù)
public int showFingerCom() {
return random.nextInt(3)+1;
}
}
3.定義一個(gè)游戲類Game,包括初始化,得分規(guī)則,顯示設(shè)置等方法
(1)初始化方法init()
代碼如下(示例):
public void init() {
player = new Player();
player.initPl();
computer = new Computer();
computer.initCom();
sc = new Scanner(System.in);
count = 0;//局?jǐn)?shù)為0
Grade = 0;//分?jǐn)?shù)為0
}
(2)計(jì)算每次得分方法Grades()
代碼如下(示例):
public int Grades(int plg,int comg,int num) {
int a = 0;
if(plg==1&comg==3 | plg==2&comg==1 | plg==3&comg==2) {
System.out.println("第"+num+"局,恭喜您這局贏了");
a = 1;
}else if(plg==1&comg==2 | plg==2&comg==3 | plg==3&comg==1) {
System.out.println("第"+num+"局,很抱歉,這局您輸了");
a = -1;
}else if (plg==comg) {
System.out.println("第"+num+"局,這局平局");
a = 0;
}
return a;
}
(3)輸出游戲結(jié)果方法print(),同時(shí)需要將字符串顯示方法punchesName()
代碼如下(示例):
public void print(int sum,int sumGrade) {
System.out.println("游戲結(jié)束!");
if(sumGrade<0) {
System.out.println("本次游戲進(jìn)行"+sum+"局,您的得分為:"+sumGrade+"分,本次游戲很遺憾您輸了");
}else if(sumGrade==0) {
System.out.println("本次游戲進(jìn)行"+sum+"局,您的得分為:"+sumGrade+"分,本次游戲平局");
}else if(sumGrade>0) {
System.out.println("本次游戲進(jìn)行"+sum+"局,您的得分為:"+sumGrade+"分,恭喜您贏了");
}
}
//數(shù)字轉(zhuǎn)變?yōu)樽址糜诮Y(jié)果顯示
public String punchesName(int result) {
String str = "";
switch(result) {
case 1: str = "剪刀";break;
case 2: str = "石頭";break;
case 3: str = "布";break;
}
return str;
}
(4)開(kāi)始游戲方法start()
代碼如下(示例):
public void start() {
while(flag) {
int playerPunches = player.showFinger();
switch(playerPunches) {
case 1:
case 2:
case 3:{
count++;
System.out.println("您出的是:"+punchesName(playerPunches));
int comPunches = computer.showFingerCom();
System.out.println("機(jī)器出的是:"+punchesName(comPunches));
int ge = Grades(playerPunches,comPunches,count);
Grade+=ge;//總得分
break;
}
case 4:{
print(count,Grade);//輸出總得分與局?jǐn)?shù)
flag = false;//結(jié)束循環(huán),結(jié)束游戲
break;
}
default:
System.out.println("輸入有誤,請(qǐng)重新輸入");break;
}
}
}
(5)游戲類的定義Game
代碼如下(示例):
public class Game {
Player player;
Computer computer;
int count;//局?jǐn)?shù)
Scanner sc;
int Grade;//得分
boolean flag = true;
、、、、初始化,得分,輸出.....
4.主程序入口Main
代碼如下(示例):
public static void main(String[] args) {
System.out.println("歡迎進(jìn)行猜拳游戲!");
Game game = new Game();
game.init();//游戲初始化
game.start();//游戲開(kāi)始
}
總結(jié)
以上就是今天試題要分享的內(nèi)容,根據(jù)面向?qū)ο笏悸罚瑑H僅簡(jiǎn)單介紹自定義類和方法的定義和使用,以上代碼僅供交流學(xué)習(xí)。
- Java實(shí)戰(zhàn)之飛翔的小鳥(niǎo)小游戲
- Java實(shí)現(xiàn)五子棋游戲
- JAVA實(shí)現(xiàn)的CrazyArcade泡泡堂游戲
- Java實(shí)現(xiàn)的迷宮游戲
- java實(shí)戰(zhàn)之飛機(jī)大戰(zhàn)小游戲(源碼加注釋)
- Java實(shí)戰(zhàn)入門之雙色球彩票小游戲
- java實(shí)戰(zhàn)之猜字小游戲
- Java實(shí)現(xiàn)簡(jiǎn)單的貪吃蛇小游戲
- 基于Java實(shí)現(xiàn)簡(jiǎn)單貪吃蛇游戲
- 利用java開(kāi)發(fā)簡(jiǎn)易版掃雷游戲
- java簡(jiǎn)易小游戲制作代碼
- java實(shí)現(xiàn)2048小游戲(含注釋)
- java實(shí)現(xiàn)簡(jiǎn)單的猜數(shù)字小游戲
- java實(shí)現(xiàn)飛機(jī)大戰(zhàn)游戲
- java實(shí)現(xiàn)四子棋游戲
- Java實(shí)戰(zhàn)之王者榮耀的英雄是怎么產(chǎn)生的?
相關(guān)文章
SpringCloud之@FeignClient()注解的使用方式
這篇文章主要介紹了SpringCloud之@FeignClient()注解的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-09-09
詳解Java8新特性之interface中的static方法和default方法
這篇文章主要介紹了Java8新特性之interface中的static方法和default方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-08-08
解決Java原生壓縮組件不支持中文文件名亂碼的問(wèn)題
本篇文章主要介紹了解決Java原生壓縮組件不支持中文文件名亂碼的問(wèn)題,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
Spring Data JPA使用JPQL與原生SQL進(jìn)行查詢的操作
這篇文章主要介紹了Spring Data JPA使用JPQL與原生SQL進(jìn)行查詢的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
springboot中@ConfigurationProperties無(wú)效果的解決方法
本文主要介紹了springboot中@ConfigurationProperties無(wú)效果,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-06-06
mybatis-plus雪花算法自動(dòng)生成機(jī)器id原理及源碼
Mybatis-Plus是一個(gè)Mybatis的增強(qiáng)工具,它在Mybatis的基礎(chǔ)上做了增強(qiáng),卻不做改變,Mybatis-Plus是為簡(jiǎn)化開(kāi)發(fā)、提高開(kāi)發(fā)效率而生,但它也提供了一些很有意思的插件,比如SQL性能監(jiān)控、樂(lè)觀鎖、執(zhí)行分析等,下面一起看看mybatis-plus雪花算法自動(dòng)生成機(jī)器id原理解析2021-06-06
springboot項(xiàng)目攔截前端請(qǐng)求中的特殊字符串(解決方案)
springboot項(xiàng)目中,需要對(duì)前端請(qǐng)求數(shù)據(jù)進(jìn)行過(guò)濾,攔截特殊字符,本文通過(guò)實(shí)例代碼給大家分享完美解決方案,感興趣的朋友一起看看吧2023-10-10
Spring Boot與Kotlin處理Web表單提交的方法
本篇文章主要介紹了Spring Boot 與 Kotlin 處理Web表單提交的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01

