我似乎不明白表面是如何工作的,也不明白切割表面是如何工作的。所以我想要用我的PacMan游戏来创造一种效果,我有一张图片,它的嘴巴紧闭,另一张是张开的,我想知道,当我有屏幕,背景图像,迷宫本身时,是否有人能解释这是怎么可能的,给我一个提示或想法,这样我就可以发展逻辑了。我理解曲面的方式是,每一幅图像都有自己的表面,以及它自己的坐标(与屏幕无关),但我不知道为什么我很难理解为什么我很难理解为什么在屏幕周围移动的时候,我能同时在屏幕上同时涂上两个表面来创造咬人的特殊效果。
因此,如果有人可以这样解释它:屏幕是主要层,然后在顶部,你有背景,你可以模糊这个或那个。你有迷宫,你先blit,然后.
发布于 2022-08-23 01:05:47
我个人认为这个基本结构是:
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 background和draw 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;
。
博弈迭代2:
accordingly;
。
游戏迭代3:
accordingly;
https://stackoverflow.com/questions/73452107
复制相似问题