文章目录

  • 源代码和配套文件
  • 思路明确
  • 开始编程
  • 设置剧情
  • 设置窗口信息
  • 将格子画在画布上
  • 画出更多的格子
  • 绘制主角
  • 控制主人公上下移动
  • 格子的变化
  • 碰到水格子检测
  • 失败检测
  • 完整代码
  • 文件地址
  • WalkLattice 走格子游戏 (思路篇)下


思路明确

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

  1. Python 3.x
  2. AudioPlayer 库

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

开始编程

设置剧情

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

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

设置窗口信息

首先在游戏设计开始之前,我们先要写出Turtle库的一个基本框架,测试程序是否能够运行

Python开发3d软件 如何用python做3d游戏_小程序


我们可以看到,很显然,窗口出现了一会儿就退出了,这样也就代表我们这一个代码运行成功

将格子画在画布上

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

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

Python开发3d软件 如何用python做3d游戏_Turtle_02

import turtle 

turtle.addshape("./element/墙壁.gif")
turtle.shape("./element/墙壁.gif")
turtle.stamp()

turtle.ht()

# 防止Turtle直接退出
turtle.exitonclick()

Python开发3d软件 如何用python做3d游戏_小程序_03

画出更多的格子

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

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

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

创建一个二维列表,代表第一个关卡

Python开发3d软件 如何用python做3d游戏_游戏_04

Python开发3d软件 如何用python做3d游戏_小程序_05


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

Python开发3d软件 如何用python做3d游戏_python_06


Python开发3d软件 如何用python做3d游戏_小程序_07


我们会发现很明显我们画笔绘制太慢,而且还有画笔的痕迹,我们更改一下之前我们写的代码

Python开发3d软件 如何用python做3d游戏_小程序_08


现在,程序一出来就是直接出现结果布局了

Python开发3d软件 如何用python做3d游戏_小程序_09

绘制主角

我们在游戏当中可能会出现玩家不喜欢主角的情况,为此,我们可以导入多个角色供玩家选择

Python开发3d软件 如何用python做3d游戏_Python开发3d软件_10


接下来的步骤和绘制砖块一样,我们绘制一下人物,首先我们应该先设置一下我们主人工的初始坐标

Python开发3d软件 如何用python做3d游戏_游戏_11


Python开发3d软件 如何用python做3d游戏_小程序_12


Python开发3d软件 如何用python做3d游戏_小程序_13

控制主人公上下移动

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

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

Python开发3d软件 如何用python做3d游戏_小程序_14

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

Python开发3d软件 如何用python做3d游戏_python_15

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

Python开发3d软件 如何用python做3d游戏_游戏_16


Python开发3d软件 如何用python做3d游戏_Turtle_17

格子的变化

为了给我们的程序增加难度,现在我们增加以下破碎的冰的功能,首先我们先导入这个海龟形状

Python开发3d软件 如何用python做3d游戏_游戏_18


接下来我们定义一个Update函数,如果我们移动后的地方为冰,那我们把它设置成为破碎的冰,如果我们移动的位置为破碎的冰,那我们把它设置为水

Python开发3d软件 如何用python做3d游戏_小程序_19

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

Python开发3d软件 如何用python做3d游戏_游戏_20


Python开发3d软件 如何用python做3d游戏_python_21

碰到水格子检测

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

Python开发3d软件 如何用python做3d游戏_Python开发3d软件_22


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

Python开发3d软件 如何用python做3d游戏_小程序_23


Python开发3d软件 如何用python做3d游戏_游戏_24

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

Python开发3d软件 如何用python做3d游戏_python_25

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

Python开发3d软件 如何用python做3d游戏_python_26

在循环内部更新状态

Python开发3d软件 如何用python做3d游戏_python_27


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

Python开发3d软件 如何用python做3d游戏_Python开发3d软件_28

失败检测

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

Python开发3d软件 如何用python做3d游戏_Turtle_29


Python开发3d软件 如何用python做3d游戏_Turtle_30

完整代码