《推箱子》python小游戏(第一期)
欢迎加入我们卧虎藏龙的python讨论qq群:729683466
●导 语 ●
以前,公众号推送小游戏代码的时候
从没有仔细讲过代码的原理
主要是代码细节太多了
一期根本讲不完
这一次
我们准备分很多期
将《推箱子》这个游戏
从头到尾给大家讲清楚
如果大家有什么不懂的
欢迎加入QQ群讨论
代码及相关资源获取
1:关注“python趣味爱好者”公众号,回复“推箱子”获取源代码。
2:加入群聊:729683466。在群文件中下载源代码以及相关资料。
效果演示
ss
往期精选
????
开发工具
python3.6.4
第三方库:pygame,numpy,sys
讲解部分
为了简化游戏思路,我在设计游戏之初就可以避免了一些不好理解的内容。
首先说一下游戏界面,我们把游戏界面分成了想棋盘一样的网格,在每个网格所在的地方放我们要放的棋子(人物,箱子,墙壁,目的地)。
在我们的“棋盘”中,黑色的实心球是“人物”,红色的正方形是箱子,粉色的空心圆是“箱子目的地”,外面一层蓝色的方格组成的就是“墙壁”。
我们要做的就是在棋盘上不同的位置摆上不同的棋子(箱子,墙壁,人物,目的地)。
这就需要描述方格网上不同的位置坐标,
我们将游戏界面分成了8*8的方格网,其中如图所示,左上角的坐标是(1,1)。右下角坐标为(8,8)。左下角坐标为(1,8),右上角坐标为(8,1)。
初始化游戏界面,我们就需要在不同的位置坐标摆上不同的“棋子”。
我们将墙壁,人物,箱子,目的地所占的方格的全部坐标用一个列表表示。
其中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代表画实心方块。
感谢!!!
初始化游戏界面先讲到这里了。
至于游戏元素的移动,期待下期吧
作者|齐
编辑|齐
感谢大家观看
有钱的老板可打赏一下小编哦
扫描二维码
关注我们
QQ群:729683466
◰
参考来源
无
上一篇: photoshop打造出透明玻璃球
下一篇: 女人经期如何保养 经期也能舒舒服服做女人