只今スプライトクラスのバグ事件を乗り越え、迷路を作っているところなのですが、
少しわからないことがあったので質問させていただきます。
パックマンには、緊急回避のために左右がつながっているワープトンネルがあります。
ワープ通路であることを表すチップをマップデータに入れるというのはわかっているのですが、
def create(self, screen,blocks):
transColor = self.image.get_at((0, 0))
self.image.set_colorkey(transColor, RLEACCEL)
for y in range(MAP_HEIGHT):
for x in range(MAP_WIDTH):
if MAP[y][x] == BLOCK:
cell = Block(self.imageList[1], (x * CHIPSIZE, y * CHIPSIZE), screen)
blocks.add(cell)
elif MAP[y][x] == FOOD:
screen.blit(self.imageList[2], (x * CHIPSIZE, y * CHIPSIZE))
elif MAP[y][x] == WARP:
# ここにワープの処理を入れる
pass
else:
pass
あと、迷路を表示したときの処理落ちの原因が、メインループでMap.create(元Map.draw)を直接実行していたということがわかったので、
プレイヤーの部分も含め、少し手を加えました。(そりゃあ、マップチップが増えれば増えるほど処理落ちするもんね…。)
def Main():
pygame.init()
screen = pygame.display.set_mode((640, 480))
player = pygame.sprite.Group()
blocks = pygame.sprite.OrderedUpdates()
pacman = Player()
maze = Map()
player.add(pacman)
clock = pygame.time.Clock()
# 迷路を生成する。
maze.create(screen,blocks)
# メインループ
while True:
clock.tick(60)
screen.fill((0, 0, 0))
blocks.draw(screen)
player.update(blocks)
pacman.draw(screen)
pygame.display.update() # 画面を更新
# イベント処理
for event in pygame.event.get():
if event.type == QUIT: # 閉じるボタンが押されたら終了
pygame.quit() # Pygameの終了(画面閉じられる)
sys.exit()