Я пытаюсь сделать игру с двумя поверхностями.Однако, когда я пытаюсь добавить изображение в игровой слой, оно не появляется.Я попытался использовать pygame.display.flip()
, который, насколько я понимаю, должен обновить все на экране.
Если я попытаюсь использовать Game_Layer.update()
или Game_Layer.flip()
, как показано в коде ниже ... (Я думаю, Game_Layer.flip()
не работает, потому что .flip
используется для обновления всего экрана ипоэтому не может быть вызван для определенных слоев, но исправьте меня, если я ошибаюсь).
#game play
def Dragon():
DragonIMG=pygame.image.load("Green Dragon.gif")
DragonIMG.convert()
global Game_Layer
x=0
y=0
Game_Layer.blit(DragonIMG,(x,y))
Game_Layer.update()
Dragon()
Я получаю следующее сообщение об ошибке:
RESTART: C:\Users\Alex\OneDrive\A- Levels\1 COMPUTER SCIENCE\Course work\Coding\CSCW Pre Alfa 1.9.5.py
Traceback (most recent call last):
File "C:\Users\Alex\OneDrive\A- Levels\1 COMPUTER SCIENCE\Course work\Coding\CSCW Pre Alfa 1.9.5.py", line 133, in <module>
Dragon()
File "C:\Users\Alex\OneDrive\A- Levels\1 COMPUTER SCIENCE\Course work\Coding\CSCW Pre Alfa 1.9.5.py", line 131, in Dragon
Game_Layer.update()
AttributeError: 'pygame.Surface' object has no attribute 'update'
>>>
Однако, когда я пытаюсь отобразитьизображение на корневом слое, используя код ниже, он работает.
#game play
def Dragon():
DragonIMG=pygame.image.load("Green Dragon.gif")
DragonIMG.convert()
global Base_Layer
x=0
y=0
Base_Layer.blit(DragonIMG,(x,y))
pygame.display.flip()
Dragon()
Ниже приведен код, который я использую для настройки слоев:
#libraries
import time, random, pygame, sqlite3, GIFimage2
pygame.init()
#screen setup
#variables
clock=pygame.time.Clock() #for use in .tick
black=pygame.color.Color("black") #set black
white=pygame.color.Color("white") #set white
#set up the base layer
Base_Layer=pygame.display.set_mode((1000,600)) #desplay setup
pygame.display.set_caption("Dragon King: Legacy") #set caption
black=(0,0,0) #colour set
Base_Layer.fill(black) #colour set
Base_Layer.convert() #converts the base layer, may have no effect in current position
icon=pygame.image.load("LOGO.png") #find logo
pygame.display.set_icon(icon) #set icon to logo
#set up the game layer
Game_Layer=pygame.Surface((600,600)) #set layer peramaters
Game_Layer.fill(white) #set layer to white
Game_Layer.convert() #converts the game layer, may have no effect in current position
Base_Layer.blit(Game_Layer, (10, 0)) #blit layer on to screen
pygame.display.flip() #get the layer to show
Если кто-нибудь может объяснить мне, почему это не работает, я был бы признателен.Я также был бы признателен, если бы кто-нибудь знал способ отображения моих изображений так, как я сейчас (в пределах определения), без использования глобальных переменных.