欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

《推箱子》python小游戏(第一期)

程序员文章站 2022-06-29 13:35:12
...

欢迎加入我们卧虎藏龙的python讨论qq群:729683466

导 语 ●

以前,公众号推送小游戏代码的时候《推箱子》python小游戏(第一期)

从没有仔细讲过代码的原理

主要是代码细节太多了

一期根本讲不完

这一次

我们准备分很多期《推箱子》python小游戏(第一期)

将《推箱子》这个游戏

从头到尾给大家讲清楚

如果大家有什么不懂的

欢迎加入QQ群讨论

代码及相关资源获取

1:关注“python趣味爱好者”公众号,回复“推箱子”获取源代码

2:加入群聊:729683466。在群文件中下载源代码以及相关资料。

  

效果演示

ss

《推箱子》python小游戏(第一期)

往期精选

实现图片“模糊”特效

可视化系列(二):Plotly散点图(上)

 ????

开发工具

python3.6.4

第三方库:pygame,numpy,sys

讲解部分

为了简化游戏思路,我在设计游戏之初就可以避免了一些不好理解的内容。

首先说一下游戏界面,我们把游戏界面分成了想棋盘一样的网格,在每个网格所在的地方放我们要放的棋子(人物,箱子,墙壁,目的地)。

《推箱子》python小游戏(第一期)

在我们的“棋盘”中,黑色的实心球是“人物”,红色的正方形是箱子,粉色的空心圆是“箱子目的地”,外面一层蓝色的方格组成的就是“墙壁”。

我们要做的就是在棋盘上不同的位置摆上不同的棋子(箱子,墙壁,人物,目的地)。

这就需要描述方格网上不同的位置坐标,

我们将游戏界面分成了8*8的方格网,其中如图所示,左上角的坐标是(1,1)。右下角坐标为(8,8)。左下角坐标为(1,8),右上角坐标为(8,1)。

初始化游戏界面,我们就需要在不同的位置坐标摆上不同的“棋子”。

我们将墙壁,人物,箱子,目的地所占的方格的全部坐标用一个列表表示。

《推箱子》python小游戏(第一期)

其中box代表的是箱子所在的方格坐标,我们有4个箱子,所在的位置分别是(4,4),(6,4),(4,5),(5,6)。

我们用一个二维列表存储这些数据,墙,目的地,人物的位置坐标也用列表存储起来。

然而,我们不能直接用这些方格的坐标值来画方格。

因为在pygame中,画方格用到的是像素点

所以我们定义一个函数,将方格的横纵坐标转化为实际的像素点。

然后就可以根据这些像素点画方格了。

def get_rect(row,column):#计算应该在哪里画方格,以右上角为点。
    x1=rect_width*row
    y1=rect_width*column
    return (x1,y1,rect_width,rect_width)

比如说,我们在最初定义游戏界面的长和宽时。我们设置一个格子的宽度是50,游戏界面尺寸是500*500

500除50,这样理论上有10*10=100个格子。我们只选取8*8=64个格子

rect_width=50#一个格子的宽度
size=width,height=500,500

最后,我们再专门定义一个画方块的函数,

比如说,我们要画全部的墙壁。我们就可以遍历墙壁的列表,在每个需要画墙壁的格子上画一个蓝色的方块,最终就连成了墙壁。

代码如下。

def draw_wall(wall):
    for i in wall:
        pygame.draw.rect(screen, wall_color, get_rect(i[0], i[1]), 0)

我们用for循环遍历wall列表里面所有的值,然后用pygame.draw.rect画方格,其中有4个参数,第一个screen指的是在哪个界面上画。

wall_color指的是画什么颜色,第三个指的是在什么位置画。最后一个0代表画实心方块。

感谢!!!

初始化游戏界面先讲到这里了。

至于游戏元素的移动,期待下期吧

作者|齐

编辑|齐

感谢大家观看

有钱的老板可打赏一下小编哦

《推箱子》python小游戏(第一期)

扫描二维码

关注我们

QQ群:729683466

◰  

参考来源