我正在制作一个RPG,在完成我的第一张地图之后,我不得不把它从一个地方传递到另一个地方,因为我不想使用滚动。
实际上,我检查我的角色的位置是否与特定的精灵(门,隐形块等)相同,然后更改字体和加载新的*.txt
文件。但问题是以前的精灵还在那里!
我检查了一些方法来解决这个问题,很多人说我应该使用fill()
功能覆盖屏幕。它有效,但老精灵仍在那里;如果我的角色试图去到一堵墙的地方,他就不能。
我也尝试清空精灵列表,但它会使游戏崩溃,因为角色在此列表中,即使我重新加载角色......
如果有人能帮助我的话,这是唯一阻止我实现宇宙测试版本的东西..
这是我的游戏循环:
while continuer_jeu:
#Limit the speed
pygame.time.Clock().tick(30)
for event in pygame.event.get():
if event.type == QUIT:
continuer_jeu=0
continuer_accueil=0
continuer_rules=0
continuer=0
carte=0
if event.type == KEYDOWN:
#If user press escape => back to the title screen
if event.key == K_ESCAPE:
continuer_jeu = 0
#Chara's moving key
elif event.key == K_RIGHT:
Noc.deplacer('droite')
elif event.key == K_LEFT:
Noc.deplacer('gauche')
elif event.key == K_UP:
Noc.deplacer('haut')
elif event.key == K_DOWN:
Noc.deplacer('bas')
#Refresh with new positions
fenetre.blit(fond, (0,0))
niveau.afficher(fenetre)
fenetre.blit(Noc.direction, (Noc.x, Noc.y))
pygame.display.flip()
if niveau.structure[Noc.case_y][Noc.case_x] == 'ma6': #If going through a door
if carte == "n1": # if first map
fond = pygame.image.load(image_Interieur).convert()
niveau = Niveau("Maison") #Load the house sprites
niveau.generer()
niveau.afficher(fenetre)
fenetre.blit(fond,(0,0))
如果您需要更多代码,请询问。
答案 0 :(得分:0)
通过删除上一个列表,加载另一个列表,然后重新创建角色,我实现了从地图传递到另一个地图:
if niveau.structure[Noc.case_y][Noc.case_x] == "up" :
if carte == "n1" :
fond = pygame.image.load(image_Map2).convert()
niveau = Niveau("n2")
niveau.reset()
niveau.generer()
niveau.afficher(fenetre)
Noc = Perso("image/Noc right.png", "image/Noc left.png","image/Noc face.png", "image/Noc back.png", niveau)
fenetre.blit(fond,(0,0))
carte = "n2"
if niveau.structure[Noc.case_y][Noc.case_x] == "down" :
if carte == "n2" :
fond = pygame.image.load(image_Map1).convert()
niveau = Niveau("n1")
niveau.reset()
niveau.generer()
niveau.afficher(fenetre)
Noc = Perso("image/Noc right.png", "image/Noc left.png","image/Noc face.png", "image/Noc back.png", niveau)
fenetre.blit(fond,(0,0))
carte = "n1"
有这些功能:
class Niveau:
def __init__(self, fichier):
self.fichier = fichier
self.structure = 0
def reset(self):
self.structure = []
def generer(self):
with open(self.fichier) as fichier:
self.structure = [ligne.split() for ligne in fichier]
但是我遇到了另一个问题:我无法再次更改地图。在第二张地图上,角色达不到底,没有任何事情发生。我试着在“up”+“if carte ==”n2“向下”时把指令放进去但是这个角色又回到了他的产卵位置......我哪里可以犯错误?