package com.njwbhz.part0217.Mora;
import java.util.Scanner;
public class PersonPlayer {
//属性
//人类玩家的名字
String name;
//人类玩家的得分
int score;
//方法
//人类玩家出拳的动作
public int showFist() {
//人类玩家的出拳动作
//依靠从键盘上出入去实现
//创建一个从键盘上录入输入的对象
Scanner scanner = new Scanner(System.in);
//将录入的出拳对应的数值存储到一个变量中去以便等会返回
int number = 0;
//设置一个标志用来判断玩家的出拳是否有问题
boolean flag = true;
while (flag) {
//将录入的出拳对应的数值存储到一个变量中去
int n = scanner.nextInt();
//判断玩家的出拳有没有问题
//如果没有问题
if (n == 1 || n == 2 || n == 3) {
//把输入的值赋给要返回的变量
number = n;
//然后让标识改变,从而可以跳出循环
flag = false;
}else{
//如果玩家的出拳有问题,那就重新让玩家出拳
System.out.println("你的出拳有问题,请重新出拳。");
//然后继续执行循环体
}
}
//跳出循环以后,返回玩家出拳的数值
return number;
}
}
package com.njwbhz.part0217.Mora;
import java.util.Scanner;
public class TestPersonPlayer {
public static void main(String[] args) {
//创建一个从键盘上录入数值的对象
Scanner scanner = new Scanner(System.in);
//创建一个具体的人类玩家的对象
PersonPlayer personPlayer = new PersonPlayer();
//初始化人类玩家的名字
personPlayer.name = "坤坤小仙";
//初始化人类玩家的得分
personPlayer.score = 100;
//展示人类玩家的各项属性
System.out.println(personPlayer.name);
System.out.println(personPlayer.score);
//人类玩家出拳
//提醒人类玩家出拳
System.out.println("请" + personPlayer.name + "出拳:");
//创建一个新的变量录入人类玩家出拳的数值
int number = scanner.nextInt();
//展示人类玩家的出拳
System.out.println(personPlayer.name + "的出拳是:" + number);
}
}
package com.njwbhz.part0217.Mora;
public class ComputerPlayer {
//属性
//计算机玩家的名字
String name;
//计算机玩家的得分
int score;
//方法
//计算机玩家的出拳动作
public int showFist () {
//让计算机玩家随机出拳
//依靠随机函数去实现
int number = (int) (Math.random() * 3 + 1);
//返回计算机玩家的出拳数值(在Game类中会根据返回的数值来判定计算机玩家的出拳)
return number;
}
}
package com.njwbhz.part0217.Mora;
public class TestComputerPlayer {
public static void main(String[] args) {
//创建一个具体的计算机玩家的对象
ComputerPlayer computerPlayer = new ComputerPlayer();
//初始化计算机玩家的名字
computerPlayer.name = "坤坤小仙";
//初始化计算机玩家的得分
computerPlayer.score = 100;
//展示计算机玩家的各项属性
System.out.println(computerPlayer.name);
System.out.println(computerPlayer.score);
//让计算机玩家出拳(显示的是数值)
System.out.println(computerPlayer.showFist());
}
}
package com.njwbhz.part0217.Mora;
import java.util.Scanner;
public class Game {
//属性
//电脑玩家的对象
ComputerPlayer computerPlayer = new ComputerPlayer();
//人类玩家的对象
PersonPlayer personPlayer = new PersonPlayer();
//变量times用来统计游戏进行的次数
int times = 0;
//方法
//创建一个从键盘上录入数据的对象
Scanner scanner = new Scanner(System.in);
//初始化
public void init () {
//先向玩家展示出拳的规则
System.out.println("出拳规则:1.剪刀 2.石头 3.布 ");
//电脑玩家游戏名字的初始化
//提示人类玩家进行电脑玩家的初始化
System.out.println("请选择对方的游戏角色(1:刘备 2:孙权 3:曹操)");
//根据玩家的选择进行电脑玩家游戏名字的初始化
while (true){
//创建一个变量存储从键盘上录入的数据
int number = scanner.nextInt();
//设置一个标志用来判断玩家的选择是否有问题
boolean flag = true;
switch (number){
case 1:
computerPlayer.name = "刘备";
break;
case 2:
computerPlayer.name = "孙权";
break;
case 3:
computerPlayer.name = "曹操";
break;
default:
//如果玩家输入的数据有问题,那么就让玩家重新输入
System.out.println("你的选择超出范围,请重新选择。");
flag = false;
break;
}
if (flag == false){
continue;
}else{
break;
}
}
//代码测试
// System.out.println(computerPlayer.name);
//测试完毕
//人类玩家名字的初始化
//提示玩家设置游戏名称
System.out.println("请输入你的名字:");
//创建一个变量来存储玩家设置的名字
String name = scanner.next();
///将玩家设置的名字初始化到人类玩家的name属性中去
personPlayer.name = name;
//代码测试
// System.out.println(name);
//代码测试完毕
}
//开始游戏
public void start () {
//上来就问玩家,是否要开始游戏
System.out.println("要开始吗?(y/n)");
//创建一个变量用来存储玩家的意愿
String isStart = scanner.next();
//创建一个变量用来判断是否要进行游戏
boolean flag = false;
if (isStart.equalsIgnoreCase("y")) {
//如果玩家同意,那么久开始游戏
flag = true;
}
//如果玩家不同意开始游戏,那么就直接进入游戏统计
while (flag) {
//代码测试
// System.out.println("游戏顺利进行");
//测试完毕
//提示游戏规则
System.out.println("游戏分值规则:谁赢了,加一分,其余情况均不改变分值");
//提示人类玩家出拳
System.out.println("请出拳:1.剪刀 2.石头 3.布");
//创建两个变量来记录玩家出拳的结果
int personPlayerNumber = personPlayer.showFist();
int computerPlayerNumber = computerPlayer.showFist();
//展示人类玩家的出拳结果
switch (personPlayerNumber) {
case 1:
System.out.println(personPlayer.name + "出拳:剪刀" );
break;
case 2:
System.out.println(personPlayer.name + "出拳:石头" );
break;
case 3:
System.out.println(personPlayer.name + "出拳:布" );
break;
// 这里没有写default,因为异常情况都已经提前处理好了
}
//展示电脑玩家的出拳结果
switch (computerPlayerNumber) {
case 1:
System.out.println(computerPlayer.name + "出拳:剪刀" );
break;
case 2:
System.out.println(computerPlayer.name + "出拳:石头" );
break;
case 3:
System.out.println(computerPlayer.name + "出拳:布" );
break;
// 这里没有写default,因为异常情况都已经提前处理好了
//代码测试
//代码测试完毕
}
calcResult(personPlayerNumber, computerPlayerNumber);
//游戏完成一轮,累计加1
times++;
//询问玩家是否进入下一轮游戏
System.out.println("你已经进行了" + times + "局游戏,是否进入下一轮(y/n):");
//用isStart(前面已经用到过了)来存储玩家是否要进行下一轮的意愿
isStart = scanner.next();
//根据玩家的意愿来决定是否进入下一轮游戏
if (isStart.equalsIgnoreCase("n")){
//如果玩家不想进入下一局游戏
flag = false;
}
//如果flag为false,那就直接跳出循环了,如果不是,那就继续游戏
}
//代码测试
// System.out.println("游戏没有执行");
//测试完毕
}
//判断当局游戏的胜负情况
public void calcResult(int personPlayerNumber, int computerPlayerNumber){
//公布游戏结果
//展示人类玩家出拳的结果并且公布游戏结果
//这里需要一个变量来记录游戏结果
//情况1:平局computerPlayerNumber == personPlayerNumber
//情况2:人类玩家胜利
//personPlayerNumber == 1 && computerPlayerNumber == 3
//personPlayerNumber == 2 && computerPlayerNumber == 1
//personPlayerNumber == 3 && computerPlayerNumber == 2
//情况3:电脑玩家胜利
//computerPlayerNumber == 1 && personPlayerNumber == 3
//computerPlayerNumber == 2 && personPlayerNumber == 1
//computerPlayerNumber == 3 && personPlayerNumber == 2
//如果是平局
if (computerPlayerNumber == personPlayerNumber){
System.out.println("结果:平局");
}else if ((personPlayerNumber == 1 && computerPlayerNumber == 3) || (personPlayerNumber == 2 && computerPlayerNumber == 1) || (personPlayerNumber == 3 && computerPlayerNumber == 2)) {
System.out.println("结果:" + personPlayer.name + "获得胜利");
//人类玩家加一分
personPlayer.score++;
}else{
System.out.println("结果:" + computerPlayer.name + "获得胜利");
//电脑玩家加一分
computerPlayer.score++;
}
}
//输出游戏的统计数据
public void print () {
System.out.println(personPlayer.name + "VS" + "\t\t\t" + computerPlayer.name);
System.out.println("对站次数:" + times);
System.out.println("姓名\t\t得分");
System.out.println(personPlayer.name + "\t\t\t\t\t\t" + personPlayer.score);
System.out.println(computerPlayer.name + "\t\t\t\t\t\t" + computerPlayer.score);
}
//计算总的胜负情况
public void calcTotalResult () {
if (personPlayer.score == computerPlayer.score){
System.out.println("游戏的最终结果:平\t局");
}else if(personPlayer.score > computerPlayer.score){
System.out.println("游戏的最终结果:" + personPlayer.name + "获得最终的胜利!");
}else{
System.out.println("游戏的最终结果:" + computerPlayer.name + "获得最终的胜利!");
}
}
}
package com.njwbhz.part0217.Mora;
public class TestGame {
public static void main(String[] args) {
Game game = new Game();
game.init();
game.start();
}
}
package com.njwbhz.part0217.Mora;
public class GameApp {
public static void main(String[] args) {
//欢迎部分
System.out.println("——————————欢迎老板——————————");
System.out.println("\n");
System.out.println("\t话不多说,开始猜拳");
System.out.println("————————————————————————");
//组装游戏部分
Game game = new Game();
//初始化
game.init();
//开始游戏
game.start();
//输出游戏统计结果
game.print();
//输出游戏最终结果
game.calcTotalResult();
}
}
听取了李辰小可爱的建议,我还附上了运行效果