![](https://img-blog.csdnimg.cn/direct/07a4809b9938461eafdd48870f05d05d.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
pygame
文章平均质量分 83
pygame教程和实战
微小冷
这个作者很懒,什么都没留下…
展开
-
pymunk刚体详解
刚体堪称是pymunk引擎中的核心对象,几乎所有pymunk仿真都需要创建,其构造函数非常简单,只有三个参数原创 2024-02-23 08:30:00 · 684 阅读 · 0 评论 -
pymunk初步:设置重力
pymunk是一款2D物理引擎,在游戏开发中十分有用。原创 2024-02-07 08:15:00 · 2199 阅读 · 0 评论 -
用Python做一个2048小游戏
随机生成的数的取值范围决定了游戏的难度,所以生成方式也比较灵活,下面给出一种普通的生成方法。2048只有四个手势动作,即上下左右,这四个动作所引发的结果都可以归结为对单行或者单列的操作,进而归结为对一个列表的操作。的方格,每个方格中有一个数,这些数可以移动,如果两个相同的数字在移动时相撞了,就可以彼此合并。首先,对列表进行操作时,先排除0的影响,在排除0的影响之后,若相邻元素相等,即可合并。的方格,无非是一个矩阵。对于上下左右不同按键的操作,可以先将矩阵旋转,然后再进行合并操作,合并之后再逆转回来。原创 2024-01-12 08:00:00 · 2114 阅读 · 0 评论 -
pygame光标
在上面的示例中,用到了pygame.cursors中的Cursor类,此即光标对象。在pygame.cursors中,除了这个对象,还封装了compile和load_xbm函数,前者用于把字符串编译为光标形状,后者用于加载xbm文件。下面通过compile和图形来分别创建光标,示例如下pg.init()# 通过一个色块来创建光标ind = 0pg.quit()上述代码中一共设置了三种光标,bitmap1通过cursors中的箭头来生成;其二则通过字符串来编译鼠标形式;其三则直接用一个矩形作为光标。原创 2023-11-29 08:45:00 · 683 阅读 · 0 评论 -
Pygame直线绘制
下面演示一下多条线段的用法,实现下面这种动感的随机直线生成窗口。在有了交点之后,可以得到新的角度。如果是在上下壁反射,则。pygame.draw中有4个绘制直线的函数,列表如下。上面的代码中,lines用于生成随机直线,其5个参数中。有了直线工具,可以做一个光线反射动画,比如现有一点。的值,可判断具体的交点,具体代码如下。这个直线将于4个墙壁产生交点,根据。一条和多条线段的输入参数如下。原创 2023-11-28 08:00:00 · 1319 阅读 · 0 评论 -
pygame加载图像,并让小球做平抛运动
此外,pygame还提供了图像与字符串、字节数组的转换方法。ballrect是一个框住了ball的矩形。在后面的死循环中,通过ballrect来设置ball的位置。在游戏设计中,图像显示是必不可少的功能,pygame中的image模块便用于加载图像。其中intro_ball.gif是pygame的一张示例图像,位于pygame路径下的。通过load函数,可以加载多种图像格式,如下表所示。在数据转换过程中,需要指明图像的颜色格式,列表如下。,考虑到动画生成采取的是差分的逻辑,所以设。二者可以重新变回图像。原创 2023-11-27 08:00:00 · 1951 阅读 · 0 评论 -
python游戏开发pygame初步
其中,player即为游戏者的位置,而死循环中,pygame.draw.circle则根据游戏者的位置不断创建红色圆球。通过pygame.key.get_pressed,可以获取在一个循环之内捕获到的所有按键,这些案件共同组成一个布尔字典,如果某个按键被按下,那么相应的值就是True,否则为False。为此,需要对小球的位置加以限制,比如,当小球抵达上方的边界时,让其从下边重新出现,为此需要判断小球的位置。原创 2023-11-26 08:30:00 · 625 阅读 · 0 评论 -
pygame图像变换:缩放、旋转、镜像
scale_by则根据给定的factor来对图像进行缩放,如果factor是一个数字,那么将对两个方向进行同样的缩放,如果是一个元组,比如。这个功能可以无缝插入到前面的平抛运动中,即让球在平抛时有一个旋转,示例如下。flip用于翻转,除了输入图像之外,还有两个布尔型参数,分别用于调控水平方向和竖直方向,True表示翻转,False表示不翻转。此外,smoothscale和smoothscale_by在缩放的基础上,进行了双边滤波平滑,使得缩放看上去更加自然,,那么对两个维度分别缩放3倍和4倍。原创 2023-11-30 08:15:00 · 2854 阅读 · 0 评论 -
Pygame用200行代码实现俄罗斯方块
俄罗斯方块的逻辑很简单,就是几个方块组合在一起,然后下落,当其碰到四周的墙壁后便无法移动。方块在下落过程中若碰壁,则稍微有些麻烦,因为下方可能已经堆积了一些方块,为此不仅需要知道当前下落方块的信息,还要知道已经堆积的方块的信息。接下来逐个实现俄罗斯方块的细节,当左右移动方块时,若方块碰到墙壁,则需要一个判定函数,代码如下。然后是方块绘制函数,顾名思义,drawBlock绘制一个方块,drawBlocks绘制一组方块。其消除逻辑是,当某行全为1的时候,就把这行删掉,然后在顶端补充全0的列表。原创 2023-12-14 07:02:02 · 1112 阅读 · 0 评论 -
PyGame用60行代码做一个迷宫游戏
接下来要做的,就是定义一个绘图函数,可以将迷宫和玩家统一绘制出来,实现如下。如果后续有升级的需求,在迷宫中放置一些不明物体,从而需要的字符种类更多,那么可以考虑将绘图逻辑封装成字典。考虑到更好的自定义迷宫的支持,采用字符列表作为迷宫的映射,以#, I, O分别表示墙壁、玩家位置以及出口位置。迷宫的逻辑很简单,就是用上下左右键控制方块运动,然后定义一下墙壁,指明方块不能穿过墙壁即可。以左键为例,当左键按左时,方块的纵坐标不变,而横坐标减去1,顾对应。当然,还是老规矩,在具体实现之前,先设置一些常量。原创 2023-12-30 08:15:00 · 841 阅读 · 0 评论 -
PyGame实现打砖块游戏
相比于不动的砖块,只需要左右移动的小车,小球的行为会稍微复杂一点,不仅需要考虑和墙壁以及小车的碰撞,也要考虑和砖块的碰撞。在实际应用中,显然不可能只有一个砖块,所以在Brick中设置一个静态方法,用以生成随机的砖块,其生成逻辑是,随机生成一个数,如果这个数大于0.3,那么就在当前位置生成一个砖块,否则跳过。打砖块也是一个非常经典的小游戏,玩法大致如下,用一个小车接一个小球,然后反射小球,使之打在砖块上,当小球碰到砖块之后,则砖块被消掉,逻辑十分清晰。而且其移动的范围不能超出x轴的边界,其小车类实现如下。原创 2023-12-22 08:00:00 · 1733 阅读 · 1 评论 -
PyGame字体详解
在pygame程序中,第一步势必进行初始化,即调用pygame.init()函数,而此初始化过程,则顺便包含了字体初始化,即默不作声地调用了pygame.font.init()函数。如果想获得每个文字的尺寸,则可使用metrics(text)方法,其返回值是一个列表,每个元素都代表text中的一个文字尺寸,格式为(minx, maxx, miny, maxy, advance),前四项比较好理解,advance表示前进偏移量。pygame可以很方便地判断当前字体,并且能够获取系统字体,示例如下。原创 2023-12-15 08:00:00 · 1387 阅读 · 0 评论 -
PyGame图形绘制函数详解
从参数类别可以看出,矩形和椭圆的绘图逻辑是一致的,可以理解为,用矩形约束创造的椭圆,即矩形的内切椭圆;矩形在pygame中是非常基础的图形,使用场景也非常多,其优势在于,可以非常便捷地判断两个物体是否发生了碰撞。其完整的参数列表如下。除了直线之外,pygame中提供了多种图形绘制函数,除了必要的绘图窗口、颜色以及放在最后的线条宽度之外,它们的参数如下表所示。其中,额外出现的5个以radius结尾的参数,可用于设置矩形的圆角。圆形与矩形相似,除了基础的绘图参数外,也提供了4个可定制的参数。原创 2023-12-16 08:15:00 · 681 阅读 · 0 评论 -
【PyGame】Rect类实战演示
Rect是pygame中很重要的一个类,矩形、椭圆以及圆弧的绘制均需要通过Rect来指定,其构造函数要求输入四个参数,分别是(left, top, width, height),即左、上坐标、宽度以及高度。在主循环中,每次循环,都会重新绘制一个矩形,这个矩形以player为模板,且四边宽度为40,故而绘制结果显示出一个镂空的矩形。,二者通过asjk四个按键来控制。而union运算,相当于选取一个矩形,将二者框起来,并形成一个新的矩形。原创 2023-12-01 08:15:00 · 1537 阅读 · 0 评论 -
pygame时序模块time
之前在更新图形的时候,为了调控死循环的响应时间,用到了time.sleep。而实际上,我们并不需要额外导入其他包,pygame就提供了time模块,用以调控游戏的帧率。time中主要有下面几种方法和类get_ticks获取pygame初始化后的毫秒数延时,前者更轻量,后者更精确set_timer重复创建事件队列中的事件Clock时钟对象。原创 2023-12-04 08:30:00 · 738 阅读 · 0 评论 -
PyGame写一个贪吃蛇,仅用100行代码
为此,可将游戏窗口的尺寸设为常量,同时需要设置方块的尺寸,并通过方块和窗口尺寸的关系,得到初始化的坐标范围。游戏只需要初始化三个东西,即食物位置、蛇的位置以及蛇的前进方向,故而封装一个init()函数,返回脚步、食物、蛇头以及蛇。当游戏失败时,显示游戏失败的说明,同时,若按键盘怕或者点击鼠标,则游戏重新初始化;如果关闭窗口,则游戏结束。坐标表示,每一个坐标都是一个方块,所有方块连在一起就是蛇的身体,同理,食物可用单个的。绘图时需要一个绘图窗口,剩下的就几乎没有需要注意的了,贪吃蛇和食物的绘图逻辑如下。原创 2023-12-18 08:00:00 · 1228 阅读 · 0 评论