人狼羊菜过河,请你用c++实现
时间: 2024-05-20 16:17:45 浏览: 95
以下是一个简单的 C 语言实现:
#include <stdio.h>
#include <stdlib.h>
int main() {
int wolf = 1, sheep = 1, cabbage = 1; // 初始位置都在岸边
int boat = 1; // 初始时船在岸边
int choice;
while (wolf || sheep || cabbage) { // 只要还有一种物品没有过河,就继续循环
printf("当前岸边状态:");
if (wolf) printf("狼 ");
if (sheep) printf("羊 ");
if (cabbage) printf("菜 ");
printf("\n");
printf("请选择要带过河的物品:\n");
printf("1. 狼\n");
printf("2. 羊\n");
printf("3. 菜\n");
printf("4. 什么都不带\n");
scanf("%d", &choice);
switch (choice) {
case 1: // 带狼过河
if (boat == 1 && sheep == 1) { // 船在左岸,羊还在左岸,不能带狼过去
printf("狼不能吃掉羊!\n");
} else { // 否则可以带狼过去
wolf = 0; // 狼在右岸
boat = 0; // 船在右岸
}
break;
case 2: // 带羊过河
if (boat == 0 && wolf == 1) { // 船在右岸,狼还在右岸,不能带羊过去
printf("狼不能吃掉羊!\n");
} else { // 否则可以带羊过去
sheep = 0; // 羊在右岸
boat = 0; // 船在右岸
}
break;
case 3: // 带菜过河
cabbage = 0; // 菜在右岸
boat = 0; // 船在右岸
break;
default: // 不带任何物品过河
boat = 1 - boat; // 船切换到对岸
}
if ((sheep == 0 && cabbage == 0) || (wolf == 0 && sheep == 0)) { // 羊吃菜或狼吃羊,游戏结束
printf("你输了!\n");
return 0;
}
if (wolf == 0 && sheep == 0 && cabbage == 0) { // 所有物品都已经过河,游戏胜利
printf("你赢了!\n");
return 0;
}
}
return 0;
}
阅读全文