亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java入門(mén)案列之猜拳小游戲

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

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

先看看我寫(xiě)了哪些類(lèi):

Player:玩家類(lèi);

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

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

TestGuessBox:代碼測(cè)試類(lèi);

Player類(lèi):

//玩家類(lèi)
public class Player {
 private String name; //玩家昵稱(chēng)
 private int score; //玩家積分
 private String box; //玩家出的
 
 //玩家構(gòu)造函數(shù),傳入玩家昵稱(chēng)與玩家初始積分
 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類(lèi)

public class ComputerPlayer extends Player {
 
 
 //機(jī)器人玩家構(gòu)造函數(shù),傳入機(jī)器人昵稱(chēng)與初始積分
 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類(lèi)

import java.util.Scanner;
 
public class Game {
 Player p; //玩家
 ComputerPlayer cp; //機(jī)器人玩家
 
 //構(gòu)造函數(shù),得到一個(gè)玩家和一個(gè)機(jī)器人玩家
 Game(Player p, ComputerPlayer cp) {
 this.p = p;
 this.cp = cp;
 }
 
 //開(kāi)始游戲
 void start() {
  System.out.println("玩家"+p.getName()+
   "和"+cp.getName()+"開(kāi)始游戲咯");
  System.out.println("您的初始積分為:"+p.getScore()+
   "\n"+cp.getName()+"的積分是:"+cp.getScore());
  Scanner sc=new Scanner(System.in);
  while(true) {
  
  System.out.println("請(qǐng)出拳(剪刀石頭布,exit退出游戲):");
  String pbox=sc.next();
  if(filter(pbox)) { //過(guò)濾器
   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("輸入了無(wú)法識(shí)別的關(guān)鍵字,請(qǐng)重新輸入:");
  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;
 }
 
 /**
 * 過(guò)濾器
 * @param s 需要過(guò)濾的文字
 * @return
 */
 boolean filter(String s) {
 if (s.equals("剪刀") || s.equals("石頭") || s.equals("布") || s.equals("exit")) {
  return true;
 } else
  return false;
 }
}

TestGuessBox類(lèi)

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();
 
 }
 
}

很簡(jiǎn)單,理清了思路就很容易寫(xiě)了。如果有錯(cuò)誤請(qǐng)指出。

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

相關(guān)文章

  • Java利用Dijkstra和Floyd分別求取圖的最短路徑

    Java利用Dijkstra和Floyd分別求取圖的最短路徑

    本文主要介紹了圖的最短路徑的概念,并分別利用Dijkstra算法和Floyd算法求取最短路徑,最后提供了基于鄰接矩陣和鄰接表的圖對(duì)兩種算法的Java實(shí)現(xiàn)。需要的可以參考一下
    2022-01-01
  • 深入Java對(duì)象的地址的使用分析

    深入Java對(duì)象的地址的使用分析

    本篇文章介紹了,Java對(duì)象的地址的使用分析。需要的朋友參考下
    2013-05-05
  • javaWeb傳收參數(shù)方式總結(jié)示例分析

    javaWeb傳收參數(shù)方式總結(jié)示例分析

    這篇文章主要為大家介紹了javaWeb傳收參數(shù)方式總結(jié)示例分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 詳解在Java中如何優(yōu)雅的停止線(xiàn)程

    詳解在Java中如何優(yōu)雅的停止線(xiàn)程

    線(xiàn)程,作為并發(fā)編程的基礎(chǔ)單元,允許程序同時(shí)執(zhí)行多個(gè)任務(wù),在Java中,線(xiàn)程可以理解為程序中的獨(dú)立執(zhí)行路徑,通過(guò)使用線(xiàn)程,開(kāi)發(fā)者可以創(chuàng)建更加響應(yīng)靈敏、效率更高的應(yīng)用程序,本文小編將給大家介紹一下Java中如何優(yōu)雅的停止線(xiàn)程,需要的朋友可以參考下
    2023-11-11
  • 解析Mybatis連續(xù)傳遞多個(gè)參數(shù)的方法

