最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java入門案列之猜拳小游戲

 更新時間:2019年11月30日 12:34:37   作者:禿頂少女  
這篇文章主要為大家詳細(xì)介紹了Java入門案列之猜拳小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

最近正在學(xué)習(xí)Java基礎(chǔ)知識,終于完成了第一個小demo,記錄下來,算是一個小總結(jié)與整理,也希望可以幫助到別人。

先看看我寫了哪些類:

Player:玩家類;

ComputerPlayer:機(jī)器人玩家類,主要用來實(shí)現(xiàn)機(jī)器人隨機(jī)出拳;

Game:游戲類,主要實(shí)現(xiàn)游戲規(guī)則的邏輯,以及正式游戲的邏輯;

TestGuessBox:代碼測試類;

Player類:

//玩家類
public class Player {
 private String name; //玩家昵稱
 private int score; //玩家積分
 private String box; //玩家出的
 
 //玩家構(gòu)造函數(shù),傳入玩家昵稱與玩家初始積分
 Player(String name,int score){
 this.name=name;
 this.score=score;
 }
 
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public int getScore() {
 return score;
 }
 public void setScore(int score) {
 this.score = score;
 }
 public String getBox() {
 return box;
 }
 public void setBox(String box) {
 this.box = box;
 }
 
 
}

ComputerPlayer類

public class ComputerPlayer extends Player {
 
 
 //機(jī)器人玩家構(gòu)造函數(shù),傳入機(jī)器人昵稱與初始積分
 ComputerPlayer(String name, int score) {
 super("機(jī)器人"+name, score);
 // TODO Auto-generated constructor stub
 }
 
 /**
 * 實(shí)現(xiàn)機(jī)器人玩家隨機(jī)出拳的邏輯
 */
 void punch() {
 String[] box = {"剪刀","石頭","布"};
 int index =(int) (Math.random()*3);
 
 this.setBox(box[index]);
 }
}

Game類

import java.util.Scanner;
 
public class Game {
 Player p; //玩家
 ComputerPlayer cp; //機(jī)器人玩家
 
 //構(gòu)造函數(shù),得到一個玩家和一個機(jī)器人玩家
 Game(Player p, ComputerPlayer cp) {
 this.p = p;
 this.cp = cp;
 }
 
 //開始游戲
 void start() {
  System.out.println("玩家"+p.getName()+
   "和"+cp.getName()+"開始游戲咯");
  System.out.println("您的初始積分為:"+p.getScore()+
   "\n"+cp.getName()+"的積分是:"+cp.getScore());
  Scanner sc=new Scanner(System.in);
  while(true) {
  
  System.out.println("請出拳(剪刀石頭布,exit退出游戲):");
  String pbox=sc.next();
  if(filter(pbox)) { //過濾器
   if(pbox.equals("exit")) { //退出游戲
   break;
   }else {
   p.setBox(pbox);
   cp.punch();
   System.out.println("您出了:"+p.getBox());
   System.out.println(cp.getName()+"出了:"+cp.getBox());
   int result = ruler(p,cp);
   if(result>0) {
    System.out.println("您贏了,贏得10積分");
    p.setScore(p.getScore()+10);
    cp.setScore(cp.getScore()-10);
   }
   else if(result<0) {
    System.out.println("您輸了,扣除10積分");
    p.setScore(p.getScore()-10);
    cp.setScore(cp.getScore()+10);
   }
   else {
    System.out.println("您和機(jī)器人打平了!");
   }
   }
  }
  
  else {
  System.out.println("輸入了無法識別的關(guān)鍵字,請重新輸入:");
  continue; //退出本次循環(huán),進(jìn)入下一次循環(huán)
  }
  
  } 
  
  System.out.println("本輪結(jié)束,積分情況如下:");
  System.out.println("您的當(dāng)前積分:"+p.getScore());
  System.out.println(cp.getName()+"的當(dāng)前積分:"
  +cp.getScore());
  
 }
 
 /**
 * 游戲規(guī)則
 * 
 * @param p1 玩家1
 * @param cp2 機(jī)器玩家2
 * @return 0為打平,1為玩家贏,-1為機(jī)器玩家贏
 */
 int ruler(Player p1, Player cp2) {
 
 if (p1.getBox().equals("剪刀")) {
  if (cp2.getBox().equals("石頭"))
  return -1;
  else if (cp2.getBox().equals("布"))
  return 1;
 } else if (p1.getBox().equals("石頭")) {
  if (cp2.getBox().equals("剪刀"))
  return 1;
  else if (cp2.getBox().equals("布"))
  return -1;
 } else if (p1.getBox().equals("布")) {
  if (cp2.getBox().equals("剪刀"))
  return -1;
  else if (cp2.getBox().equals("石頭"))
  return 1;
 }
 return 0;
 }
 
