编写自己的函数来解决迷宫!

magame的Python项目详细描述


马加梅

MaGame是一个包目前涉及两个迷宫游戏:Mappy和Pac man。在游戏Mappy中,一个老鼠警察正在迷宫中寻找犯罪的猫,而在另一个游戏Pac man中,角色试图吃掉迷宫中的所有点。



使用pip命令安装包后,可以按照以下步骤运行游戏。 第1步:从MaGame包导入游戏和迷宫

frommagameimportmappy# Import the Mappy gamefrommagameimportpacman# Import the Pac-man gamefrommagameimportmazes# Import the pre-defined mazes

变量mazes是一个元组,包含四个表示迷宫的嵌套列表,其中:

  • 迷宫壁用“1”表示。在
  • 开放路径用“0”表示。在
  • 地图游戏中的目标用“-1”表示。在吃豆人游戏中被视为“0”。在

下面给出了一个例子,您可以按照相同的格式创建自己的迷宫。在

^{pr2}$
[[0, 0, 0, 1, 1, 0, 0, 0, 1, 1],
 [0, 0, 1, 0, 1, 0, 0, 0, 0, 1],
 [1, 0, 1, 0, 1, 0, 0, 1, 0, 0],
 [1, 0, 0, 0, 1, 0, 0, 1, 0, 0],
 [1, 1, 0, 1, 1, 1, 0, 1, 1, 0],
 [0, 1, 0, 0, 1, 0, 0, 1, 0, 0],
 [0, 1, 0, 1, 1, 0, 1, 1, 1, 0],
 [0, 1, 0, 1, 0, 0, 1, 0, 0, 0],
 [0, 0, 0, 1, 0, 1, 1, 0, 1, 1],
 [1, 1, 0, 0, 0, 1, 0, 0, -1, 1]]

第2步:创建自己的函数来确定迷宫中的运动

用户定义函数必须遵循以下格式。在

defmaze_move(maze,position,memory):"""    Your code here    """returnmove,memory

函数的输入参数为:

  • maze作为表示迷宫的嵌套列表。在
  • position是一个tuple,有两个整数:v_index和{}。第一个整数v_index表示垂直索引,第二个整数h_index表示水平索引,如下图所示。在
  • memory可以是任何数据类型。用户可以使用它来跟踪所有以前的步骤或动作。内存的初始值是None。在

输出包括:

  • move是一个tuple,有两个整数:v_move和{}。它用于指示角色如何在迷宫中移动,如下图所示。在
  • memory是更新后的内存,例如迷宫中角色之前的所有步骤或之前的移动。在

该函数接收迷宫信息、迷宫中的当前位置、上一步、移动或其他形式的内存;然后决定下一步移动并更新内存。在

第3步:应用您的函数来玩游戏

只需调用mappypacman函数,就可以玩游戏了

mappy.play(maze,maze_move)pacman.play(maze,maze_move)

play()函数有两个输入参数:

  • maze是作为迷宫信息的嵌套列表。在
  • maze_move是您创建的函数的名称。它可以是任何有效的Python函数名。在

如果你的功能正常工作,你会发现角色在迷宫中移动。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
尝试连接到Red5服务器时出现java问题   java实现Runnable的类被认为是ExecutorServices的“Runnable任务”?   java struts2类中的多个@validation   java未能应用插件[class'org.gradle.api.plugins.scala.ScalaBasePlugin']:gradle v2。13   如何使用Java流仅收集长度最大的元素?   从spring引导应用程序连接到firestore的java引发空指针异常   java从SQLite插入和获取真实数据类型会为连续插入获取空值吗?   当存在未知数量的空格时,使用java替代正向查找   部署如何为当今的浏览器部署java小程序(小程序、嵌入、对象)?   @OneToMany和@ManyToOne@Formula之间的java双向关系返回null   java为什么在我的例子中,协议缓冲区的性能比JSON差?   如何部署混合C++/Java(JNI)应用程序?   java如何在程序中显示字符串的完整信息。反恐精英?   java在Hibernate中从持久性上下文中分离实体中的实体