人、狼、羊、草过河的小游戏Python实现
人、狼、羊、草过河的小游戏
'''
想要实现的功能是,智能的选择过河的顺序
'''def is_valid_status(status):if status[1] == status[2] and status[0] != status[1]:print('狼吃羊')return Falseif status[2] == status[3] and status[0] != status[2]:print('羊吃草')return Falsereturn Truedef create_all_next_status(status):'''一种状态的下面会有多种子状态,将合理的子状态全部输出:param status::return:'''next_status_list = []for i in range(0, 4):if status[0] != status[i]:continuenext_status = [not status[0], status[1], status[2], status[3]]next_status[i] = next_status[0]if is_valid_status(next_status):next_status_list.append(next_status)return next_status_listdef is_done(status):return status[0] and status[1] and status[2] and status[3]def readable_status(status, is_across):result = ''for i in range(0, 4):if status[i] == is_across:if len(result) != 0:result += ","result += name[i]return "[" + result + "]"def print_history_status(history_status):for status in history_status:print('%s=======%s' % (readable_status(status, False), readable_status(status, True)))def search(history_status):global scheme_countcurrent_status = history_status[len(history_status) - 1]next_status_list = create_all_next_status(current_status)print(len(next_status_list))for next_status in next_status_list:print(next_status)if next_status in history_status:continuehistory_status.append(next_status)# 判断是否完成if is_done(next_status):scheme_count += 1print_history_status(history_status)else:search(history_status)history_status.pop()if __name__ == '__main__':# 初始化开局,都没到对岸name = ['farmer', 'wolf', 'sheep', 'grass']scheme_count = 0status = [False, False, False, False]# 历史局面列表history_status = [status]search(history_status)print('finish search, find' + str(scheme_count) + ' scheme')
人、狼、羊、草过河的小游戏Python实现相关推荐
- 狼羊菜过河(C实现)
题目描述:农夫需要把狼.羊.菜和自己运到河对岸去,只有农夫能够划船,而且船比较小,除农夫之外每次只能运一种东西,还有一个棘手问题,就是如果没有农夫看着,羊会偷吃菜,狼会吃羊.请考虑一种 ...
- JAVA课程设计——“小羊吃蓝莓”小游戏
JAVA课程设计--"小羊吃蓝莓"小游戏 1. 团队课程设计博客链接 http://www.cnblogs.com/HXY071/p/7061216.html 2. 个人负责模块或 ...
- 猜秘密三位数(人、机互相猜)小游戏
题目: 猜秘密三位数(人.机互相猜)小游戏 问题描述: 你和计算机都各自选定一个秘密的三位数,然后互相猜对方的数字.用几个A表示对方猜的三位数中有几个数是完全正确的.用几个B表示对方猜的三位数中有几个 ...
- 算法之狼羊菜过河问题
算法之狼羊菜过河问题 1.带羊再带狼 回来时把羊带上 然后把白菜带到对岸 最后把羊带过去 2..带羊再带菜 回来时把羊带上 然后把狼带到对岸 最后把羊带过去 关键点在于羊和两个都有联系,而狼不吃菜,
- *python解决狼羊菜过河问题
python解决狼羊菜过河问题 A岸有菜,羊,狼,农夫农夫必须将他们都送到B岸每次只能送一个,在保证他们不会被吃的前提下,完成任务,并得出步骤. 代码: A=[["狼",1],[& ...
- 23款小游戏-Python一行代码就能玩
给IT入门加星标,提升编程技能 free-python-games,一行代码就能进入使用Python开发的小游戏快乐玩耍! 安装 pip install freegames Python包括随您的安装 ...
- python飞机大战加背景音乐_python实现飞机大战小游戏 python飞机大战中的音频文件怎么改成MP3...
怎么样用Python写飞机大战游戏 python开发飞机大战外星人游戏怎么弄双人模式新的一年,哪怕仍是一个人,也要活得像一支队伍,为自己的头脑和心灵招兵买马,不气馁,有召唤,爱自由. 主函数 impo ...
- 不愧是大厂牛人!用Java实现象棋小游戏(附超详细,超长究极无敌代码)
本文实例为大家分享了java实现象棋小游戏的具体代码,供大家参考,具体内容如下 用Eclipse编写 java环境1.8jdk 代码如下 package xiangqi象棋; /***中国象棋Java ...
- 狼羊白菜过河问题C++
先从过河原理出发---狼与羊不能单独一起,羊与草不能单独一起,由此可见草是能否过河的关键.因此·草必须第一次过河且不能只是一次过河,这就需要应用到队列,队列的性质先进先出.羊先到对岸之后,因为羊与狼和 ...
最新文章
- 人工智能机器学习区别计算机应用,AI、人工智能和机器学习有什么区别
- InetAddress类的一些方法
- 6个常用的Java开发技巧,快收藏吧!
- 发现1个宝藏项目,GitHub上都没有的那种!
- python是如何引起的_1.2.8 如何开始使用python
- Netty in action—Netty传输服务
- android播放音频的格式,android 音频播放_android ios 音频格式_android 播放网络音频...
- linux霸天虎3.6.1+windows平台 无线WEB CRACK
- 五款服务器配置管理工具
- C语言 “百鸡问题”最优解
- 王者荣耀鸿蒙抽奖,爆料:天行者抽奖乾坤福袋鸿蒙秘宝将再出现
- Python基于OpenCV的交通路口红绿灯控制系统设计
- php下单声音提醒,拼多多商家怎么设置下单的声音?开启方法是什么?
- 【C语言】编程实现输出矩阵上/下三角的数值。要求:输入一个正整数n和n阶矩阵的数值,打印输出矩阵、下三角和上三角的数值。
- android怎么调起记事本,安卓手机上怎么找到便签或记事本?
- 前端拖拽drag的使用
- 计算机应用能力考试 职称,专业技术人员计算机应用能力考试(全国计算机职称考试网)...
- CV(计算机视觉):概述
- CQUPT第十三届ACM网赛 H. 活动图 题解
- 建荣Ax3268工作简记