用户类Player(玩家)
package 人机对战猜拳;
import java.util.Scanner;
import java.util.Random;
//玩家类 主要依靠外界输入 选择出拳,分数增加
public class Player {
private int finger_player;
private int score_player;
private String name_player;
//构造方法
public Player() {};
public Player(int finger_player, int score_player, String name_player) {
super();
this.finger_player = finger_player;
this.score_player = score_player;
this.name_player = name_player;
}
//封装
public String getName_player() {
return name_player;
}
public void setName_player(String name_player) {
this.name_player = name_player;
}
public int getFinger_player() {
return finger_player;
}
public void setFinger_player(int finger_player) {
this.finger_player = finger_player;
}
public int getScore_player() {
return score_player;
}
public void setScore_player(int score_player) {
this.score_player = score_player;
}
public void choice_name(String s) {
name_player = s;
}
//进行用户出拳的选择
public int choice_player() {
Scanner sr = new Scanner(System.in);
System.out.print("请出拳:");
finger_player = sr.nextInt();
switch(finger_player) {
case 1:System.out.println("\t\t\t你出的是石头");break;
case 2:System.out.println("\t\t\t你出的是剪刀");break;
case 3:System.out.println("\t\t\t你出的是布");break;
default:System.out.println("\t\t\t 你出错啦,请重新输入!");
choice_player();
}
return finger_player;
}
//用户分数增加
public void scoreAdd() {
score_player++;
}
}
电脑类(Computer)也需要后台出拳的电脑
package 人机对战猜拳;
import java.util.Random;
import java.util.Scanner;
//电脑类,确定电脑名字,输出电脑的出拳,分数增加
public class Computer {
//成员变量 选择、分数、用户名
private int finger_computer;
private int score_computer;
private String name_computer;
//封装
public int getScore_computer() {
return score_computer;
}
public void setScore_computer(int score_computer) {
this.score_computer = score_computer;
}
public int getFinger() {
return finger_computer;
}
public void setFinger(int finger_computer) {
this.finger_computer = finger_computer;
}
public String getName_computer() {
return name_computer;
}
public void setName_computer(String name_computer) {
this.name_computer = name_computer;
}
//构造方法
public Computer() {};
public Computer(int finger_computer, int score_computer,String name_computer) {
super();
this.finger_computer = finger_computer;
this.score_computer = score_computer;
this.name_computer = name_computer;
}
//电脑名字选择
public void choice_name() {
System.out.print("请选择对方角色(1.路飞 2.索隆 3.山治): ");
Scanner sr = new Scanner(System.in);
int choice = sr.nextInt();
if(choice == 1) {
name_computer = "路飞";
System.out.println("你的对手是草帽小子路飞!");
}
if(choice == 2) {
name_computer = "索隆";
System.out.println("你的对手是剑士索隆!");
}
if(choice == 3) {
name_computer = "山治";
System.out.println("你的对手是黑足山治!");
}
if(choice!=1&&choice!=2&&choice!=3)
System.out.println("对不起,其他人很忙,请选择上面三位比赛!");
}
//输出电脑的选择
public int choice_computer(String name) {
Random r = new Random();
finger_computer = r.nextInt(3)+1;
switch(finger_computer) {
case 1:System.out.println("\t\t\t"+name+"出的是石头");break;
case 2:System.out.println("\t\t\t"+name+"出的是剪刀");break;
case 3:System.out.println("\t\t\t"+name+"出的是布");break;
}
return finger_computer;
}
//分数增加
public void scoreAdd() {
score_computer++;
}
}
游戏类(Admin)管理员
package 人机对战猜拳;
import java.util.Scanner;
//后台控制类,控制游戏的初始化,结局的判断,局数的记录,和积分榜记录
public class Admin {
//唯一的成员变量 记录比赛次数
private int times;
//封装
public int getTimes() {
return times;
}
public void setTimes(int times) {
this.times = times;
}
//游戏的初识化,简单的布局
public void initial() {
System.out.println("---------------欢迎来到游戏:人机猜拳------------------");
System.out.println("\n");
System.out.println(" ***************");
System.out.println(" **猜拳开始**");
System.out.println(" ***************");
System.out.println("\n");
System.out.println("出拳规则:1石头 2剪刀 3布");
}
//输出当前对战的双方 和 当前比赛次数
public void startGame(String n_c,String n_p) {
System.out.println("\t\t\t"+n_c+"VS"+n_p);
if(times<3) {
System.out.println("现在开始第"+times+"局比赛");
}
else {
System.out.println("现在已经是第"+times+"局比赛了哦,记得休息一下!");
}
}
//进行结果的判断
public int judge(int x,int y) {
if((x==1 && y==2)||(x==3&&y==1)||(x==2&&y==3)) {
System.out.println("恭喜你,你赢了");
return 1;
}else if((x==1&&y==3)||(x==3&&y==2)||(x==2&&y==1)) {
System.out.println("抱歉,你输了");
return 0;
}else {
System.out.println("平局哦");
return -1;
}
}
//次数的增加
public void timeAdd() {
times++;
}
//输出积分榜
public void showScoreBoard(int x,int y,String name_c,String name_p) {
System.out.println("\t\t\t积分榜如下");
System.out.println("\t\t"+name_c+":"+x);
System.out.println("\t\t"+name_p+":"+y);
}
}
测试类
package 人机对战猜拳;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//实例化一个输入对象
Scanner sr = new Scanner(System.in);
//初始化游戏场景对象
Admin game = new Admin();
//初始化比赛次数为1
game.setTimes(1);
//进行名字的选择
game.initial();
//实例化游戏双方
Player pp = new Player();
Computer cc = new Computer();
//输入玩家用户名
System.out.print("请输入你的名字:");
//从键盘接受
String name_p = sr.next();
//存入对象中
pp.setName_player(name_p);
System.out.println();
//选择电脑玩家名字
cc.choice_name();
//让游戏能一直进行下去
while(true) {
//用字符串来获取当前两者名字。
String n_c = cc.getName_computer();
String n_p = pp.getName_player();
//传入控制类 开始比赛。
game.startGame(n_c,n_p);
//显示当前比赛次数
game.timeAdd();
//将各自出的拳用1,2,3来代表,取出来,存入变量中
int p_c=pp.choice_player();
int c_c=cc.choice_computer(n_c);
//传入后台控制类的判断方法。
int result = game.judge(p_c, c_c);
//来获得比赛结果,来判断谁加分
if(result == 1) {
pp.scoreAdd();
}else if(result == 0) {
cc.scoreAdd();
}
//一轮比赛结束,进行其他选项
System.out.println("\n");
//询问是否继续
System.out.print("是否继续比赛(y/n)或者查看积分榜并继续(s):");
String gameOver = sr.next();
//判断输入语句——玩家选择
if(gameOver.charAt(0) == 'y') {
System.out.println("我赌你下次一定出布!");
}else if(gameOver.charAt(0) == 'n') {
System.out.println("不要走,决战到天亮!");
break;
}else if(gameOver.charAt(0) == 's') {
//将两者比分传入后台,后台输出
int x = cc.getScore_computer();
int y = pp.getScore_player();
game.showScoreBoard(x, y, n_c, n_p);
}
}
}
}
效果图: