見出し画像

【徹底解説】PythonでRPG作成!!

作るもの

この記事を読むと作れるようになるものを最初に動画で見せます。
ゲームのロジックが面白い、とかではなくRPG作成の基本を詰め込んだものです。

動画には映ってない機能もあるので一通り羅列しておくと、

  • マップ描画

  • マップスクロール

  • キャラ描画

  • 敵自動で動く

  • 衝突判定

  • バトル画面遷移

  • バトルロジック

  • セーブ&ロード機能

  • ゲームオーバーしたらデータ初期化

  • 別マップへの移動

などです。この辺りを順番に実装してコードも全て公開します。
RPG作ってみたいけど何していいかわかない人などはぜひ読んでみてくれると嬉しです!!

文字数増えちゃう気がするので前置きはこれくれい!マップ作りからスタート!

マップの描画

まずは小さめのマップを描画します。ちなみにリファクタリングとかしてないので使ってない色定義とかあります。

import pygame
import sys

# Pygameの初期化
pygame.init()

# 画面サイズとタイルサイズの設定
SCREEN_WIDTH, SCREEN_HEIGHT = 640, 640
TILE_SIZE = 64  # タイルのサイズ

# カラー定義
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
GREEN = (123, 141, 66)
BROWN = (101, 67, 33)

# ウィンドウの設定
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("RPG Map Generator")

# マップデータ(10x10のグリッド)
# 0: 道, 1: 壁
map_data = [
    [0, 1, 0, 0, 0, 1, 0, 0, 1, 0],
    [0, 1, 0, 1, 0, 1, 1, 0, 1, 0],
    [0, 0, 0, 1, 0, 0, 0, 0, 1, 0],
    [1, 1, 0, 1, 1, 1, 0, 1, 1, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
    [0, 1, 1, 1, 1, 1, 0, 1, 1, 0],
    [0, 1, 0, 0, 0, 1, 0, 0, 0, 0],
    [0, 1, 0, 1, 0, 1, 1, 1, 1, 1],
    [0, 0, 0, 0, 0, 0, 0, 0, 1, 0],
    [1, 1, 1, 1, 1, 1, 1, 1, 1, 0],
]
# 画像データ読み込み
path_img = pygame.image.load("path.png")
rock_img = pygame.image.load("rock.png")

# 画像データのサイズをタイルサイズと同じにする
path_img = pygame.transform.scale(path_img, (TILE_SIZE, TILE_SIZE))

def draw_map():
    for row in range(len(map_data)):
        for col in range(len(map_data[row])):
            tile = map_data[row][col]
            if tile == 0:
                screen.blit(path_img, (col * TILE_SIZE, row * TILE_SIZE))
            elif tile == 1:
                screen.blit(rock_img, (col * TILE_SIZE, row * TILE_SIZE))

# メインループ
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.fill(WHITE)
    draw_map()
    pygame.display.flip()


こんな感じ

画面サイズは640 * 640です。そして一枚一枚のタイルのサイズは64 * 64です。タイルを縦横10枚ずつ並べています。

タイルで使う画像は64*64ピクセルのするのがお勧めです。もちろんマップサイズに合わせてください。
ドット絵エディタで自分で作るか、ダウンロードさせてくれるサイトでダウンロードしてください。

配列の1とか0を編集すれば岩の位置とか自由に動かせます。適当に作りすぎて右下の草むらとかよくわからないですが、皆さんは考えて作ってみてください!
(後からいくらでも直せるので大丈夫ですが)

ただこれだと小さすぎて寂しいので、表示されるサイズはそのまま、マップ全体のサイズはこれの4倍にしましょう。
キャラクターの動きに合わせて表示されるマップが変わる感じ。

なのでまずはキャラクターを描画しましょう。

キャラ登場

ここから先は

78,964字 / 4画像 / 3ファイル

¥ 500

この記事が気に入ったらチップで応援してみませんか?