60行Python PyGame代码实现简单的迷宫游戏

 更新时间:2023年12月30日 08:42:48   作者:微小冷  
这篇文章主要为大家详细介绍如何通过了60行Python PyGame代码实现一个简单的迷宫游戏,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下

迷宫

迷宫的逻辑很简单,就是用上下左右键控制方块运动,然后定义一下墙壁,指明方块不能穿过墙壁即可。

当然,还是老规矩,在具体实现之前,先设置一些常量

import pygame
import sys

# 定义颜色
GRAY = (205, 205, 205)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
SIZE = 40

接下来设置一个按键字典,用于控制方块运动

KEY_DCT = {
    pygame.K_LEFT : [-1, 0],
    pygame.K_RIGHT : [1, 0],
    pygame.K_UP : [0, -1],
    pygame.K_DOWN : [0, 1]
}

以左键为例,当左键按左时,方块的纵坐标不变,而横坐标减去1,顾对应( − 1 , 0 ) (-1,0)(−1,0)。

迷宫表示以及初始化

考虑到更好的自定义迷宫的支持,采用字符列表作为迷宫的映射,以#, I, O分别表示墙壁、玩家位置以及出口位置。从而上面的迷宫可表示如下

maze = [
    "############",
    "#I    #    #",
    "#  ## ###  #",
    "#  #       #",
    "#  #  #### #",
    "#   ##     #",
    "# ###  # # #",
    "# ##   #   #",
    "#   #  # # #",
    "## #  ##   #",
    "# # #O#  ###",
    "############"
]

​​​​​​​maze = [list(m) for m in maze]

之所以采用嵌套的字符列表,乃因字符串不支持类似s[1]=2这种操作。

接下来要做的,就是定义一个绘图函数,可以将迷宫和玩家统一绘制出来,实现如下。如果后续有升级的需求,在迷宫中放置一些不明物体,从而需要的字符种类更多,那么可以考虑将绘图逻辑封装成字典。

# 绘制迷宫地图
def init(strLst = maze):
    # 第i行,第j列
    for i,s in enumerate(strLst):
        for j,ch in enumerate(s):
            if ch not in "#IO":
                continue
            rect = (j*SIZE, i*SIZE, SIZE, SIZE)
            if ch == "#":
                pygame.draw.rect(win, GRAY, rect,5)
            elif ch == "I":
                player = [j, i]
                pygame.draw.rect(win, RED, rect)
            elif ch == "O":
                pExit = [j, i]
                pygame.draw.rect(win, GREEN, rect)
    return player, pExit

游戏主循环

在实现主循环之前,需要对pygame进行初始化,包括初始化窗口等

# 初始化pygame
pygame.init()
win = pygame.display.set_mode(
    (len(maze[0]) * SIZE, len(maze) * SIZE))
pygame.display.set_caption("迷宫游戏")
running = True

其中,running为游戏结束的判定变量,其主循环内容如下

到此这篇关于60行Python PyGame代码实现简单的迷宫游戏的文章就介绍到这了,更多相关Python PyGame迷宫内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python命令行模式的用法及流程

    python命令行模式的用法及流程

    在本篇文章里小编给大家整理的是一篇关于python命令行模式的用法及流程相关内容,有兴趣的朋友们可以跟着学习下。
    2021-09-09
  • Django Docker容器化部署之Django-Docker本地部署

    Django Docker容器化部署之Django-Docker本地部署

    这篇文章主要介绍了Django Docker容器化部署之Django-Docker本地部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • Python写出新冠状病毒确诊人数地图的方法

    Python写出新冠状病毒确诊人数地图的方法

    在本篇文章里小编给大家分享的是关于Python做新冠状病毒确诊人数地图的详解内容,需要的朋友们可以学习下。
    2020-02-02
  • Python利用PyPDF2库处理PDF文件的基本操作

    Python利用PyPDF2库处理PDF文件的基本操作

    PyPDF2是一个Python库,用于处理PDF文件,包括合并、分割、旋转和提取文本等操作,它是一个功能强大且灵活的工具,可用于自动化处理PDF文件,适用于各种应用,从文档管理到数据分析,本文将深入介绍PyPDF2库,掌握如何利用它来处理PDF文件,需要的朋友可以参考下
    2023-11-11
  • NumPy中np.c_ 和 np.r_ 的区别小结

    NumPy中np.c_ 和 np.r_ 的区别小结

    np.c_和 np.r_是NumPy库中两个非常有用的函数,它们分别用于按列和按行拼接数组本文主要介绍了NumPy中np.c_ 和 np.r_ 的区别小结,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • Python内存优化的七种技巧分享

    Python内存优化的七种技巧分享

    本文将重点介绍 Python 的内置机制,并介绍 7 种原始但有效的内存优化技巧,掌握这些技巧将大大提高你的 Python 编程能力,文中通过代码示例给大家讲解的非常详细,感兴趣的小伙伴跟着小编一起来学习吧
    2024-02-02
  • Python中lazy property的两种方法小结

    Python中lazy property的两种方法小结

    本文介绍了Python中实现延迟属性lazyproperty的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-01-01
  • python反转单链表算法题

    python反转单链表算法题

    这篇文章主要为大家详细介绍了python反转单链表算法题,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 利用Python进行金融数据分析的全过程

    利用Python进行金融数据分析的全过程

    金融数据分析在现代金融行业中扮演着至关重要的角色,通过使用Python编程语言,我们可以对大量金融数据进行处理、分析和可视化,从而获得有价值的洞察,本篇文章将介绍如何使用Python进行金融数据分析,需要的朋友可以参考下
    2024-08-08
  • python 爬取壁纸网站的示例

    python 爬取壁纸网站的示例

    这篇文章主要介绍了python 爬取壁纸网站的示例,帮助大家更好的理解和学习使用python爬虫,感兴趣的朋友可以了解下
    2021-03-03

最新评论