    解析Mybatis連續(xù)傳遞多個(gè)參數(shù)的方法

    MyBatis是一個(gè)支持普通SQL查詢(xún),存儲(chǔ)過(guò)程和高級(jí)映射的優(yōu)秀持久層框架,這篇文章主要介紹了Mybatis連續(xù)傳遞多個(gè)參數(shù)的方法,需要的朋友可以參考下
    2016-08-08
  • 使用Java獲取文件樹(shù)的代碼實(shí)現(xiàn)

    使用Java獲取文件樹(shù)的代碼實(shí)現(xiàn)

    Java語(yǔ)言提供了豐富的庫(kù)和工具,使得我們可以方便地獲取和操作Java文件的語(yǔ)法樹(shù)(AST, Abstract Syntax Tree),在這篇博客中,我們將探討如何使用Java來(lái)獲取一個(gè)Java文件的語(yǔ)法樹(shù),并展示詳細(xì)的代碼示例和運(yùn)行結(jié)果,需要的朋友可以參考下
    2024-08-08
  • Java的Hibernate框架中的組合映射學(xué)習(xí)教程

    Java的Hibernate框架中的組合映射學(xué)習(xí)教程

    組合映射即是指主對(duì)象和子對(duì)象關(guān)聯(lián)且擁有相同的生命周期的映射關(guān)系,這里我們將舉一些數(shù)據(jù)操作的實(shí)例,來(lái)講解Java的Hibernate框架中的組合映射學(xué)習(xí)教程
    2016-07-07
  • SpringBoot整合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信功能

    SpringBoot整合WebSocket實(shí)現(xiàn)實(shí)時(shí)通信功能

    在當(dāng)今互聯(lián)網(wǎng)時(shí)代,實(shí)時(shí)通信已經(jīng)成為了許多應(yīng)用程序的基本需求,而WebSocket作為一種全雙工通信協(xié)議,為開(kāi)發(fā)者提供了一種簡(jiǎn)單、高效的實(shí)時(shí)通信解決方案,本文將介紹如何使用SpringBoot框架來(lái)實(shí)現(xiàn)WebSocket的集成,快速搭建實(shí)時(shí)通信功能,感興趣的朋友可以參考下
    2023-11-11
  • SpringBoot詳細(xì)講解靜態(tài)資源導(dǎo)入的實(shí)現(xiàn)

    SpringBoot詳細(xì)講解靜態(tài)資源導(dǎo)入的實(shí)現(xiàn)

    在Web開(kāi)發(fā)過(guò)程中,我們需要接觸許多靜態(tài)資源,如CSS、JS、圖片等;在之前的開(kāi)發(fā)中,這些資源都放在Web目錄下,用到的時(shí)候按照對(duì)應(yīng)路徑訪(fǎng)問(wèn)即可。不過(guò)在SpringBoot項(xiàng)目中,沒(méi)有了Web目錄,那這些靜態(tài)資源該放到哪里去,又要如何訪(fǎng)問(wèn)呢?這就是我們要講的靜態(tài)資源導(dǎo)入
    2022-05-05
  • Java前后端分離的在線(xiàn)點(diǎn)餐系統(tǒng)實(shí)現(xiàn)詳解

    Java前后端分離的在線(xiàn)點(diǎn)餐系統(tǒng)實(shí)現(xiàn)詳解

    這是一個(gè)基于SpringBoot+Vue框架開(kāi)發(fā)的在線(xiàn)點(diǎn)餐系統(tǒng)。首先,這是一個(gè)前后端分離的項(xiàng)目。具有一個(gè)在線(xiàn)點(diǎn)餐系統(tǒng)該有的所有功能,感興趣的朋友快來(lái)看看吧
    2022-01-01

最新評(píng)論