Hunt the Wumpus第二个版本---多怪兽,多洞穴,洞穴间双向互通
其中,将洞穴连起来的算法要好好体会。
学习构建临时变量列表,确认循环用FOR,非确定循环用 WHILE,并定好退出条件。
from random import choice cave_numbers = range(0,20) caves = [] for i in cave_numbers: caves.append([]) #保证所有洞穴双向连通 unvisited_caves = range(0,20) visited_caves = [0] unvisited_caves.remove(0) while unvisited_caves != []: i = choice(visited_caves) if len(caves[i]) >= 3: continue next_cave = choice(unvisited_caves) caves[i].append(next_cave) caves[next_cave].append(i) visited_caves.append(next_cave) unvisited_caves.remove(next_cave) ''' for number in cave_numbers: print number, ":", caves[number] print "-------visited cave------" ''' print caves #保证每个洞穴与另外三个洞穴相连 for i in cave_numbers: while len(caves[i]) < 3: passage_to = choice(cave_numbers) caves[i].append(passage_to) ''' for number in cave_numbers: print number, ":", caves[number] print "-------other cave----------" ''' print caves #加入怪兽的朋友 wumpus_location = choice(cave_numbers) wumpus_friend_location = choice(cave_numbers) player_location = choice(cave_numbers) while player_location == wumpus_location or player_location == wumpus_friend_location: player_location = choice(cave_numbers) print "Welcome to Hunt the Wumpus!" print "You can see ", len(cave_numbers), "caves" print "To play, just type the number" print "of the cave you wish to enter next" while True: print "You are in cave ", player_location print "From here, you can see caves:", caves[player_location] if wumpus_location in caves[player_location] : print "I smell a wumpus!" if wumpus_friend_location in caves[player_location]: print "I smell an even stinkier wumpus!" ''' if (player_location == wumpus_location - 1 or player_location == wumpus_location + 1): print "I smell a wumpus!" if (player_location == wumpus_friend_location - 1 or player_location == wumpus_friend_location + 1): print "I smell an even stinkier wumpus!" ''' print "Which cave next?" player_input = raw_input(">") if (not player_input.isdigit() or int(player_input) not in caves[player_location]): print player_input + "?" print "That's not a direction that I can see!" continue else: player_location = int(player_input) if player_location == wumpus_location: print "Aargh! you got eaten by a wumpus!" break if player_location == wumpus_friend_location: print "Aargh! you got eaten by a wumpus's friend!" break
Hunt the Wumpus第二个版本---多怪兽,多洞穴,洞穴间双向互通的更多相关文章
- 吃午饭前,按书上的代码写会儿--Hunt the Wumpus第一个版本
有空就要慢慢练起~~~~脑袋动起来是很快乐的事儿....:) <易学PYTHON>演练一遍. from random import choice cave_numbers = range( ...
- Spring Cloud Alibaba发布第二个版本,Spring 发来贺电
还是熟悉的面孔,还是熟悉的味道,不同的是,这次的配方升级了. 今年10月底,Spring Cloud联合创始人Spencer Gibb在Spring官网的博客页面宣布:阿里巴巴开源 Spring Cl ...
- 怪兽z主机豪华版 答问。
我的淘宝店里,怪兽z主机标准版,分经济版本,标准版,豪华版,三个版本.这里给大家详细介绍一下豪华版的概况. 淘宝购买地址:http://item.taobao.com/item.htm?id=3818 ...
- 饼干怪兽和APT攻击
APT攻击就像一个孩子,你通过各种方式窃取他们的大脑要拿出饼干,为了防止恶意攻击,过失作为母亲未能发现和防止饼干盗窃贼如.于她仅仅监视厨房椅子.衣柜门或烤箱门的开启.建立起有效防御目标攻击与APT攻击 ...
- hdu 1026(BFS+输出路径) 我要和怪兽决斗
http://acm.hdu.edu.cn/showproblem.php?pid=1026 模拟一个人走迷宫,起点在(0,0)位置,遇到怪兽要和他决斗,决斗时间为那个格子的数字,就是走一个格子花费时 ...
- 使用canvas通过js制作一个小型英雄抓怪兽的2D小游戏
首先,这是一个HTML: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&q ...
- 如何用纯 CSS 创作一只徘徊的果冻怪兽
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/VdOKQG 可交互视频 ...
- 51nod-1670-打怪兽(递推/组合数学)
1670 打怪兽 基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注 lyk在玩一个叫做“打怪兽”的游戏.游戏的规则是这样的.lyk一开始会有一个初始 ...
- 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/VdOKQG 可交互视频 此视频是可 ...
随机推荐
- mysql System Tablespace
System Tablespace 数据文件配置: mysql> show variables like '%innodb_data_file_path%'; +---------------- ...
- 排序功能实现 jQuery实现排序 上移 下移
效果 思路, 跟相邻元素,互换sort. 前提是每一个元素都有自己的sort值,不为零. <tr id="{sh:$vo.id}"> <td> <sp ...
- cocos2d-x多分辨率适配原理分析(2.0.4之后的版本)
2013年11月4日补充: 之前写这篇博客的时候其实我还没有开始过真正的去做一个项目,主要过程还是偏向于理解原理.前几天在准备练练手时回过头来想了下这个问题,发现又有点一头雾水了,所以我觉得之前我并没 ...
- Contest - 2014 SWJTU ACM 手速测试赛(2014.10.31)
题目列表: 2146 Problem A [手速]阔绰的Dim 2147 Problem B [手速]颓废的Dim 2148 Problem C [手速]我的滑板鞋 2149 Problem D [手 ...
- spring aop实现原理
通过两种代理方式,一是JDK本身的代理方式,二是CGLIB提供的代理方式,在代理类的前面加事务begin,在后面加事务commit,需要的数据库连接从ThreadLocal中取
- 【初学者常见问题】一脚踏入protected埋下的陷阱
受保护的(protected)——声明该成员的类的子类可以访问这个类的成员(但有一定的限制),并且,声明该成员的包内部的任何类也可以访问这个成员 protected修饰符参考:http://www.3 ...
- Spring注解的使用和区别:@Component、@Service、@Repository、@Controller
Spring 2.5 中除了提供 @Component 注释外,还定义了几个拥有特殊语义的注释,它们分别是:@Repository.@Service 和 @Controller.在目前的 Spring ...
- next数组
首先看看next数组值的求解方法例如: 模式串 a b a a b c a c next值 0 1 1 2 2 3 1 2 next数组的求解方法是:第一位的next值为0 ...
- .net程序开发人员必看的变量的命名规则
(1)类名.属性名.方法名采用Pascal命名,如 class User { } interface IEditable { } bool ValidateInput() public int Age ...
- iOS调节系统音量
目录[-] 使用MPVolumeView 编程实现系统音量调节2 通过MPVolumeSlider的实例来操作系统音量 有问题!我不喜欢系统弹出音量提示 还有问题,我修改了系统音量但是不是通过我的UI ...