【VBAでRPGをつくる!2】ワークシートにドット絵を用意しよう

  • URLをコピーしました!
目次

【VBAでRPGをつくる!2】ワークシートにドット絵を用意しよう

ドット絵方式のゲームでは、ゲーム用のシートにドット絵を作成しておかなくてはなりません。ただし、ゲーム用のシートに直接作成するのではなく、ゲームを起動するときに、別のワークブックに作成しておいたドット絵をゲーム用のシートにコピーします。

別のワークブックに作成したドット絵をコピーする

ドット絵用ワークブック「Pattern.xls」

まずドット絵を保存したワークブックの名前や場所は、次のようにコンスタントで定義しておきます。

コンスタント/Sheet1内

Const cBookHuman As String = “Pattern.xls”
Const cSheetHuman As String = “Human”
Const cHumanTop As Long = 1001

VBA辞書】
string:文字列のデータ型

ロシージャ・変数・定数名】
cBookHuman:主人公ドット絵のファイルを定義
cSheetHuman:主人公ドット絵のシートを定義
cHumanTop:主人公のコピー位置(1001行目に設定)
Pattern:模様、原型

続いてゲーム用のワークシートにドット絵をコピーするプログラムを書いていきます。ワークブックを開き、さらにワークブック間でセルのコピー&ペーストを行っています。

Private Sub PatternCopy()

‘Excelの警告メッセージをオフにする(False設定)
Application.DisplayAlerts = False

‘ドット絵用ワークブックを開き、ゲーム用シートにコピーする
Workbooks.Open ThisWorkbook.Path & “\” & cBookHuman
Workbooks(cBookHuman).Worksheets(cSheetHuman).Range(“A1:IV256”).Copy
Cells(cHumanTop, 1).PasteSpecial
Workbooks(cBookHuman).Close False

‘セルのカーソルを移動し、スクロールしたシートを元に戻す
Cells(1, 1).Select
Application.CutCopyMode = False

‘警告メッセージの設定を元に戻す(True設定)
Application.DisplayAlerts = True

End Sub

VBA辞書】
alerts:アラート、警報
path:パス、通り道
PasteSpecial:メソッド、「形式を選択して貼り付け」
special:(英単)特別な

PatternCopyマクロを実行すると、ドット絵用のワークブックに作成した主人公のドット絵が、ゲーム用のシート(Sheet1)にコピーされます。1回目のシートを初期設定した際に、ゲーム画面用領域(横方向:17~192列、縦方向:17~160行)以外は非表示にしていましたが、実行結果を見るために再表示しています。

PatternCopyマクロ実行結果

ゲーム用ワークシートの1001行目を先頭に、主人公のドット絵がコピーされました。

コピー処理中は警告メッセージをオフに

ドット絵をコピーするときは、Application.DisplayAlertsを使ってExcelの警告メッセージを表示しないようにしました。大きな範囲をコピー&ペーストしたあと、ワークブックを閉じようとしたときに表示される警告メッセージを表示しないようにするためです。なお、この設定を行うと、保存の確認や各種のエラーの通知など、その他の警告メッセージも表示されないので注意してください。

ドット絵の管理と作成場所

ドット絵はゲーム用のシートに用意するのが大前提です。しかし、ゲーム用のシートに直接作成した場合、開発中のバグなどが原因で、苦労して作ったドット絵が破壊されてしまうことも予想されます。こういった不測の事態からの復旧を容易にするために、ドット絵は別のシートやワークブックに作成し、ゲームを起動する前にコピー&ペーストして使うようにします。

また、ドット絵はセルの背景色を設定して作成するため、大量のセルを使用します。そのため、シートの容量も大きくなります。ドットを分離しておけば、ゲーム用のシート(ワークブック)を軽くできるというメリットも得られます。

ドット絵とゲーム用シートの関係

ドット絵を表示するのは次のような手順で行います。

  1. ドット絵は、専用のワークブックに作成してマスターファイルとする。
  2. ゲーム起動時に、ゲーム用シートへその都度コピー&ペーストする。
    ・コピー範囲(A1:IV256)はセル名で指定する。
     Workbooks(cBookHuman).Worksheets(cSheetHuman).Range(“A1:IV256”).Copy
    ・貼り付け先は、先頭のセルだけを指定する。
     Cells(cHumanTop, 1).PasteSpecial
  3. キャラクターを表示するときは、同じシート上にあるドット絵を使用する。

ドット絵をコピーするときに行っているワークブックの操作

ドット絵を貼り付けると、貼付けを行った時点でシートが1001行目(貼り付けた先頭のセル)にスクロールしてしまいます。そこで、貼り付けた後にA1セルへカーソルを移動し、スクロールしてしまったシートを元に戻すようにしています。

ワークシートにドット絵が用意できたので、次回はキャラクターを表示します。

よかったらシェアしてね!
  • URLをコピーしました!
目次