一、双端队列简介

双端队列有一个方法是rotate。可以把数据想成一个圆环,rotate能让它转起来,转多少,取决于我们给的参数。参数为正整数,那就顺时针旋转,为负整数则逆时针旋转。

from collections import deque
qlist=deque([1,2,3,4])
qlist.rotate(-3)
#参数为负,逆时针转三步
print(qlist)

下面是数据旋转的示意图:

二、用双端数列来实现非常简单的大富翁地图(地图就是一个环)

from collections import deque
import random#这个类用于生成地图
class Map():#初始化函数用于设置玩家的名字,并生成最初的地图以及玩家位置(玩家最初的位置就是在空地1)def __init__(self,name):self.qlst=deque(['空地1','空地2','空地3','空地4','空地5'])self.name=name#下面这个move方法是用于掷骰子并按照骰子的点数来变换位置的,返回的是玩家的新位置def move(self):self.step=random.randint(1,6)self.qlst.rotate(-self.step)return (self.step,self.qlst[0])#下面这个函数用于给空地重命名,如果玩家选择了买地,那么那块地就会冠上玩家的名字,返回的值是土地的新名字def rename(self):self.qlst[0]=self.name+'的地盘'return self.name+'的地盘'#下面这个函数是用于跟玩家互动的,玩家可以选择是否买地,并根据玩家的选择打印出当前的地图
def trade(my_location,your_location):input(my_location.name+',按任意键掷骰子')the_tuple=my_location.move()print('你掷出的点数是',the_tuple[0],'你所在的位置是',the_tuple[1])if the_tuple[1][:2]=='空地':code=input('是否要买地?输入Y买地,输入其他任意键不买。')if code=='Y':#下面是寻找我方要购买的土地在对方地图里的索引,然后把对方地图里的土地命名同步修改ind=your_location.qlst.index(the_tuple[1])newname=my_location.rename()your_location.qlst[ind]=newnameprint(my_location.qlst)else:print(my_location.qlst)#下面是实例化两个地图,我方玩家和对方玩家分别有一个地图,这样才能记录两个人的位置情况
player_location=Map('舒蓉')
enemy_location=Map('顾京飞')while True:trade(my_location=player_location,your_location=enemy_location)trade(my_location=enemy_location,your_location=player_location)#下面这些代码只是为了给程序的结束找到一个时机,避免死循环,跟真实的大富翁游戏判断输赢的标准没有关系。我这里的条件是,只要空地都被买走了,就结束程序(实际的运行中在玩家1买完了最后一块地后,玩家2还要再掷一次骰子,这个不是很重要,只要程序能结束就行,我就不改了……)for i in player_location.qlst:if '空' in i:breakelse:break

用Python的双端队列deque实现非常简单的大富翁地图相关推荐

  1. [转载] Python的双端队列deque

    参考链接: Python中的双端队列DeQue Python的强大并不在于它的语法,而在于它的库,当你对各种数据结构感到苦恼时,Python提供了各种开箱即用的数据结构. 数据结构中最常讲授的数据结构 ...

  2. 队列(queue)与双端队列(deque)—Python实现方法及回文词应用

    队列 Queue 抽象数据类型Queue:一个有次序的数据集合,数据项仅从 尾(rear) 端添加,且仅从 首(front) 端移除,具有 "FIFO" 的特点. 需要实现的操作: ...

  3. C++ 双端队列(deque)的使用

    双端队列(deque)是什么 双端队列(deque)是一种随机访问的数据类型,提供了在序列两端快速插入和删除的功能,deque类似于vector, 双端队列(deque)属于STL(Standard ...

  4. c++ 双端队列 deque 之 (头部、尾部)插入元素/删除元素/

    头文件     #include <deque> 和vector用法基本相同 没有 capacity() reserve() 有了push_back(),pop_back() //inse ...

  5. 6-5-2:STL之stack和queue——双端队列deque

    文章目录 双端队列-deque 双端队列-deque deque是一种双向开口的连续线性空间.所谓双向开口,意思就是可以在头尾两端分别进行元素的插入和删除操作 deque的出现是为了解决融合vecto ...

  6. Python实现双端队列

    Python实现双端队列 关于双端队列的介绍,请参考:https://blog.csdn.net/weixin_43790276/article/details/104033337 双端队列的数据存储 ...

  7. STL之双端队列deque:新手入门,基础应用

    STL之双端队列deque:新手入门,基础应用 简单的自我介绍 STL之deque:基本函数的运用 源代码 运行结果 结尾 简单的自我介绍 一名努力学习code的计算机专业大二在校学生,平时不论是完成 ...

  8. 【C++】STL常用容器总结之五:双端队列deque

    6.双端队列deque 所谓的deque是"double ended queue"的缩写,双端队列不论在尾部或头部插入元素,都十分迅速.而在中间插入元素则会比较费时,因为必须移动中 ...

  9. java lifo 队列_1.8 Java 队列 Queue、双端队列 Deque - Java 知识总结与学习

    queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.除了基本的 Collection 操作外,队列还 ...

最新文章

  1. 2020年1月Github上最热门的开源项目
  2. php5.5 反序列化利用工具_%00截断配合反序列化的奇妙利用
  3. EduCoder Linux 文件/目录管理
  4. 如何实现一个循环显示超长图片的控件
  5. Eureka自我保护机制
  6. Intel 64/x86_64/IA-32/x86处理器 - SIMD指令集 - SSE扩展(11) - 数据可缓存性控制指令
  7. 返回封装结果集Result
  8. NeHe OpenGL第三十二课:拾取游戏
  9. SpringMVC学习指南-前言
  10. 信息学奥赛c++ 初学保姆级教程
  11. C语言——类型限定词
  12. oracle数据库有哪些权限,ORACLE数据库中权限有哪些?
  13. JavaScript首次体验
  14. [2016 NUIST 程序设计竞赛] D. 达朗贝尔的台阶
  15. Qt Quick 渲染之 Scene Graph 详解
  16. 工厂管理系统该如何选?5款主流的工厂管理软件全测评!
  17. file.exists()方法,明明存在,
  18. Zigbee3.0 协议特性
  19. 《传感器电路的低噪声信号调理》阅读笔记
  20. 入行数据分析要知道数据挖掘到底是做什么的

热门文章

  1. “大连天健网”“中国石油大学”等网站被挂马
  2. Android小程序视频源码透明屏幕的方法
  3. 一些非常好看的背景颜色渐变
  4. 性能测试系统资源监控(一)---CPU
  5. 第一启富金:两大利空压顶 黄金承压大跌
  6. 唱一曲归来未晚,歌一调湖海茫茫
  7. unity如何解决协程开启频繁导致的程序卡顿
  8. Python数据分析之股票分析
  9. 年月日时分秒的正则表达式
  10. Bcrypt-密码加密---kalrry