【有趣的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()

在这里插入图片描述

画出更多的格子

接下来,我们要画出更多的格子。在这个时候,我们也要为以后着想,我们是用代码一行一行地指定位置。例如我让海龟先去(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 走格子游戏 (思路篇)下

点击直接访问

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地摊主老袁

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值