利用控制台实现的猜拳游戏
人和电脑互相猜拳 (石头,剪刀,布)
游戏规则:
玩家可以从多名角色中选取一名角色(刘备 孙权 曹操)
选取角色后轮流猜拳
猜拳后比较结果,可以选择是否继续游戏
如果退出游戏,显示游戏结果统计列表:
包含总局数,玩家的输赢局数,以及胜率
最后根据胜负对玩家
用户类
package fist;
import java.util.Scanner;
/**
* ClassName User
*
* @Description: TODO
* @Author 我喜欢蒋邵祁
* @Date 2020/8/1 10:52
* @Version 1.0
*/
public class User {
private String name;
private String type;
private Data data;
public User(){
}
public Data getData() {
return data;
}
public void setData(Data data) {
this.data = data;
}
public User(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type= type;
}
public void input(){
System.out.println("请输你的选择");
System.out.println("1.剪刀");
System.out.println("2.石头");
System.out.println("3.布");
Scanner scanner = new Scanner(System.in);
String a = scanner.next();
if(a.equals("1")){
this.setType("剪刀");
}
else if(a.equals("2")){
this.setType("石头");
}
else if(a.equals("3")){
this.setType("布");
}
else {
System.out.println("你的输入有误,请重新输入");
input();
}
}
public void list(){
System.out.println("----------------战绩列表-------------");
System.out.println("你的姓名:"+this.getName());
System.out.println("总场次:"+this.getData().getNum()+"场");
System.out.println("胜场:"+this.getData().getWin()+"场");
System.out.println("败场:"+this.getData().getLost()+"场");
System.out.println("平局:"+this.getData().getSame()+"场");
System.out.println("胜率"+(int)(this.getData().winRate()*100)+"%");
}
}
电脑用户类
package fist;
import java.util.Random;
/**
* ClassName ComputerUser
*
* @Description: TODO
* @Author 我喜欢蒋邵祁
* @Date 2020/8/1 14:25
* @Version 1.0
*/
public class ComputerUser {
String type = null;
public ComputerUser(){
}
public ComputerUser(String type) {
this.type = type;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public void computer() {
Random random = new Random();
int a = random.nextInt(3)+1;
if(a==1){
this.setType("剪刀");
}
if(a==2){
this.setType("石头");
}
if(a==3){
this.setType("布");
}
}
}
战绩列表类
package fist;
import java.text.DecimalFormat;
/**
* ClassName Data
*
* @Description: TODO
* @Author 我喜欢蒋邵祁
* @Date 2020/8/1 14:11
* @Version 1.0
*/
public class Data {
private int num;
private int win;
private int lost;
private int same;
DecimalFormat df = new DecimalFormat("#.00");
public Data(){
}
public Data(int num, int win, int lost) {
this.num = num;
this.win = win;
this.lost = lost;
}
public int getSame() {
return same;
}
public void setSame(int same) {
this.same = same;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public int getWin() {
return win;
}
public void setWin(int win) {
this.win = win;
}
public int getLost() {
return lost;
}
public void setLost(int lost) {
this.lost = lost;
}
public Double winRate(){
return Double.parseDouble(df.format(win*1.0/num));
}
}
系统类
package fist;
import java.util.Random;
import java.util.Scanner;
/**
* ClassName SystemMenu
*
* @Description: TODO
* @Author 我喜欢蒋邵祁
* @Date 2020/8/1 10:53
* @Version 1.0
*/
public class SystemMenu {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
ComputerUser computerUser =new ComputerUser();
User user1 = new User();
Data data = new Data();
public void start() {
System.out.println("游戏开始-------猜拳");
user1.input();//输入你剪刀石头布
computerUser.computer();//电脑生成随机剪刀石头布
compare();//比较是否成功赢得对手
user1.list();//用户的对战结果统计列表
continue1();//是否继续游戏
}
public void evaluate(User user1) {
if(user1.getData().winRate()>0.8){
System.out.println("你运气棒极了!");
}
else if(user1.getData().winRate()>0.6){
System.out.println("你运气还算不错!");
}
else if(user1.getData().winRate()>0.4){
System.out.println("你有点倒霉!");
}
else if(user1.getData().winRate()>0.2){
System.out.println("你倒霉极了!");
}
else {
System.out.println("千万别去买彩票!");
}
}
public boolean isContinue(String str) {
if(str.equals("yes")){
return true;
}
else if(str.equals("no")){
return false;
}
else {
System.out.println("你得输入有误,请重新输入");
continue1();
}
return false;
}
public void continue1(){
System.out.println("是否继续游戏,yes or no");
String str = scanner.next();
if(isContinue(str)){
start();
}
else {
evaluate(user1);
}
}
public void menu() {
System.out.println("1.刘备");
System.out.println("2.孙权");
System.out.println("3.曹操");
String a = scanner.next();
if(a.equals("1")){
user1.setName("刘备");
System.out.println("你当前角色为:"+user1.getName());
}
else if(a.equals("2")){
user1.setName("孙权");
System.out.println("你当前角色为:"+user1.getName());
}
else if(a.equals("3")){
user1.setName("曹操");
System.out.println("你当前角色为:"+user1.getName());
}
else {
System.out.println("你的输入有误,请重新输入");
menu();
}
}
public void compare() {
user1.setData(data);
if(user1.getType().equals(computerUser.getType())){
System.out.println(user1.getName()+":"+user1.getType());
System.out.println("电脑:"+computerUser.getType());
System.out.println("平局");
user1.getData().setNum(user1.getData().getNum()+1);
user1.getData().setSame(user1.getData().getSame()+1);
}
else if(user1.getType().equals("剪刀")&&computerUser.getType().equals("石头")){
System.out.println(user1.getName()+":"+user1.getType());
System.out.println("电脑:"+computerUser.getType());
System.out.println("您输了");
user1.getData().setNum(user1.getData().getNum()+1);
user1.getData().setLost(user1.getData().getLost()+1);
}
else if(user1.getType().equals("石头")&&computerUser.getType().equals("布")){
System.out.println(user1.getName()+":"+user1.getType());
System.out.println("电脑:"+computerUser.getType());
System.out.println("您输了");
user1.getData().setNum(user1.getData().getNum()+1);
user1.getData().setLost(user1.getData().getLost()+1);
}
else if(user1.getType().equals("布")&&computerUser.getType().equals("剪刀")){
System.out.println(user1.getName()+":"+user1.getType());
System.out.println("电脑:"+computerUser.getType());
System.out.println("您输了");
user1.getData().setNum(user1.getData().getNum()+1);
user1.getData().setLost(user1.getData().getLost()+1);
}
else {
System.out.println(user1.getName()+":"+user1.getType());
System.out.println("电脑:"+computerUser.getType());
System.out.println("您赢了");
user1.getData().setNum(user1.getData().getNum()+1);
user1.getData().setWin(user1.getData().getWin()+1);
}
}
}
测试类
package fist;
/**
* ClassName Text
*
* @Description: TODO
* @Author 我喜欢蒋邵祁
* @Date 2020/8/1 10:54
* @Version 1.0
*/
public class Text {
public static void main(String[] args) {
SystemMenu systemMenu =new SystemMenu();
System.out.println("请选择一名角色");
systemMenu.menu();
systemMenu.start();
}
}