人机猜拳游戏
人机猜拳:
用户类
@Setter
@Getter
public class Users {
private String username;
private int score;
public int uFist(Scanner input){
System.out.println("请出拳:1.剪刀 2.石头 3.布");
int uchoose=input.nextInt();
String uresult="";
switch (uchoose) {
case 1:uresult="剪刀";
break;
case 2:uresult="石头";
break;
case 3:uresult="布";
break;
}
System.out.println(username+"出了"+uresult);
return uchoose;
}
}
电脑类
@Setter
@Getter
public class Computer {
private String name;
private int score;
public int cFist(){
int cchoose=(int)(Math.random()*3+1);
String cresult="";
switch (cchoose) {
case 1:cresult="剪刀";
break;
case 2:cresult="石头";
break;
case 3:cresult="布";
break;
}
System.out.println(name+"出了"+cresult);
return cchoose;
}
}
游戏类
public class Game {
private static Scanner input;
private static Users users;
private static Computer computer;
static {
users=new Users();
computer=new Computer();
input=new Scanner(System.in);//放静态代码块自动初始化
}
public void play() {
String nextRound;
do {
cname();
System.out.println("要开始猜拳吗?y/n");
String answer = input.next();
if ("n".equals(answer)) {
System.out.println("程序退出");
input.close();//释放资源
return;
}
String answer1;
int count = 0;
do {
count++;
int userFist = users.uFist(input);
int computerFist = computer.cFist();
vsFist(userFist, computerFist);
System.out.println("是否开始下一轮?y/n");
answer1 = input.next();
} while ("y".equals(answer1));
//统计结果
GuessResult(count);
System.out.println("是否开始下一局?y/n");
nextRound = input.next();
}while("y".equals(nextRound));
System.out.println("游戏退出");
users.setScore(0);//每局新开始score得清零
computer.setScore(0);
input.close();
}
private void GuessResult(int count){
String name=users.getUsername();
String comname=computer.getName();
System.out.println(name+" V S "+comname);
System.out.println("对战次数"+count);
System.out.println("姓名\t得分");
System.out.println(name+"\t"+users.getScore());//统计分数
System.out.println(comname+"\t"+computer.getScore());
if(users.getScore()>computer.getScore())
System.out.println(name+"Win!!!");
else if(users.getScore()<computer.getScore())
System.out.println(comname+"Win!!!");
else System.out.println("和局");
}
private void cname(){//最好封装起来,给电脑取名字的方法
System.out.println("请选择你要对战的角色:1、刘备 2、关羽 3、张飞");
int computername=input.nextInt();
String name="";
switch (computername) {
case 1:name="刘备";
break;
case 2:name="关羽";
break;
case 3:name="张飞";
break;
}computer.setName(name);
//将computer name传过去
System.out.println("你选择了和"+name+"对战");
System.out.println("请输入你的角色名");
String username=input.next();
users.setUsername(username);
}
private void vsFist(int userFist,int computerFist){//判断出拳结果
if((userFist-computerFist==1)||(userFist-computerFist==-2)){
System.out.println(users.getUsername()+" win!!!");
users.setScore(users.getScore()+1);
}
else if(userFist==computerFist){
System.out.println("平局");
}
else {
System.out.println(users.getUsername()+" loss!!!");
computer.setScore(computer.getScore()+1);
}
}
}
玩游戏测试类
public class Test {
public static void main(String[] args) {
new Game().play();
}
}