package 实验2;
import java.util.Scanner;
public class 农夫过河{
public static void main(String[] args) {
Game game = new Game();
game.play();
}
}
class GameGui {
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 and sheep===========");
System.out.println("\t==========3:Cross the river with wolf and cabbage===========");
System.out.println("\t==========4:Cross the river with wolf and rabbit===========");
System.out.println("\t==========5:Cross the river with wolf and carrot===========");
System.out.println("\t==========6:Cross the river sheep and cabbage===========");
System.out.println("\t==========7:Cross the river sheep and rabbit===========");
System.out.println("\t==========8:Cross the river sheep and carrot===========");
System.out.println("\t==========9:Cross the river cabbage and rabbit===========");
System.out.println("\t==========10:Cross the river cabbage and carrot===========");
System.out.println("\t==========11:Cross the river rabbit and carrot===========");
System.out.println("\t==========12:Cross the river with wolf=========");
System.out.println("\t==========13:Cross the river with sheep============");
System.out.println("\t==========14:Cross the river with cabbage==========");
System.out.println("\t==========15:Cross the river with rarrot==========");
System.out.println("\t==========16:Cross the river with carrot==========");
System.out.println("\t==========0:Quit===============");
System.out.println("===================================================");
System.out.println("Input the number(0~16):");
}
public static void showStatus(Farmer farmer, Wolf wolf, Sheep sheep, Cabbage cabbage,Rabbit rabbit,Carrot carrot) {
/* 输出农夫、各种动物、物品的状态(生存、位置) */
Boat boat=new Boat();
farmer.showStatus();
wolf.showStatus();
sheep.showStatus();
boat.board(sheep);
cabbage.showStatus();
rabbit.showStatus();
carrot.showStatus();
}
}
class Game{
Wolf wolf;
Sheep sheep;
Cabbage cabbage;
Farmer farmer;
Rabbit rabbit;
Carrot carrot;
Game(){
wolf = new Wolf();
sheep = new Sheep();
cabbage = new Cabbage();
farmer = new Farmer();
carrot=new Carrot();
rabbit=new Rabbit();
}
protected void play() {
Scanner input = new Scanner(System.in);
int choice = 0;
//用户输入选择
boolean gameOver=false,//游戏结束标志,默认为false,代表游戏进行中,未结束
win=false; //游戏输赢标志,默认为false,代表未赢得游戏。
while(!gameOver)
{
GameGui.menu();
choice = input.nextInt();
switch(choice)
{
case 0: gameOver=true;
break;
case 1:/* 农夫独自过河的处理 */
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
// sheep.hasCross=false;
break;
case 2:/* 农夫带狼和羊的处理 */
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
wolf.crossRiver=!( wolf.crossRiver);
wolf.hasCross=!(wolf.hasCross);
sheep.crossRiver=!(sheep.crossRiver);
sheep.hasCross=!(sheep.hasCross);
break;
case 3:/* 农夫带狼和白菜的处理 */
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
wolf.crossRiver=!( wolf.crossRiver);
wolf.hasCross=!(wolf.hasCross);
cabbage.crossRiver=!( cabbage.crossRiver);
cabbage.hasCross=!(cabbage.hasCross);
break;
case 4:/* 农夫带狼和兔子的处理 */
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
wolf.crossRiver=!( wolf.crossRiver);
wolf.hasCross=!(wolf.hasCross);
rabbit.crossRiver=!(rabbit.crossRiver);
rabbit.hasCross=!(rabbit.hasCross);
break;
case 5:/*农夫带狼和胡萝卜的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
wolf.crossRiver=!( wolf.crossRiver);
wolf.hasCross=!(wolf.hasCross);
carrot.crossRiver=!(carrot.crossRiver);
carrot.hasCross=!(carrot.hasCross);
break;
case 6:/*农夫带羊和白菜的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
sheep.crossRiver=!(sheep.crossRiver);
sheep.hasCross=!(sheep.hasCross);
cabbage.crossRiver=!( cabbage.crossRiver);
cabbage.hasCross=!(cabbage.hasCross);
break;
case 7:/*农夫带羊和兔子的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
sheep.crossRiver=!(sheep.crossRiver);
sheep.hasCross=!(sheep.hasCross);
rabbit.crossRiver=!(rabbit.crossRiver);
rabbit.hasCross=!(rabbit.hasCross);
break;
case 8:/*农夫带羊和胡萝卜的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
sheep.crossRiver=!(sheep.crossRiver);
sheep.hasCross=!(sheep.hasCross);
carrot.crossRiver=!(carrot.crossRiver);
carrot.hasCross=!(carrot.hasCross);
break;
case 9:/*农夫带白菜和兔子的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
cabbage.crossRiver=!( cabbage.crossRiver);
cabbage.hasCross=!(cabbage.hasCross);
rabbit.crossRiver=!(rabbit.crossRiver);
rabbit.hasCross=!(rabbit.hasCross);
break;
case 10:/*农夫带白菜和胡萝卜的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
cabbage.crossRiver=!( cabbage.crossRiver);
cabbage.hasCross=!(cabbage.hasCross);
carrot.crossRiver=!(carrot.crossRiver);
carrot.hasCross=!(carrot.hasCross);
break;
case 11:/*农夫带兔子和胡萝卜的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
rabbit.crossRiver=!(rabbit.crossRiver);
rabbit.hasCross=!(rabbit.hasCross);
carrot.crossRiver=!(carrot.crossRiver);
carrot.hasCross=!(carrot.hasCross);
case 12:/* 农夫带狼的处理 */
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
wolf.crossRiver=!( wolf.crossRiver);
wolf.hasCross=!(wolf.hasCross);
//sheep.isAlive=true;
//cabbage.isAlive=false;
break;
case 13:/* 农夫带羊的处理 */
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
sheep.crossRiver=!( sheep.crossRiver);
sheep.hasCross=!(sheep.hasCross);
break;
case 14:/* 农夫带白菜的处理 */
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
cabbage.crossRiver=!( cabbage.crossRiver);
cabbage.hasCross=!(cabbage.hasCross);
//sheep.isAlive=false;
break;
case 15:/*农夫带兔子的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
rabbit.crossRiver=!(rabbit.crossRiver);
rabbit.hasCross=!(rabbit.hasCross);
break;
case 16:/*农夫带胡萝卜的处理*/
farmer.crossRiver=!( farmer.crossRiver);
farmer.hasCross=!(farmer.hasCross);
carrot.crossRiver=!(carrot.crossRiver);
carrot.hasCross=!(carrot.hasCross);
break;
}
if(sheep.hasCross==wolf.hasCross&&wolf.hasCross!=farmer.hasCross) {
wolf.eatSheep(sheep);
}
if(wolf.hasCross==rabbit.hasCross&&wolf.hasCross!=farmer.hasCross) {
wolf.eatrabbit(rabbit);
}
if(sheep.hasCross==cabbage.hasCross&&sheep.hasCross!=farmer.hasCross) {
sheep.eatCabbage(cabbage);
}
if(sheep.hasCross==carrot.hasCross&&sheep.hasCross!=farmer.hasCross) {
sheep.eatcarrot(carrot);
}
if(rabbit.hasCross==cabbage.hasCross&&rabbit.hasCross!=farmer.hasCross) {
rabbit.eatcabbage(cabbage);
}
if(rabbit.hasCross==carrot.hasCross&&rabbit.hasCross!=farmer.hasCross) {
rabbit.eatcarrot(carrot);
}
/*if(sheep.hasCross==false&&(cabbage.hasCross==false||carrot.hasCross==false)) {
sheep.eatCabbage(cabbage);
sheep.eatcarrot(carrot);
}
if(rabbit.hasCross==false&&(cabbage.hasCross==false||rabbit.hasCross==false)) {
rabbit.eatcabbage(cabbage);
rabbit.eatcarrot(carrot);
}
if(sheep.hasCross==false&&wolf.hasCross==false) {
wolf.eatSheep(sheep);
sheep.eatCabbage(cabbage);
}*/
GameGui.showStatus(farmer,wolf,sheep,cabbage,rabbit,carrot);
gameOver = isGameOver();
}
win=this.hasWin();
if(win) {
System.out.println("game over: you win !");
}else {
System.out.println("game over: you lose !");
}
input.close();
}
/*
* 判断游戏是否结束
* 输入:无
* 运算:羊、白菜任一实体被吃,游戏结束,或者狼、羊、白菜均未被吃且全部渡过河,游戏结束
* 输出:游戏结束--返回true ,未结束--返回false
*/
public boolean isGameOver() {
if(sheep.isAlive==false||cabbage.isAlive==false||rabbit.isAlive==false||carrot.isAlive==false) {
return true;
}
if(wolf.hasCross&&sheep.hasCross&&cabbage.hasCross&&rabbit.hasCross&&carrot.hasCross) {
return true;
}
return false;
}
/*
* 判断游戏是否胜利
* 前置条件:游戏结束
* 输入:无
* 运算:狼、羊、白菜均未被吃且全部渡过河,游戏胜利,否则失败
* 输出:游戏胜利--返回true ,失败--返回false
*/
public boolean hasWin() {
if(sheep.isAlive==false||cabbage.isAlive==false) {
return false;
}
if(wolf.hasCross&&sheep.hasCross&&cabbage.hasCross) {
return true;
}else {
return false;
}
}
}
class Boat{
Sheep sheep;
public void board(Sheep sheep) {
if(sheep.crossRiver==true) {
System.out.println(sheep.name+" has gone to the Boat!");
}
else{
System.out.println(sheep.name+" did not go to the Boat!");
}
}
public void disembark() {
}
}
class Animal{
boolean isAlive() {
return true;
}
boolean hasCross() {
return true;
}
boolean crossRiver() {
return true;
}
}
class Sheep extends Animal{
String name="sheep";
boolean isAlive=true;
boolean hasCross=false;
boolean crossRiver=false;
Sheep(){
}
public void getSheepName(String name) {
this.name=name;
}
public void eatCabbage(Cabbage cabbage){
cabbage.isAlive=false;
}
public void eatcarrot(Carrot carrot) {
carrot.isAlive=false;
}
public void showStatus() {
if(isAlive==true) {
System.out.println("sheep is alive:true");
}
else
{
System.out.println("sheep is alive:false");
}
if(crossRiver==true) {
System.out.println("sheep has cross:true");
}
else {
System.out.println("sheep has cross:false");
}
}
}
class Wolf extends Animal{
boolean hasCross=false;
boolean crossRiver=false;
boolean eatSheep=false;
boolean isAlive=true;
public void eatSheep(Sheep sheep) {
sheep.isAlive=false;
}
public void eatrabbit(Rabbit rabbit) {
rabbit.isAlive=false;
}
public void showStatus() {
if(isAlive==true) {
System.out.println("wolf is alive:true");
}
else
{
System.out.println("wolf is alive:false");
}
if(crossRiver==true) {
System.out.println("wolf has cross:true");
}
else {
System.out.println("wolf has cross:false");
}
}
}
class object{
boolean isAlive() {
return true;
}
boolean hasCross() {
return true;
}
boolean crossRiver() {
return true;
}
}
class Cabbage extends object{
boolean isAlive=true;
boolean hasCross=false;
boolean crossRiver=false;
public void showStatus() {
if(isAlive==true) {
System.out.println("cabbage is alive:true");
}
else
{
System.out.println("cabbage is alive:false");
}
if(crossRiver==true) {
System.out.println("cabbage has cross:true");
}
else {
System.out.println("cabbage has cross:false");
}
}
}
class Farmer extends object{
boolean crossRiver=false;
boolean hasCross=false;
boolean isAlive=true;
public void showStatus() {
if(isAlive==true) {
System.out.println("Farmer is alive:true");
}
else
{
System.out.println("Farmer is alive:false");
}
if(crossRiver==true) {
System.out.println("Farmer has cross:true");
}
else {
System.out.println("Farmer has cross:false");
}
}
}
class Rabbit extends Animal{
boolean crossRiver=false;
boolean isAlive=true;
boolean hasCross=false;
public void eatcabbage(Cabbage cabbage) {
cabbage.isAlive=false;
}
public void eatcarrot(Carrot carrot) {
carrot.isAlive=false;
}
public void showStatus() {
if(isAlive==true) {
System.out.println("Rabbit is alive:true");
}
else
{
System.out.println("Rabbit is alive:false");
}
if(crossRiver==true) {
System.out.println("Rabbit has cross:true");
}
else {
System.out.println("Rabbit has cross:false");
}
}
}
class Carrot extends Object{
boolean crossRiver=false;
boolean isAlive=true;
boolean hasCross=false;
public void showStatus(){
if(isAlive==true) {
System.out.println("Carrot is alive:true");
}
else
{
System.out.println("Carrot is alive:false");
}
if(crossRiver==true) {
System.out.println("Carrot has cross:true");
}
else {
System.out.println("Carrot has cross:false");
}
}
}
重要的是图形界面要做成什么样子,有没有效果图。
要求写成图形界面,emmmm,求助
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps: 问答会员年卡【8折】购 ,限时加赠IT实体书,即可 享受50次 有问必答服务,了解详情>>>https://t.csdnimg.cn/RW5m