この記事では、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入門 基本文法 |
コメント