农夫过河两种玩法:
1.农夫带一种东西过河
(原始玩法)
2.农夫带两种东西过河
(新增两个角色,胡萝卜,兔子,农夫不在时兔子会吃胡萝卜,狼会吃兔子)
先选择玩法:
第一种玩法的正确输入是:3123413
第二种玩法的正确步骤留给你们,下面上代码:
package ShiYan;
import java.util.Scanner;
public class Cross {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("请输入你想进行的游戏模式(1为传统玩法)(2为带两种东西过河),请选择:");
int Ze = input.nextInt();
if (Ze == 1) {
game11 game = new game11();
game.play();
} else if (Ze == 2) {
game2 game2 = new game2();
game2.play2();
} else {
System.out.println("输入错误!");
System.exit(0);
}
}
}
class thing {
private boolean hasCross = false;
private boolean isAlive = true;
public boolean isHasCross() {
return hasCross;
}
public void setHasCross(boolean hasCross) {
this.hasCross = hasCross;
}
public boolean isAlive() {
return isAlive;
}
public void setAlive(boolean alive) {
this.isAlive = alive;
}
public void showStatus() {
}
public void eatSheep(thing sheep, thing farmer) {
}
public void eatCabbage(thing cabbage, thing farmer) {
}
public void eatHuLuoBu(thing huLuoBu, thing farmer) {
}
}
class cabbage11 extends thing {
public void showStatus() {
System.out.println("Cabbage is alive:" + super.isAlive());
System.out.println("Cabbage has Cross:" + super.isHasCross());
}
}
class wolf11 extends thing {
String name;
public wolf11(String name) {
this.name = name;
System.out.println("啊呜~~,我是可爱小狼仔 " + this.name + ",我又回来了!");
}
public void eatSheep(thing sheep, thing farmer) {
if (!(sheep.isHasCross() == super.isHasCross() && farmer.isHasCross() == sheep.isHasCross())) {
if ((sheep.isHasCross() == super.isHasCross()))
sheep.setAlive(false);
} else
sheep.setAlive(true);
}
public void showStatus() {
System.out.println("Wolf " + this.name + " is alive :" + super.isAlive());
System.out.println("Wolf " + this.name + " has Cross :" + super.isHasCross());
}
}
class farm11 extends thing {
public void showStatus() {
System.out.println("Farmer has Cross :" + super.isHasCross());
}
}
class sheep11 extends thing {
String name;
public sheep11(String name) {
this.name = name;
System.out.println("咩咩,我是可爱的小羊 " + this.name);
}
public void eatCabbage(thing cabbage, thing farmer) {
if (!(cabbage.isHasCross() == super.isHasCross() && farmer.isHasCross() == cabbage.isHasCross())) {
if ((cabbage.isHasCross() == super.isHasCross()))
cabbage.setAlive(false);
} else
cabbage.setAlive(true);
}
public void showStatus() {
System.out.println("Sheep " + this.name + " is alive :" + super.isAlive());
System.out.println("Sheep " + this.name + " has Cross :" + super.isHasCross());
}
}
class tuZi extends thing {
String name;
public tuZi(String name) {
this.name = name;
System.out.println("我是可爱的小兔兔" + this.name);
}
public void eatHuLuoBu(thing huLuoBu, thing farmer) {
if (!(huLuoBu.isHasCross() == super.isHasCross() && farmer.isHasCross() == huLuoBu.isHasCross())) {
if ((huLuoBu.isHasCross() == super.isHasCross()))
huLuoBu.setAlive(false);
else
huLuoBu.setAlive(true);
}
}
public void showStatus() {
System.out.println("tuZi " + this.name + " is alive :" + super.isAlive());
System.out.println("tuZi " + this.name + " has Cross :" + super.isHasCross());
}
}
class huLuoBu extends thing {
public void showStatus() {
System.out.println("huLuoBu is alive:" + super.isAlive());
System.out.println("huLuoBu has Cross:" + super.isHasCross());
}
}
class boat11 {
void boat(thing s) {
s.setHasCross(!s.isHasCross());
}
void boat1(thing s1, thing s2) {
s1.setHasCross(!s1.isHasCross());
s2.setHasCross(!s2.isHasCross());
}
void boat2(thing a1, thing a2, thing a3) {
a1.setHasCross(!a1.isHasCross());
a2.setHasCross(!a2.isHasCross());
a3.setHasCross(!a3.isHasCross());
}
}
class gamegui11 {
public static void menu() {
/* 显示菜单 */
System.out.println("==================Please choose operation============");
System.out.println("\t==========1:Cross the river alone===========");
System.out.println("\t==========2:Cross the river with wolf=========");
System.out.println("\t==========3:Cross the river with sheep============");
System.out.println("\t==========4:Cross the river with cabbage==========");
System.out.println("\t==========0:Quit===============");
System.out.println("===================================================");
System.out.println("Input the number(0~4):");
}
public static void showStatus(thing farmer, thing wolf, thing sheep, thing cabbage) {
farmer.showStatus();
wolf.showStatus();
sheep.showStatus();
cabbage.showStatus();
}
}
class game11 {
thing wolf;
thing sheep;
thing cabbage;
thing farmer;
boat11 boat;
game11() {
wolf = new wolf11("jack");
sheep = new sheep11("nancy");
cabbage = new cabbage11();
farmer = new farm11();
boat = new boat11();
}
void play() {
Scanner input = new Scanner(System.in);
int choice = 0; //用户输入选择
boolean gameOver = false,//游戏结束标志,默认为false,代表游戏进行中,未结束
win = false; //游戏输赢标志,默认为false,代表未赢得游戏。
while (!gameOver) {
gamegui11.menu(); /错误原因:无法从 static 上下文引用非static方法menu()
choice = input.nextInt(); ///所以将menu()改为static类型
switch (choice) {
case 0:
System.out.println("Quit");
System.exit(0);
break;
case 1:/* 农夫独自过河的处理 */
boat.boat(farmer);
break;
case 2:/* 农夫带狼的处理 */
boat.boat1(farmer, wolf);
break;
case 3:/* 农夫带羊的处理 */
boat.boat1(farmer, sheep);
break;
case 4:/* 农夫带白菜的处理 */
boat.boat1(farmer, cabbage);
break;
}
wolf.eatSheep(sheep, farmer);//狼吃羊,如果羊不在同一边,则吃不到,如果在同一边,羊被吃
sheep.eatCabbage(cabbage, farmer);//同上
gamegui11.showStatus(farmer, wolf, sheep, cabbage);
gameOver = isGameOver();
}
win = this.hasWin();
if (win) {
System.out.println("game over: you win !");
} else {
System.out.println("game over: you lose !");
}
input.close();
}
public boolean isGameOver() {
if (sheep.isAlive() == false || cabbage.isAlive() == false) {
return true;
}
if (wolf.isHasCross() && sheep.isHasCross() && cabbage.isHasCross()) {
return true;
}
return false;
}
public boolean hasWin() {
if (sheep.isAlive() == false || cabbage.isAlive() == false) {
return false;
}
if (wolf.isHasCross() && sheep.isHasCross() && cabbage.isHasCross()) {
return true;
} else {
return false;
}
}
}
class game2 {
thing wolf;
thing sheep;
thing cabbage;
thing farmer;
thing tuZi;
thing huLuoBu;
boat11 boat;
game2() {
wolf = new wolf11("yueHan");
tuZi = new tuZi("KaKa");
sheep = new sheep11("Cindy");
huLuoBu = new huLuoBu();
cabbage = new cabbage11();
farmer = new farm11();
boat = new boat11();
}
void play2() {
Scanner input = new Scanner(System.in);
int choice = 0; //用户输入选择
boolean gameOver2 = false,//游戏结束标志,默认为false,代表游戏进行中,未结束
win2 = false; //游戏输赢标志,默认为false,代表未赢得游戏。
while (!gameOver2) {
gamegui2.menu(); /错误原因:无法从 static 上下文引用非static方法menu()
choice = input.nextInt(); ///所以将menu()改为static类型
switch (choice) {
case 0:
System.out.println("Quit");
System.exit(0);
break;
case 1:/* 农夫独自过河的处理 */
boat.boat(farmer);
break;
case 2:/* 农夫带狼的处理 */
boat.boat1(farmer, wolf);
break;
case 3:/* 农夫带羊的处理 */
boat.boat1(farmer, sheep);
break;
case 4:/* 农夫带白菜的处理 */
boat.boat1(farmer, cabbage);
break;
case 5://带兔子过河
boat.boat1(tuZi, farmer);
break;
case 6://带胡萝卜过河
boat.boat1(huLuoBu, farmer);
break;
case 7:
boat.boat2(wolf, sheep, farmer);
break;
case 8:
boat.boat2(wolf, cabbage, farmer);
break;
case 9:
boat.boat2(wolf, tuZi, farmer);
break;
case 10:
boat.boat2(wolf, huLuoBu, farmer);
break;
case 11:
boat.boat2(cabbage, sheep, farmer);
break;
case 12:
boat.boat2(tuZi, sheep, farmer);
break;
case 13:
boat.boat2(huLuoBu, sheep, farmer);
break;
case 14:
boat.boat2(cabbage, tuZi, farmer);
break;
case 15:
boat.boat2(cabbage, huLuoBu, farmer);
break;
case 16:
boat.boat2(tuZi, huLuoBu, farmer);
break;
}
wolf.eatSheep(sheep, farmer); //狼吃羊,如果羊不在同一边,则吃不到,如果在同一边,羊被吃
sheep.eatCabbage(cabbage, farmer);
sheep.eatCabbage(huLuoBu, farmer);//同上
tuZi.eatHuLuoBu(huLuoBu, farmer);
wolf.eatSheep(tuZi, farmer); //狼吃兔子
gamegui2.showStatus(farmer, wolf, sheep, cabbage, tuZi, huLuoBu);
gameOver2 = isGameOver2();
}
win2 = this.hasWin2();
if (win2) {
System.out.println("game over: you win !");
} else {
System.out.println("game over: you lose !");
}
input.close();
}
public boolean isGameOver2() {
if (sheep.isAlive() == false || cabbage.isAlive() == false || tuZi.isAlive() == false || huLuoBu.isAlive() == false) {
return true;
}
if (wolf.isHasCross() && sheep.isHasCross() && cabbage.isHasCross() && tuZi.isHasCross() && huLuoBu.isHasCross()) {
return true;
}
return false;
}
public boolean hasWin2() {
if (sheep.isAlive() == false || cabbage.isAlive() == false || tuZi.isAlive() == false || huLuoBu.isAlive() == false) {
return false;
}
if (wolf.isHasCross() && sheep.isHasCross() && cabbage.isHasCross() && tuZi.isHasCross() && huLuoBu.isHasCross()) {
return true;
} else {
return false;
}
}
}
class gamegui2 {
public static void menu() {
/* 显示菜单 */
System.out.println("==================Please choose operation============");
System.out.println("\t==========1:Cross the river alone===========");
System.out.println("\t==========2:Cross the river with wolf=========");
System.out.println("\t==========3:Cross the river with sheep============");
System.out.println("\t==========4:Cross the river with cabbage==========");
System.out.println("\t==========5:Cross the river with tuZi==========");
System.out.println("\t==========6:Cross the river with huLuoBu==========");
System.out.println("\t==========7:Cross the river with wolf and sheep=========");
System.out.println("\t==========8:Cross the river with wolf and cabbage=========");
System.out.println("\t==========9:Cross the river with wolf and tuZi=========");
System.out.println("\t==========10:Cross the river with wolf and huLuoBu=========");
System.out.println("\t==========11:Cross the river with sheep and cabbage============");
System.out.println("\t==========12:Cross the river with sheep and tuZi============");
System.out.println("\t==========13:Cross the river with sheep and huLuoBu============");
System.out.println("\t==========14:Cross the river with cabbage and tuZi==========");
System.out.println("\t==========15:Cross the river with cabbage and huLuoBu==========");
System.out.println("\t==========16:Cross the river with tuZi and huLuoBU==========");
System.out.println("\t==========0:Quit===============");
System.out.println("===================================================");
System.out.println("Input the number(0~16):");
}
public static void showStatus(thing farmer, thing wolf, thing sheep, thing cabbage, thing tiZi, thing huLuoBu) {
farmer.showStatus();
wolf.showStatus();
sheep.showStatus();
cabbage.showStatus();
tiZi.showStatus();
huLuoBu.showStatus();
}
}