人机交互小游戏猜拳
·
//裁判类,用于定义游戏规则什么的
public class Caipan {
Person Person = new Person();//实例化一个人的对象
Computer Computer = new Computer();//实例化电脑玩家对象
int times = 0;//定义游戏次数
Scanner sc = new Scanner(System.in);
public void init() {
System.out.println("出拳规则:1.剪刀 2.石头 3.布 ");//输出游戏规则
System.out.println("请选择电脑角色(1:刘备 2:孙权 3:曹操)");
while (true) {
int number = sc.nextInt();//输入选择的电脑角色数字
boolean flag = true;//定义flag初始值
//如果输入其他数字则再次进入循环
switch (number) {
case 1 -> Computer.name = "刘备";//赋值给电脑名称
case 2 -> Computer.name = "孙权";//赋值给电脑名称
case 3 -> Computer.name = "曹操";//赋值给电脑名称
default -> {
System.out.println("您输入的名字不正确请重新输入:");
flag = false;
}
}
if (!flag) {
continue;
} else {
break;
}
}
System.out.println("请输入你的名称");
String name = sc.next();
Person.name = name;//将输入的名字赋值
}
public void start() {
System.out.println("请问要开始游戏吗y/n");
String s = sc.next();
boolean flag = false;
if (s.equalsIgnoreCase("y")) {
flag = true;
}else {
flag = false;
System.out.println("再见");
}
while (flag) {
System.out.println("游戏分值规则:赢了,加一分,其余情况均不改变分值");
System.out.println("请出拳:1.剪刀 2.石头 3.布");
int PersonNumber = Person.showFist();
//调用玩家出拳方法并取值
int ComputerNumber = Computer.showFist();
//调用电脑出拳方法并取值
switch (PersonNumber) {
case 1:
System.out.println(Person.name + "出拳:剪刀");
break;
case 2:
System.out.println(Person.name + "出拳:石头");
break;
case 3:
System.out.println(Person.name + "出拳:布");
break;
}
switch (ComputerNumber) {
case 1:
System.out.println(Computer.name + "出拳:剪刀");
break;
case 2:
System.out.println(Computer.name + "出拳:石头");
break;
case 3:
System.out.println(Computer.name + "出拳:布");
break;
}
youxijieguo(PersonNumber, ComputerNumber);//调用游戏结果方法
times++;//游戏次数加一
System.out.println("你已经进行了" + times + "次游戏,是否继续? y/n");
boolean chongxin=true;
while (chongxin ) {
String jixu = sc.next();
if (jixu.equalsIgnoreCase("n")) {
chongxin=false;
flag = false;//玩家不想继续
} else if (jixu.equalsIgnoreCase("y")) {
chongxin=false;
flag = true;
} else {
System.out.println("请重新输入y或n");
chongxin=true;
}
}
}
}
public void youxijieguo(int PersonNumber, int ComputerNumber) {
//定义游戏结果方法
if (PersonNumber == ComputerNumber) {//双方出拳一样
System.out.println("平局,双方均不得分");
} else if ((PersonNumber == 1 && ComputerNumber == 3) || (PersonNumber == 2 && ComputerNumber == 1)
|| (PersonNumber == 3 && ComputerNumber == 2)) {
System.out.println("你赢了,很不错!");
Person.score++;//玩家得分增加
} else
System.out.println("你输了,有点蠢");
Computer.score++;//电脑得分增加
}
public void print() {//输出双方游戏所有信息
System.out.println(Person.name +"\t\t\t"+ "VS" + "\t\t\t" + Computer.name);
System.out.println("对站次数:" + times);
System.out.println("姓名\t\t\t\t\t\t得分");
System.out.println(Person.name + "\t\t\t\t\t\t" + Person.score);
System.out.println(Computer.name + "\t\t\t\t\t\t" + Computer.score);
}
public void zuizhongjieguo() {//判断最终结果
if (Person.score > Computer.score) {
System.out.println("你赢了");
} else if (Person.score == Computer.score) {
System.out.println("平局");
} else {
System.out.println("你输了");
}
}
}
//电脑玩家类
public class Computer {
String name;// 定义电脑名字
int score;// 定义电脑分数
public int showFist () {
//让计算机玩家随机出拳
//依靠随机函数去实现
int number = (int) (Math.random() * 3 + 1);
//返回计算机玩家的出拳数值(在Game类中会根据返回的数值来判定计算机玩家的出拳)
return number;
}
}
//玩家类
public class Person {
String name;//定义玩家姓名
int score;// 定义玩家分数
public int showFist(){//玩家出拳方法
Scanner sc = new Scanner(System.in);
int number=0;//定义返回的数字,确定出拳;
boolean flag= true;//定义初始flag为真,死循环
while (flag){
int n= sc.nextInt();
if ( n==1 || n==2 || n==3){//判断输入的值是否为1 2 3
number=n;
flag= false;//修改flag值,跳出while语句;
}else {
System.out.println("你输入的数值有误请重新输入");
}
}
return number;//返回玩家的出拳结果
}
}
public class Game {
public static void main(String[] args) {
System.out.println("---------------欢迎进入游戏世界----------------");
System.out.println();
System.out.println("--------------- 猜拳游戏 ----------------");
Caipan caipan= new Caipan();
caipan.init();
caipan.start();
caipan.print();
caipan.zuizhongjieguo();
}
}
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐



所有评论(0)