2020年10月19日

師匠のVB.NETどたばた塾~第14回

sisyo.gif
師匠T:うむ、師匠Tである! 冬が近づいてきたが、そんなことなどこのわしの目には入らぬ! 気にせずどんどん進んでいくぞ!

deshi.gif
弟子D:師匠、それはただ目をそらしてるだけじゃ……。

sisyo.gif
何か言ったか?

deshi.gif
いえ、なんでもないです……。

sisyo.gif
さて。今回は予告の通り、MyCharaクラスの内容を説明するとともに、MyCharaModuleモジュールの内容を説明していくぞ!
しっかりとついてくるように!


deshi.gif
は、はい……。

【 コンストラクタの中身を解説じゃ! 】

sisyo.gif
さて。まずはこれがMyCharaクラスのコンストラクタの内容であったな。

vb2009-l01.JPG

deshi.gif
はい。

sisyo.gif
まず、これからじゃ。

Handle = LoadGraph("mychara.png")

sisyo.gif
これは特に難しいことはなかろう。LoadGraph関数で自機の画像を読み込み、そのハンドルを、Handleプロパティに設定しているのじゃ。こうすることで、スプライトで画像を表示させることができるのじゃ。

deshi.gif
ふむふむ。

sisyo.gif
そして続いてはこれじゃ。

X = SCREEN_X + SCREEN_W / 2
Y = SCREEN_Y + SCREEN_H -48

deshi.gif
確か、XプロパティとYプロパティは、スプライトの位置を表すプロパティでしたっけ。つまり、そのスプライトの位置を設定しているわけですか。

sisyo.gif
うむ。そして、定数SCREEN_X、SCREEN_Yは、ゲーム画面の位置、そしてSCREEN_Wはゲーム画面の幅、SCREEN_Hはゲーム画面のの高さを表しているのであったな。つまり、横位置を、画面の左端から画面の幅の半分、つまり画面の中央。そして縦位置を、画面の下端から上に48ドットのところに設定しているわけじゃ。この48というのは、自機の高さじゃ。
つまり、こういうことじゃな。

vb2010-02.jpg

deshi.gif
なるほど。そして次の

Revise = DTRUE
※リストではRevise = DFALSEとなっていましたが、Revise=DTRUEが正解です。申し訳ありません。

deshi.gif
ですが……Reviseプロパティってなn

sisyo.gif
はぁっ!!(飛び蹴り

deshi.gif
うわぁっ。

sisyo.gif
おぬしの記憶力はノミ以下なのか。たわけが。
Reviseプロパティは、スプライトが画面の端にはみ出るかどうかを表すプロパティじゃ。
DTRUEならはみださないようにする、DFALSEならはみでるようにする、じゃ。
つまり、自機が画面から出ないように設定しているわけじゃ。さすがに自機が画面からはみ出たら困るじゃろ?

deshi.gif
確かに。

sisyo.gif
それでは続いては、MyCharaModuleの内容について説明していくぞ!

【 モジュールの内容じゃ! 】

sisyo.gif
まずはこれが、MyCharaModuleモジュールの内容であったな。

vb2009-l02.JPG
vb2009-l03.JPG

deshi.gif
はい。

sisyo.gif
まずは、ここからじゃ。

Dim oMyChara As MyChara

Public Sub MyCharaCreate()
 oMyChara = New MyChara()
End Sub

deshi.gif
あ、これは俺でもわかりますよ。MyChara型の変数oMyCharaに、MyCharaクラスのインスタンスを入れているんですよね。

sisyo.gif
うむ。その通り。ここでは、自機を作っておるのじゃ。そして次は、この関数じゃ。

Public Function MyCharaExists() As Boolean
 If oMyChara IsNot Nothing Then
  Return True
 Else
  Return False
 End If
End Function

sisyo.gif
これは、自機が存在しているかどうかをチェックする関数じゃ。存在していればTrueを、存在していなければFalseを返す。なお、Booleanというのは、TrueかFalseの二つの値を扱う型じゃ。

deshi.gif
ふむふむ。

sisyo.gif
そして、この関数のポイントはなんといっても、このIsNot Nothingじゃろう。これは、左辺の中身があるかないかを判定する演算子のようなものじゃ。IsNot Nothingだったら、存在していればTrueを返す。存在していなければTrueを返すようにしたければ、Is Nothingを使えばよい。

deshi.gif
なるほど!

sisyo.gif
後は難しいことはないな。MyCharaMainサブルーチンの

If MyCharaExists() Then
 MyCharaMove()
 MyCharaDraw()
End If


sisyo.gif
この部分は、先ほどの関数で、oMyCharaの中に自機が入っていれば、MyCharaMove()、MyCharaDraw()の二つのサブルーチンを実行しているのだ。

deshi.gif
MyCharaDrawサブルーチンのoMyChara.Draw()はそのまま、oMyCharaを表示させているんですね。

sisyo.gif
うむ、その通りじゃ。さて次は、自機の移動をやっていこう、と思ったが、そろそろ時間のようじゃ。それは次回のお楽しみにまわすとする。次回も新しい関数が登場する予定だから、楽しみにしているがよい。

deshi.gif
はい!

sisyo.gif
それでは、今回はここまで。来月まで、もうすぐ冬ということを忘れて頑張るがよい。

deshi.gif
師匠、だからそれは現実逃避です。



※次の更新は、『スマホでナンプレ!2020』の予定です。お楽しみに!


posted by 裏編 at 09:50| Comment(0) | 師匠のVB.NETどたばた塾 | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください