• 【有趣的Python小程序】Python多个简单上手的库制作WalkLattice 走格子游戏 (思路篇)上


    篇写上一个思路篇,那么今天我们就来完成这一项工作

    源代码和配套文件

    链接: https://caiyun.139.com/m/i?135ClY1yWrSKX 提取码:e4pq 复制内容打开中国移动云盘手机APP,操作更方便哦

    在这里插入图片描述

    思路明确

    首先我们要准备好以下的几个工具

    1. Python 3.x
    2. AudioPlayer 库

    我们将使用Turtle来完成这一次的走格子的小游戏

    开始编程

    设置剧情

    游戏的创作没有一个好的剧情怎么可以。这个游戏我的定位呢,是将其打造成为一个简单的走迷宫游戏,在这个游戏当中,玩家操控人物进行上下左右的操作。

    故事的背景则是因为玩家被困在了一个围墙围成的冰块里面,由于冰块非常容易碎掉,每个冰块只允许玩家通过一次,如果通过多次,玩家则失败。当我们玩家闯关到最后一关时,我们将为玩家发放证书,以资鼓励。

    设置窗口信息

    首先在游戏设计开始之前,我们先要写出Turtle库的一个基本框架,测试程序是否能够运行
    在这里插入图片描述
    我们可以看到,很显然,窗口出现了一会儿就退出了,这样也就代表我们这一个代码运行成功

    将格子画在画布上

    首先先接收一下我们的代码文件:点击直达

    我们接下来要做的便是将格子出现在我们的屏幕上面,这里我们直接在画笔中添加画笔的形状,然后用Turtle的增加形象的函数写入turtle,最后用Stamp打印出来。(这里使用Stamp的原因是因为这里有多个格子,一个个格子的设置太麻烦了)。下图是(geeksforgeeks.org)对Stamp函数的论述
    https://www.geeksforgeeks.org/turtle-stamp-function-in-python/

    import turtle 
    
    turtle.addshape("./element/墙壁.gif")
    turtle.shape("./element/墙壁.gif")
    turtle.stamp()
    
    turtle.ht()
    
    # 防止Turtle直接退出
    turtle.exitonclick()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    在这里插入图片描述

    画出更多的格子

    接下来,我们要画出更多的格子。在这个时候,我们也要为以后着想,我们是用代码一行一行地指定位置。例如我让海龟先去(0,0)点画一个格子,再去(0,60)点画一个格子,一行行地写下去,还是用一个可以通用的代码,减少我们的工作负担呢。

    很显然,程序肯定就是要为我们解决这种枯燥的问题的,所以,我们要想一个机制,让我们传入一组数据,让Python理解我们在说什么,然后为我们绘制出想要的形状出来。

    在这里,我们选用列表来给Python传入数据,这是由于列表的使用操作相对简单,而且对于二维的坐标系来说有天然的优势(列表有嵌套的二维列表)

    创建一个二维列表,代表第一个关卡
    在这里插入图片描述

    在这里插入图片描述
    我们可以看到,这个模块一直在同一个地方闪,那么现在我们让这个小方块移动一下。我们在程序中加入这样的一行代码。我们图片大小是70像素。我们的长宽的数值仍然是通过我们布局的Grid的大小来计算,由于Turtle的原点是在正中间,所以我们初始点的位置需要进行微调。

    在这里插入图片描述
    在这里插入图片描述
    我们会发现很明显我们画笔绘制太慢,而且还有画笔的痕迹,我们更改一下之前我们写的代码
    在这里插入图片描述
    现在,程序一出来就是直接出现结果布局了
    在这里插入图片描述

    绘制主角

    我们在游戏当中可能会出现玩家不喜欢主角的情况,为此,我们可以导入多个角色供玩家选择
    在这里插入图片描述
    接下来的步骤和绘制砖块一样,我们绘制一下人物,首先我们应该先设置一下我们主人工的初始坐标
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    控制主人公上下移动

    这个地方我们将会用到函数onkey(),检测我们在键盘上的操作,我们按照国际惯例,上下左右使用键盘上的↑←↓→和wasd来操作

    我们使用onkey()函数需要定义函数,那么我们就先来定义函数

    在这里插入图片描述

    接下来,我们再来监听键盘事件

    在这里插入图片描述

    但是我们会看到这个小人会逃出这个圈圈的外面,所以我们在这里也要增添一些限制

    在这里插入图片描述
    在这里插入图片描述

    格子的变化

    为了给我们的程序增加难度,现在我们增加以下破碎的冰的功能,首先我们先导入这个海龟形状
    在这里插入图片描述
    接下来我们定义一个Update函数,如果我们移动后的地方为冰,那我们把它设置成为破碎的冰,如果我们移动的位置为破碎的冰,那我们把它设置为水
    在这里插入图片描述

    在每一个move函数中的最后面添加调用updatelattice函数的代码

    在这里插入图片描述
    在这里插入图片描述

    碰到水格子检测

    我们首先增加一个玩家状态的变量

    在这里插入图片描述
    接下来,我们来检测,如果我们是在最后一关,那么我们检测是否还有没有走到的格子在图片中,如果有,则继续游戏,否则,则设置成功。那么如果不是在最后一关,否则则设置为通关
    在这里插入图片描述
    在这里插入图片描述

    我们再导入Copy这个库,使用深度复制的函数,将我们的布局复制下来

    在这里插入图片描述

    然后我们再生动形象地用图片将我们通关状态给表现出来

    在这里插入图片描述

    在循环内部更新状态

    在这里插入图片描述
    我们可以很明显的看到,我们的效果已经实现了,但是很显然,我们这个程序即使在失败后依然可以重新再来,这并没有达到失败的效果

    在这里插入图片描述

    失败检测

    我们在每一个移动的函数中,在移动之前,我们先加入一个检测,确保我们是能够移动的情况下移动的
    在这里插入图片描述
    在这里插入图片描述

    完整代码

    链接: https://caiyun.139.com/m/i?135CmVwO8GbQv 提取码:m5qx 复制内容打开中国移动云盘手机APP,操作更方便哦

    在这里插入图片描述

    文件地址

    1. 代码篇地址:点击直达访问
      在这里插入图片描述
    2. 思路篇上地址:点击直达访问
      在这里插入图片描述
    3. 思路篇下地址:点击直达访问
      在这里插入图片描述

    WalkLattice 走格子游戏 (思路篇)下

    【有趣的Python小程序】Python多个简单上手的库制作WalkLattice 走格子游戏 (思路篇)下

    点击直接访问

  • 相关阅读:
    离子液体修饰的纳米金光学探针,荧光量子点
    Ubuntu 23.10 支持基于 TPM 的全磁盘加密
    开源项目-绩效管理系统
    数位dp总结
    .Net依赖注入神器Scrutor(下)
    leetcode(力扣) 347. 前 K 个高频元素(优先队列 & 堆 & 哈希计数器)
    【深度学习】模型过拟合的原因以及解决办法
    SQL通配符
    个别海康摄像机通过国标GB28181接入EasyCVR,视频无法打开的解决办法
    改进的Salp Swarm优化算法(ISSA)(Matlab代码实现)
  • 原文地址:https://blog.csdn.net/qq_45030271/article/details/127713301