java建立人机猜拳
1、 人机猜拳的主要功能有选取对战角色、猜拳、记录分数等。
2、人机猜拳主要有用户类、计算机类以及游戏类。
(1) 用户类
获取姓名、分数、以及出拳方式等。
/** * 用户类 */ public class User { //用户属性姓名 得分 private String name; private int count; //获取用户输入姓名 与 分数 public void setName(String name) { this.name = name; } public String getName() { return this.name; } public int getCount() { return count; } public void setCount(int count) { this.count += count; } /** * 出拳方法 * 1 剪刀 2 石头 3 布
*/
public int showFist(int i) { //判断 输入内容是否为出拳方式(1 2 3) 是返回原值 不是返回 -1 if (i == 1 || i == 2 || i == 3) { return i; } else { return -1; } } }
(2) 计算机类
获取电脑姓名、分数以及出拳方式等。
import java.util.Random; /** * 计算机类 */ public class Computer{ //计算机类属性 private String name; private int count; /** * 获取对战角色(1 刘备 2 孙权 3 曹操)与分数 */ public void setName(int i){ switch(i){ case 1: this.name="刘备"; break; case 2: this.name="孙权"; break; case 3: this.name="槽操"; break; } } public String getName(){ return this.name; } public int getCount() { return count; } public void setCount(int count) { this.count += count; } /**出拳方法 * 1 剪刀 2 石头 3 布 * */ public int showFist(){ /** 随机出拳 * Random()随机函数 Math.random() 随机取0-1之间的数 */ Random r=new Random(); int i= r.nextInt(3); //随机取 0-3的整数(不包含 3) int tname=-1; switch (i){ case 0: tname=1; break; case 1: tname=2; break; case 2: tname=3; break; } return tname; } }
(3) 游戏类
初始化各属性、并判断是否开始游戏以及记录双方获得的分数。
import java.util.Scanner; /** * 游戏类 */ public class Game{ //建立对象 User user=new User(); Computer com=new Computer(); Scanner in=new Scanner(System.in); //初始化数据 public void initial(){ //用户 和 电脑 得分 user.setCount(0); com.setCount(0); System.out.println("*******猜拳游戏*******"); System.out.println(); System.out.println("出拳规则: 1 剪刀 2 石头 3 布"); //输入数据不是(1,2,3)时继续循环 是(1,2,3)退出循环 // while(true)为死循环 不退出会一直循环 while(true){ System.out.print("选择对战角色(1 刘备 2 孙权 3 曹操)"); int k=in.nextInt(); if(k==1||k==2||k==3){ com.setName(k); //对战中电脑方姓名 break; //退出循环 }else{ System.out.println("无角色 请重新选择!"); } } System.out.print("输入你的姓名:"); String comname=in.next(); user.setName(comname); //对战中用户方姓名 System.out.println(user.getName()+" vs "+com.getName()+" 对战"); } //将数字 转换成对应含义 public String displayfist(int d){ String tr=""; switch (d){ case 1: tr="剪刀"; break; case 2: tr="石头"; break; case 3: tr="布"; } return tr; } //开始游戏 void startGame(){ Scanner ui=new Scanner(System.in); System.out.print("要开始游戏?(y/n)"); String h; while(true){ h=ui.nextLine(); if(h.equals("y")){ System.out.print("请出拳(1 剪刀 2 石头 3 布):"); int e=in.nextInt(); int x= user.showFist(e); //用户出全拳 while (x==-1){ //判断出全拳是否合理 System.out.println("出拳输入错误,请重新输拳!"); System.out.print("请出拳(1 剪刀 2 石头 3 布):"); e=in.nextInt(); x=user.showFist(e); } int y= com.showFist(); //电脑出拳 //转换 String xx=displayfist(x); String yy=displayfist(y); System.out.println("你出拳 "+xx); System.out.println("电脑出拳 "+yy); //计算分数 int win=-2; if((x==3&&y==1)||(x==1&&y==3)){ if(x<y){ win=1; }else if(x>y){ win=-1; } }else { if (x > y) { win = 1; } else if (y > x) { win = -1; } else if (x == y) { win = 0; } } if(win==-1){ com.setCount(2); System.out.println("你输了!"); }else if(win==0){ System.out.println("平局!"); }else if(win==1){ user.setCount(2); System.out.println("你赢了!"); } System.out.println(user.getCount()+" "+com.getCount()); System.out.println("------------------"); System.out.println("是否开始下一轮!(y/n)"); }else{ if(h.equals("n")){ System.out.println("退出"); break; } System.out.println("输入数据错误请重新输入!"); System.out.println("是否开始下一轮!(y/n)"); } } System.out.println("-------------------------------"); System.out.println(user.getName()+"获得"+user.getCount()); System.out.println(com.getName()+"获得"+com.getCount()); } }
(4)测试类
public class 猜拳 { public static void main(String[] args) { Game game = new Game(); game.initial(); game.startGame(); } }
测试结果

posted on 2021-01-31 15:30 只会编写Bug=_= 阅读(235) 评论(0) 收藏 举报
浙公网安备 33010602011771号