开发工具
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代表画实心方块。
感谢!!!
初始化游戏界面先讲到这里了。
至于游戏元素的移动,期待下期吧
作者|齐
编辑|齐
感谢大家观看