Pygame Zero:迷路を表示してみる

Python

2種類あります。
最初はリストを使わないプログラム、2つ目は2次元リストを使ったプログラムです。

実行イメージ

screen_blit_meiro.py

# Pygame Zero: screen.blitで迷路を描画する

import pgzrun

# 画面サイズ
WIDTH = 640
HEIGHT = 512
TITLE = "screen.blitで迷路を描画する"

# プレイヤーを生成
player = Actor("kero")
player.topleft = 1*64, 1*64

# 描画処理
def draw():
	# 周りの壁と壁以外を描画
	for y in range(8):
		for x in range(10):
			# ウインドウの周りだけ壁を描画
			if x == 0 or x == 9 or y == 0 or y == 7:
				screen.blit("kabe", (x*64, y*64))
			else:
				screen.blit("no_kabe", (x*64, y*64))
	
	# 迷路部分の壁を描画
	meiro()
	# プレイヤーを描画
	player.draw()

def meiro():
	y = 2
	screen.blit("kabe", (1*64 ,y*64))
	screen.blit("kabe", (2*64 ,y*64))

	x = 4
	screen.blit("kabe", (x*64 ,1*64))
	screen.blit("kabe", (x*64 ,2*64))
	screen.blit("kabe", (x*64 ,3*64))

	y = 4
	screen.blit("kabe", (2*64 ,y*64))
	screen.blit("kabe", (3*64 ,y*64))
	screen.blit("kabe", (4*64 ,y*64))

	y = 5
	screen.blit("kabe", (2*64 ,y*64))

	y = 6
	screen.blit("kabe", (4*64 ,y*64))

	y = 2
	screen.blit("kabe", (6*64 ,y*64))
	screen.blit("kabe", (7*64 ,y*64))
	screen.blit("kabe", (8*64 ,y*64))

	x = 6
	screen.blit("kabe", (x*64 ,4*64))
	screen.blit("kabe", (x*64 ,5*64))
	screen.blit("kabe", (x*64 ,6*64))

	x = 7
	screen.blit("kabe", (x*64 ,4*64))
	screen.blit("kabe", (x*64 ,5*64))
	screen.blit("kabe", (x*64 ,6*64))

# ゲームスタート
pgzrun.go()

screen_blit_meiro_list.py

# Pygame Zero: 2次元リストで迷路を描画する

import pgzrun

# 画面サイズ
WIDTH = 640
HEIGHT = 512
TITLE = "2次元リストで迷路を描画する"

# プレイヤーを生成
player = Actor("kero")
player.topleft = 1*64, 1*64

# 迷路データ
meiro = [
	[1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
	[1, 0, 1, 0, 0, 1, 0, 0, 0, 1],
	[1, 0, 0, 0, 1, 1, 0, 1, 0, 1],
	[1, 0, 1, 1, 1, 1, 0, 1, 0, 1],
	[1, 0, 1, 0, 0, 0, 0, 1, 0, 1],
	[1, 0, 1, 0, 1, 0, 1, 1, 0, 1],
	[1, 0, 0, 0, 1, 0, 1, 1, 0, 1],
	[1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
]

# 描画処理
def draw():
	# 迷路を描画
	for y in range(8):
		for x in range(10):
			if meiro[y][x] == 1:
				screen.blit("kabe", (x*64, y*64))
			else:
				screen.blit("no_kabe", (x*64, y*64))
	
	# プレイヤーを描画
	player.draw()

# ゲームスタート
pgzrun.go()

コメント