この記事では、Pygameを用いてRPGのゲームマップを作る方法とソースコードを解説します。
RPGのマップ
プログラミング言語「Python」とPygameでRPGを作るためにマップを作成してみました。
処理手順
プログラムの処理の流れは下記の通りです。
①「pygame」「sys」モジュールをインポートする。
②画面のサイズを設定する。(640*480)
③Pygameを初期化する。[pygame.init]
④画面(ウィンドウ)を生成する。[pygame.display.set_mode]
⑤水、地面の画像を読み込む。
⑥マップデータに合わせて、画面に画像を貼り付ける。(1なら水、0なら地面)
⑦画面を更新する。
⑧イベント処理をする。
・画面の閉じるボタンが押されたら終了する。
・Escキーが押されたら終了する。
⑨7-8の処理を繰り返す。
| – | 画像素材 |
|---|---|
| 水の画像(water.png) | ![]() |
| 草原の画像(grass.png) | ![]() |
ソースコード
サンプルプログラムのソースコードです。
# -*- coding:utf-8 -*-
import pygame
from pygame.locals import *
import sys
SCR_RECT = Rect(0, 0, 640, 480) # 画面サイズ
# マップのクラス
class Map:
# マップデータ
map = [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,1,1,1,1,1,1,1,1,0,0,0,1,1,1,1,1,1,1],
[1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1],
[1,0,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,1,1,1],
[1,1,0,0,0,1,0,0,0,0,0,1,0,0,0,0,0,0,1,1],
[1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,1,0,0,0,0,1,1,0,1,0,0,0,0,0,1,0,0,0,1],
[1,0,0,0,0,0,1,1,0,1,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,1,0,0,1,1,0,0,0,0,1],
[1,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,0,1],
[1,0,0,0,1,0,0,1,0,1,1,0,0,0,0,0,0,1,0,1],
[1,1,0,0,1,0,1,1,0,0,1,1,1,0,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1],
[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1]]
row,col = len(map), len(map[0]) # マップの行数,列数を取得
imgs = [None] * 256 # マップチップ
msize = 32 # 1マスの大きさ[px]
# マップの描画
def draw(self, screen):
for i in range(self.row):
for j in range(self.col):
screen.blit(self.imgs[self.map[i][j]], (j*self.msize,i*self.msize))
# 画像の読み込み
def load_img(filename, colorkey=None):
img = pygame.image.load(filename)
img = img.convert()
if colorkey is not None:
if colorkey == -1:
colorkey = img.get_at((0,0))
img.set_colorkey(colorkey, RLEACCEL)
return img
def main():
pygame.init()
screen = pygame.display.set_mode(SCR_RECT.size)
Map.imgs[0] = load_img("grass.png") # 草地
Map.imgs[1] = load_img("water.png") # 水
map = Map()
while (1):
map.draw(screen)
pygame.display.update()
# イベント処理
for event in pygame.event.get():
# 終了用のイベント処理
if event.type == QUIT: # 閉じるボタンが押されたとき
pygame.quit()
sys.exit()
if event.type == KEYDOWN: # キーを押したとき
if event.key == K_ESCAPE: # Escキーが押されたとき
pygame.quit()
sys.exit()
if __name__ == "__main__":
main()
実行結果
サンプルプログラムの実行結果です。

それっぽい画面を表示できました。
| – | 関連記事 |
|---|---|
| 1 | Pygameでゲームプログラミング |
| 2 | Python入門 基本文法 |


コメント