 /**
 * 過濾器
 * @param s 需要過濾的文字
 * @return
 */
 boolean filter(String s) {
 if (s.equals("剪刀") || s.equals("石頭") || s.equals("布") || s.equals("exit")) {
  return true;
 } else
  return false;
 }
}

TestGuessBox類

public class TestGuessBox {
 
 public static void main(String[] args) {
 // TODO Auto-generated method stub
 Player p =new Player("小七月",100);
 ComputerPlayer cp=new ComputerPlayer("小丑八怪",100);
 Game game=new Game(p,cp);
 game.start();
 
 }
 
}

很簡單,理清了思路就很容易寫了。如果有錯誤請指出。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java中Cron表達(dá)式的生成解析及計算的工具類完整代碼

    Java中Cron表達(dá)式的生成解析及計算的工具類完整代碼

    這篇文章主要給大家介紹了關(guān)于Java中Cron表達(dá)式的生成解析及計算工具類的相關(guān)資料,Cron表達(dá)式是一個字符串,字符串空格分割,每一個域代表一個含義,一個cron表達(dá)式有至少6個,需要的朋友可以參考下
    2023-12-12
  • Java 文件傳輸助手的實(shí)現(xiàn)(單機(jī)版)

    Java 文件傳輸助手的實(shí)現(xiàn)(單機(jī)版)

    這篇文章主要介紹了Java 文件傳輸助手的實(shí)現(xiàn)(單機(jī)版),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • MyBatis中 #{} 和 ${} 的區(qū)別小結(jié)

    MyBatis中 #{} 和 ${} 的區(qū)別小結(jié)

    MyBatis中#{}和${}是兩種占位符,本文就來介紹一下MyBatis中 #{} 和 ${} 的區(qū)別小結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • Java分布式鎖的概念與實(shí)現(xiàn)方式詳解

    Java分布式鎖的概念與實(shí)現(xiàn)方式詳解

    今天小編就為大家分享一篇關(guān)于Java分布式鎖的概念與實(shí)現(xiàn)方式詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • IDEA自動生成TestNG的testng.xml的插件方法

    IDEA自動生成TestNG的testng.xml的插件方法

    這篇文章主要介紹了IDEA自動生成TestNG的testng.xml的插件方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • 詳解Java中的反射機(jī)制和動態(tài)代理

    詳解Java中的反射機(jī)制和動態(tài)代理

    本文將詳細(xì)介紹反射機(jī)制以及動態(tài)代理機(jī)制,而且基本現(xiàn)在的主流框架都應(yīng)用了反射機(jī)制,如spring、MyBatis、Hibernate等等,這就有非常重要的學(xué)習(xí)意義
    2021-06-06
  • 一文帶你搞懂Java中i++ 和 ++i的區(qū)別

    一文帶你搞懂Java中i++ 和 ++i的區(qū)別

    在Java中,i++和++i都用于遞增變量i的值,但它們之間有一個細(xì)微的區(qū)別,i++是后綴遞增操作符,++i是前綴遞增操作符,在大多數(shù)情況下,這兩種遞增操作的結(jié)果都是一樣的,但在某些特定的表達(dá)式和邏輯中,它們可能會產(chǎn)生不同的效果,本文將帶大家搞清Java中i++ 和 ++i的區(qū)別
    2023-09-09
  • Java導(dǎo)出Excel通用工具類實(shí)例代碼

    Java導(dǎo)出Excel通用工具類實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于Java導(dǎo)出Excel通用工具類的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 一文掌握J(rèn)ava中List和Set接口的基本使用

    一文掌握J(rèn)ava中List和Set接口的基本使用

    這篇文章主要為大家詳細(xì)介紹Java中List和Set接口,文中通過示例代碼讓大家能夠輕松掌握List和Set接口的基本使用,感興趣的可以跟隨小編一起學(xué)習(xí)一下
    2022-07-07
  • Java Map集合與Collection類的使用詳解

    Java Map集合與Collection類的使用詳解

    這篇文章主要介紹了Java Map集合的使用及Collection工具類使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2022-11-11

最新評論

安义县| 渑池县| 象山县| 渝北区| 高碑店市| 沂水县| 庄浪县| 略阳县| 昌黎县| 屯门区| 城固县| 叙永县| 饶平县| 田阳县| 余干县| 三明市| 新余市| 保德县| 长春市| 文安县| 长武县| 林周县| 黔江区| 双城市| 南涧| 象州县| 漳平市| 京山县| 虎林市| 台中市| 兴国县| 惠水县| 濮阳市| 香港| 洞口县| 河间市| 梁山县| 乐山市| 桦南县| 资兴市| 永川市|