【VBAでRPGをつくる!1】ワークシートをゲーム用に設定する

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

【VBAでRPGをつくる!1】ワークシートをゲーム用に設定する

ワークシート上にドット絵を描くタイプのExcelゲームでは、方眼紙のように設定したシートのセル一つ一つを点(ドット、ピクセル)として絵を描きます。

セルを方眼紙状(正方形)にする

セルを正方形に整え、さらにシートの表示倍率を下げる設定は、初期処理で自動的に行いうようにします。セルやワークシートのプロパティを設定し、Sheet1を方眼紙のように設定します。

ワークシートをゲーム用に設定

またゲームを表示する範囲は、定数を使用して指定します。ゲーム中に表示範囲を変更することがないため、変数ではなく定数を使用します。

定数を使用して値に意味を持たせる

値に名前を付け、値に意味を持たせるときのテクニックです。VBAでは、Constステートメントを使って作成します。ブログラム中に数値を直接書くと、その値が何を表すかが不明確になり、プログラムが読みにくくなる場合があります。そこで、値に名前をつけておけば、それが何を表す値なのかが、わかりやすくなります。

Const 定数名 As データ型=格納する値

定数は、このように宣言して使用します。メリットとしては、

  • 値に意味を持たせることができる(わかりやすい)
  • 同じ文字や数値を、何度も記述しなくてよい
  • メンテナンスがしやすい(変更する場合は、Const定数だけを修正)

標準モジュール「Constant」

Public Const cScreenLeft As Long = 17
Public Const cScreenTop As Long = 17
Public Const cScreenRight As Long = 192
Public Const cScreenBottom As Long = 160

このサイトでは、変数名や構文に使用される英単語の意味を【VBA辞書】として記します。英単語の意味から、コードの内容を理解しやすくするためです。

VBA辞書】
Const:コンスタントの定義
Public:VBAプロジェクト全体で利用できる
(英単)公衆、公然の
as:=(イコール)
Long:「-2,147,483,648~2,147,483,647」の範囲で整数を使用できるデータ型


プロシージャ・変数・定数名】
Constant:定数
(英単)持続する、不変の
ScreenLeft:画面左
ScreenTop:画面上
ScreenRight:画面右
ScreenBottom:画面下

変数・定数の適用範囲

変数や定数は、宣言した場所や使用するキーワードによって、使用できる範囲が異なります。これを「適用範囲」(スコープ)と言います。先ほどの定数で記述した「Public」は、プロジェクト内のすべてのプロシージャーで使用できるようになります。

シートをゲーム用に初期設定する

SheetSetupマクロを実行すると、シート上の全ての書式や内容をクリアし、ゲーム用の書式にセットアップします。ドット絵方式のゲームでは、セルの大きさは正方形に整えます。

シートの初期設定は下準備

これらのシートの初期設定は、ゲームをワークシートのセルを使って表現するための下準備です。基本は「セルを正方形に」「シートの表示倍率はできるだけ小さく」の2つです。さらに実際にゲーム画面として使う部分だけを表示するため、余分な行・列を非表示に設定します。

Private Sub SheetSetup()

'Sheet1を前面に表示する
Worksheets(1).Activate
Worksheets(1).Visible = xlSheetVisible

'書式をクリアして、全てのセルを表示する
Rows.Hidden = False
Columns.Hidden = False
Cells.Clear

'セルを正方形(縦横20ピクセル)に設定する
Cells.ColumnWidth = 1.88
Cells.RowHeight = 15

'余分な行列は非表示にする
Range(Rows(1), Rows(cScreenTop - 1)).Hidden = True
Range(Rows(cScreenBottom + 1), Rows(65536)).Hidden = True
Range(Columns(1), Columns(cScreenLeft - 1)).Hidden = True
Range(Columns(cScreenRight + 1), Columns(256)).Hidden = True

'シート倍率(15%)に設定する
ActiveWindow.Zoom = 15

End Sub

VBA辞書】
Private:クラスやシートなどモジュール内のみ利用できる
(英単)個人的な、私用の
Activate:アクティブ化(前面に表示)
(英単)活性化する
xlSheet:WorksheetkVisibleプロパティを設定する際の設定値
 Worksheets.Visible = xlSheetVisible→シートを表示
 Worksheets.Visible = xlSheetHidden→シートを非表示
Visible:表示する
(英単)見える
Raws:行
Hidden:非表示
(英単)隠れた
False:正誤表現における「誤」を表現する用語でTRUEの反対
(英単)正しくない、偽りの 
True:正誤表現における「正」を表現する用語でFALSEの反対
(英単)正しい、真実   
Columns:列
Clear:クリアにする
(英単)明らかに、はっきりと
Width:幅
Height:高さ
Range:範囲
ActiveWindow:最前面に表示されているウィンドウ

【プロシージャ・変数・定数名】
Setup:設定

標準モジュール「Constant」で設定したように、ゲームで使用する範囲は、横方向が17~192列(Q~GJ列)、縦方向は17~160行の範囲だけを利用し、それ以外の行・列は非表示にしています。

画面上部と左側を非表示にする

SheetSetupマクロを実行すると、画面の上部と左側の16セル分を余白エリア(非表示部分)として確保しました。これは、画面スクロールを行う場合に拝啓の描画処理を軽くするための準備です。

ゲーム起動時に設定する

ゲーム用の書式設定をあらかじめシートに施しておく方法もあります。しかし、操作ミスやその他の要因で書式が崩れてしまうことも考えられるため、書式設定はゲームを起動するごとにプログラムを設定します。

ワークブックの設定を変更する

ワークブックには、ゲームを制作する上で必要のない機能がたくさんあります。それらの中に、ゲームの速度低下の要因になるものもあります。そのため、シートの枠線、スクロールバー、セルの見出しなど、ゲーム制作する上で必要のないものは、非表示にしましょう。

Private Sub WorkbookSetup()

‘ステータスバーを非表示
Application.DisplayStatusBar = False

‘数式バーを非表示
Application.DisplayFormulaBar = False

‘シートの設定(全て非表示)
With ActiveWindow
 .DisplayGridlines = False
 .DisplayHeadings = False
 .DisplayHorizontalScrollBar = False
 .DisplayVerticalScrollBar = False
End With

End Sub

VBA辞書】
Application:アプリケーション全体の処理・設定を操作するためのオブジェクト
(英単)適用すること、妥当性
display:画面
status:状態や状況、能力
formula:方式、数式
gridlines:グリッド線、枠線
headings:見出し
horizontal:水平
scroll:表示範囲を移動
vertical:垂直

「With」は主語を省略する書き方

With ステートメントを使用することで、何度もオブジェクト名を記述しなくてもすみます。日常の会話でいえば、主語を省略する書き方であるといえます。

With~End Withの間では、「.(ドット)」から書き始めることでオブシェクト名を省略することができます。

ゲームで使わない部分は表示しない

SheetSetupマクロ、WorkbookSetupマクロを実行すると、ワークシートをゲーム用に設定し、さらにスクロールバーやセルの見出しなどの機能を非表示に設定します。

ワークシート上で書類を作成するときに必要不可欠な機能は、速度低下の要因になる場合があります。ゲームのプログラムはそれ自体が重いため、ほんのわずかな効果だとしてもプログラムや画面表示への負担を減らさなくてはなりません。そのため、ゲームに必要が無いものは、全て表示しないようにしておきましょう。

元の状態に戻す処理

数式バーとステータスバーは、ワークブックを閉じると元の状態に戻ります。

ゲーム用ワークシートの準備ができましたので、次回はドット絵を準備していきます。

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