首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Pygame曲面

Pygame曲面
EN

Stack Overflow用户
提问于 2022-08-23 00:06:17
回答 1查看 47关注 0票数 0

我似乎不明白表面是如何工作的,也不明白切割表面是如何工作的。所以我想要用我的PacMan游戏来创造一种效果,我有一张图片,它的嘴巴紧闭,另一张是张开的,我想知道,当我有屏幕,背景图像,迷宫本身时,是否有人能解释这是怎么可能的,给我一个提示或想法,这样我就可以发展逻辑了。我理解曲面的方式是,每一幅图像都有自己的表面,以及它自己的坐标(与屏幕无关),但我不知道为什么我很难理解为什么我很难理解为什么在屏幕周围移动的时候,我能同时在屏幕上同时涂上两个表面来创造咬人的特殊效果。

因此,如果有人可以这样解释它:屏幕是主要层,然后在顶部,你有背景,你可以模糊这个或那个。你有迷宫,你先blit,然后.

EN

回答 1

Stack Overflow用户

发布于 2022-08-23 01:05:47

我个人认为这个基本结构是:

代码语言:javascript
运行
复制
import pygame
# other imports

pygame.init()
screen = pygame.display.set_mode((600, 600))
# other pygame settings

# variable/object declarations: player, tiles, enemy, widgets, etc

game_running = True
while game_running:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            game_running = False

        # handle other events

    # update: player, tiles, enemy, widgets, etc
    # draw background
    # draw others: player, tiles, enemy, widgets, etc
    # update pygame display

pygame.quit()

# update: player, tiles, enemy, widgets, etc:这主要涉及所有事件、计算和其他进程的移动和状态更新。这应该在draw backgrounddraw others之前进行,以确保所绘制的对象被更新。如果在此更新之前先绘制,则由于此更新部分的计算和处理所花费的时间,下一帧存在某种“延迟”。玩家、瓷砖、敌人、小部件等之间更新实现的顺序将取决于您的游戏和您想要发生的事情。许多用户在更新后立即抽签,如: player.update();player.draw();tile.update();tile.draw();enemy.update();enemy.draw()。我个人的做法是: player.update();tile.update();enemy.update();player.draw()、tile.draw()、enemy.draw()。我不完全确定哪个实现更好。

draw background:使用screen.fill(color)表示纯色背景,或使用screen.blit(surface, rect)表示表面/图像背景。这是非常重要的,如果你想“掩盖”之前的游戏迭代/框架的图纸。这是第一层,而draw others是第二层、第三层、第四层和第一层顶部的图层。如果draw others位于draw background之前,您将只看到draw background,因为它是在draw others之上绘制的

draw others: player, tiles, enemy, widgets, etc:玩家、瓷砖、敌人、小部件等之间的排序取决于您的游戏。如果你先画球员之前的瓷砖,那么玩家将被画在瓷砖之上。如果您想要一个游戏,您可以移动在瓷砖之上,并在瓷砖下移动(隐藏通道等),那么您可能需要定义2组瓷砖(hidden_passage_tiles在player之前绘制,以及player在ordinary_tiles之前绘制)。

update pygame display:就是简单的pygame.display.update()

因此,关于您的问题,应该如下所示:

博弈迭代1:

accordingly;

  • Draw
  • 更新:将玩家图像设置为闭嘴;检查瓷砖/迷宫碰撞并相应调整位移;检查幽灵碰撞和更改状态或游戏状态(背景):(封面屏幕)
  • 绘制其他:绘制封闭嘴图像、瓷砖/迷宫、敌人

博弈迭代2:

accordingly;

  • Draw
  • 更新:将玩家图像设置为张开嘴;检查瓷砖/迷宫碰撞并相应调整位移;检查幽灵碰撞和更改状态或游戏状态
  • 背景:(从迭代1绘制的封面)
  • 绘制其他:绘制张开嘴图像、瓷砖/迷宫、敌人

游戏迭代3:

accordingly;

  • 更新:将玩家图像设置为闭嘴;检查瓷砖/迷宫碰撞并相应调整位移;检查幽灵碰撞和更改状态或游戏状态

  • 绘图背景:(涵盖从迭代2绘制)

  • 画其他:画闭嘴图像,瓷砖/迷宫,敌人
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73452107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档