import java.util.*;
public class Game {
static Scanner input = new Scanner(System.in);
public static void main(String[] args) {
Chessboard chessboard = new Chessboard();
Player player1 = new Player();
Player player2 = new Player();
Judge judge = new Judge();
gameBegin(player1, player2, judge, chessboard);
}
//游戏准备
static void gameBegin(Player player1, Player player2, Judge judge, Chessboard chessboard){
System.out.println("游戏开始!"
+ "请输入第一位玩家名字:");
player1.setName(input.next());
System.out.println("请输入第二位玩家名字:");
player2.setName(input.next());
while(player2.getName().equals(player1.getName())){
System.out.println("两位玩家名字相同,请重新输入第二位玩家名字:");
player2.setName(input.next());
}
//判断游戏结束
while(true){
gameGoOn(player1, player2, judge, chessboard);
if(judge.getWinner().equals(player1.getName())) break;
gameGoOn(player2, player1, judge, chessboard);
if(judge.getWinner().equals(player2.getName())) break;
}
System.out.println("游戏结束! 胜者是" + judge.getWinner());
}
//游戏进行
static void gameGoOn(Player player, Player withPlayer,Judge judge, Chessboard chessboard){
//判断是否暂停
if (player.isFrozen()) {
player.setFrozen(false);
System.out.println(player.getName() + "正在休息");
return;
}
// System.out.println("请" + player.getName() + "输入1投掷骰子!");
// while(!input.next().equals("1")){
// System.out.println("请" + player.getName() + "输入1投掷骰子!");
// }
int n = judge.RollDice();
player.setFeet(n + player.getFeet());
if(player.getFeet() > 100){
System.out.println(player.getName() + "摇到了" + n + ",走到了第100格");
}
else {
System.out.println(player.getName() + "摇到了" + n + ",走到了第" + player.getFeet() + "格");
}
//判断是否触发炸弹
if(judge.touchBoom(player, chessboard)){
judge.Boom(player);
}
//判断是否触发幸运转盘
if(judge.touchLuckyTurn(player, chessboard)){
judge.LuckyTurn(player);
}
//判断是否出发暂停
if(judge.touchPause(player, chessboard)){
judge.Frozen(player);
System.out.println(player.getName() + "被暂停一回合!");
}
//判断是否出发时空隧道
if(judge.touchTimeTunnel(player, chessboard)){
judge.TimeTunnel(player, chessboard);
}
//判断玩家位置是否重叠
judge.overlap(player, withPlayer);
//判断游戏是否结束
if(player.getFeet() >= 100) judge.setWinner(player.getName());
}
}
class Player{
private boolean frozen = false; //暂停标记
private String name; //名字
private int feet = 0; //步数
boolean isFrozen(){
return frozen;
}
void setFrozen(boolean frozen){
this.frozen = frozen;
}
int getFeet() {
return feet;
}
void setFeet(int feet) {
this.feet = feet;
}
void setName(String name) {
this.name = name;
}
String getName() {
return name;
}
}
class Chessboard{
private final int[] luckyTurn = {6, 23, 40, 55, 69, 83};//幸运轮盘 1
private final int[] landMine = {5, 13, 17, 33, 38, 50, 64, 80, 94}; //地雷位置 2
private final int[] pause = {9, 27, 60, 93}; //暂停 3
private final int[] timeTunnel = {20, 25, 45, 63, 72, 88, 90}; //时空隧道 4
int[] getLandMine() {
return landMine;
}
int[] getLuckyTurn() {
return luckyTurn;
}
int[] getPause() {
return pause;
}
int[] getTimeTunnel() {
return timeTunnel;
}
}
class Judge {
private String winner = "";
//掷骰子
int RollDice(){
return (int)(Math.random()*5+1);
}
//是否碰到炸弹,到达终点返回true,反则返回false
boolean touchBoom(Player player, Chessboard chessboard){
for(int i : chessboard.getLandMine()){
if(i == player.getFeet()){
return true;
}
}
return false;
}
//是否碰到幸运转盘
boolean touchLuckyTurn(Player player, Chessboard chessboard){
for(int i : chessboard.getLuckyTurn()){
if(i == player.getFeet()){
return true;
}
}
return false;
}
//是否碰到暂停
boolean touchPause (Player player, Chessboard chessboard){
for(int i : chessboard.getPause()){
if(i == player.getFeet()){
return true;
}
}
return false;
}
//是否碰到时光隧道
boolean touchTimeTunnel (Player player, Chessboard chessboard){
for(int i : chessboard.getTimeTunnel()){
if(i == player.getFeet()){
return true;
}
}
return false;
}
//时光隧道
void TimeTunnel(Player player, Chessboard chessboard){
for (int i = 0; i < chessboard.getTimeTunnel().length; i++) {
if(player.getFeet() == chessboard.getTimeTunnel()[i]){
if(i == chessboard.getTimeTunnel().length-1){
player.setFeet(chessboard.getTimeTunnel()[0]);
}
else{
player.setFeet(chessboard.getTimeTunnel()[i+1]);
}
System.out.println(player.getName() + "遇到时空隧道,被传送到第" + player.getFeet() + "格!");
return;
}
}
}
//炸弹
void Boom(Player player){
int n = RollDice();
if(n > player.getFeet()){
player.setFeet(0);
}else{
player.setFeet(player.getFeet() - n);
}
System.out.println(player.getName() + "碰到地雷,向后退" + n + "步!" +
"现在在第" + player.getFeet() + "格!");
}
//暂停
void Frozen(Player player){ player.setFrozen(true); }
//幸运转盘
void LuckyTurn(Player player){
int n = RollDice();
player.setFeet(player.getFeet() + n);
System.out.println("触发幸运转盘,向前走" + n + "步!" +
player.getName() + "走到第" + player.getFeet() + "格!");
}
//重叠
void overlap(Player player1, Player player2){
if(player1.getFeet() == player2.getFeet()){
player2.setFeet(0);
System.out.println(player2.getName() + "被踩到了,退回到起点!");
}
}
String getWinner() {
return winner;
}
void setWinner(String winner) {
this.winner = winner;
}
}