ランキングはこちらをクリック! にほんブログ村 ゲームブログ ゲーム制作へ ブログランキング【くつろぐ】

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

=第25話=文字のサイズをランダムで决める処理を追加しましょう

さてさてゲーム作成も終盤にさしかかってきましたが、

本日が大晦日ですね。

残念ながら完成まで間に合いませんでしたが

頑張って記事を書きます。


Mojiクラスのインスタンスプロシージャの

「文字のサイズを取得(20~70)」コメント部分を

以下のコードに置き換えます。

--------------------------------------------------

'文字のサイズを取得(20~70)
_intSize = rnd.Next(20, 71)

--------------------------------------------------

※デバッグ開始を実行してみましょう

nttadamoji-030.gif


文字探し表示画面の文字のサイズがランダムに表示されました。
今回追加した処理も自分で好きな数値に変更して
どのような変化があるのか予想しながらデバッグしてみてください。

次回は、文字を反転して表示する処理を実装していきます。

テーマ : フリーゲーム - ジャンル : ゲーム

=第24話=1文字をランダムで决める処理を追加しましょう

今年も残すところあとわずかとなりました。

悪いニュースばかりで景気のいい話も聞きません。

そんなときは家でゲームでも作って遊びましょう。


ではさっそく、Mojiクラスのインスタンスプロシージャ

「暗号乱数ジェネレータを使用してシード値を

決定して乱数を生成」コメント部分
に以下のコードを追加します。

--------------------------------------------------

'暗号乱数ジェネレータを使用してシード値を決定して乱数を生成
Dim rndNum() As Byte = New Byte(0) {}
Dim rng As New System.Security.Cryptography.RNGCryptoServiceProvider()
rng.GetBytes(rndNum)
Dim rnd As New System.Random(rndNum(0))

--------------------------------------------------

続いてMojiクラスのインスタンスプロシージャの

「文字テーブルから一文字を取得」コメント部分

以下のコードに置き換えます。

--------------------------------------------------

'文字テーブルから一文字を取得
_strMoji = strHiragana(rnd.Next(strHiragana.Length))

--------------------------------------------------

ではデバッグ開始を実行してみましょう!

nttadamoji-029.gif


文字探し表示画面の文字がランダムに表示されました。
次回は、文字のサイズに変化を付ける処理を実装していきます。

テーマ : フリーゲーム - ジャンル : ゲーム

=第23話=Mojiクラスを実際に使用する処理を作成しましょう

今日は仕事も休みなので「WINDING ROAD」を聞きながら

この記事を書いています。休日は楽しく過ごしたいものです。

本題ですが、今回は久々にデバッグ実行の日です!

うまく動作することを期待してがんばりましょう!

それでは、MainFormクラスに正しい文字数の値を保持する

変数「intOmote」と、Mojiオブジェクトの変数「Moji」をコードに追加します。

MainFormクラスです。Mojiクラスではないです。間違わないように!
--------------------------------------------------

'正しい文字数の変数
Private intOmote As Integer

'Mojiオブジェクトの変数
Private Moji(12 - 1) As Moji

--------------------------------------------------

続きまして、「SceneChange」プロシージャの

「Mojiオブジェクトの作成」コメント部分に以下のコードを追加します。

過去の記事で作成済みの「SceneCahge」プロシージャ内に

「'Mojiオブジェクトを作成」とコメントしてある行の下に

「'★この部分に後ほどコードを追加します★」と

コメントしてあるところに以下のコードを追加してください。

追加したら★印のコメントは削除していただいて結構です。

--------------------------------------------------

'Mojiオブジェクトの作成
intOmote = 0
For i As Integer = 0 To 3 - 1
For j As Integer = 0 To 4 - 1
'描画座標を指定してMojiオブジェクトのインスタンスを作成
Moji(4 * i + j) = New Moji(Me.TabPage1.Width / 5 * (j + 1), Me.TabPage1.Height / 4 * (i + 1))
'正しい文字数の数をカウント
If Not Moji(4 * i + j).Uramuki Then
intOmote = intOmote + 1
End If
Next j
Next i

--------------------------------------------------

続きまして、「TabPage3」に文字を描画するための処理を行なう

「DrawTabPage3」プロシージャをコードに追加します。

これもMainFormクラス内に追加してください。

--------------------------------------------------

'TabPage3の描画処理
Private Sub DrawTabPage3()

If Not Moji Is Nothing Then
Dim g As Graphics = Me.TabPage3.CreateGraphics

'文字を表示
For i As Integer = 0 To Moji.Length - 1
Moji(i).DrawMoji(g, MojiDrawType.DrawTurn)
Next
End If

End Sub

--------------------------------------------------

すると?あれ?MojiDrawTypeと書いてある部分に波線が表示されてる(・◇・;

これは、波線でエラーになったコード部分を、

nttadamoji.Moji.MojiDrawType.DrawTurn(nttadamojiプロジェクトの

MojiクラスのMojiDrawType構造体のDrawTurn値という意味)

と書きなおせば問題ない(エラーが消える)のですが、

ずいぶんと長ったらしい名前になってしまいます。

このような場合は、デフォルトの名前空間を指定することで

MojiDrawType.DrawTurnとゆうように省略した名前を書くことができます。

自分の家の住所を説明するときに地球の日本の東京都○○区・・・

なんて長ったらしいことは誰も言わないですね。

なので予め「地球の日本」の住所を使用するので

「地球の日本の」を省略します宣言をするわけです。

ということで、「Public Class MainForm」よりも更に上の部分に

デフォルトの名前空間を追加します。

以下をMainFormクラスの外(上の行)に追加してください。
--------------------------------------------------

Imports nttadamoji.Moji

--------------------------------------------------
nttadamoji-026.gif

この行自体がエラー(nttadamojiに波線がでる)となる場合は、

「メニューバーの[プロジェクト(P)]にある[nttadamojiのプロパティ(P)]

を選択し、[アプリケーション]項目の[ルート名前空間]の値を確認してください。

そこの値が「nttadamoji」となっているか確認し、なっていなければ

「nttadamoji」という値に変更してみてください。エラーがなくなるはずです。

これで、MojiDrawTypeと書いてある部分の波線が消えました。

もう少し頑張ります。

「Form1」の「コードエディタ」ウインドウを表示し、

クラス名(画面左上のリスト)の「TabPage3」をクリック、

メソッド名(画面右上のリスト)の「Paint」をクリックすることで

「TabPage3_Paint」イベントプロシージャが追加されます。

「TabPage3_Paint」イベントプロシージャにコードを追加します。

--------------------------------------------------

'TabPage3の描画処理
Call DrawTabPage3()

--------------------------------------------------
nttadamoji-027.gif

ここまでうまくいきましたでしょうか。

それではおまたせいたしました!

デバッグ開始を実行してみましょう!!
nttadamoji-028.gif


文字探し表示画面に文字が表示されましたね。

しかし、同じ大きさの"あ"という文字が並んでいるだけです。

次回から、文字の表示に変化を付ける処理を実装していきます。


テーマ : フリーゲーム - ジャンル : ゲーム

=第22話=Mojiクラスに文字を描画するメソッドを追加しましょう

今回もまたまたコードを追加します。

文字を描画するメソッドをコードに追加します。

このメソッドをつかって文字を描画します。

頭が整理できず混乱しそうなときは中の処理を今は難しく考えず、

このDrawMojiというメソッドを使えばゲーム用の文字が

画面に描画される程度でとめておきましょう。

ではさっそく以下のコードをMojiクラスに追加してください。
--------------------------------------------------

Public Sub DrawMoji(ByVal g As Graphics, ByVal mdt As MojiDrawType)

'Bitmapオブジェクトを作成
Dim img As New Bitmap(100, 100)

'imgのGraphicsオブジェクトを取得
Dim ig As Graphics = Graphics.FromImage(img)

'Control色に塗りつぶす
ig.FillRectangle(SystemBrushes.Control, ig.VisibleClipBounds)

'文字を描画
Dim fnt As New Font("MS ゴシック", _intSize)
Dim sf As New StringFormat
sf.Alignment = StringAlignment.Center
sf.LineAlignment = StringAlignment.Center
ig.DrawString(_strMoji, fnt, Brushes.Black, ig.VisibleClipBounds, sf)

'水平方向に反転(文字を裏向きにする)
'★この部分に後ほどコードを追加します★

'正解○または不正解×を描画
'★この部分に後ほどコードを追加します★

'角度をラジアン単位に変換
'★この部分に後ほどコードを追加します★

'回転後の座標を計算
'★この部分に後ほどコードを追加します★

'描画座標を計算
Dim iwc As Single = img.Width / 2
Dim ihc As Single = img.Height / 2
Dim x0 As Single = _x - iwc
Dim y0 As Single = _y - ihc

'描画座標のPointF配列を作成
Dim pf As PointF = New PointF(x0, y0)

'作成した文字の画像を描画
g.DrawImage(img, pf)

'リソースを開放
img.Dispose()
ig.Dispose()
fnt.Dispose()
sf.Dispose()

End Sub

--------------------------------------------------
nttadamoji-025.gif

どんどん完成に近づいてきています。

今年中に完成させますよー!

テーマ : フリーゲーム - ジャンル : ゲーム

=第21話=Mojiクラスにインスタンスを追加しましょう

「デジタルフォトフレーム」っていいなーと思う今日この頃です。

でも自分で買うのもちょっと高いし、誰かくれないかな(ーー;


その話はおいといて、

それでは今回はMojiクラスのインスタンス生成を行なうコードを追加します。

以下のコードをMojiクラス内に貼り付けるか自力で打ち込んでください。
--------------------------------------------------

Public Sub New(ByVal x As Integer, ByVal y As Integer)

'文字の描画中心座標を取得
_x = x
_y = y

'暗号乱数ジェネレータを使用してシード値を決定して乱数を生成
'★この部分に後ほどコードを追加します★

'文字テーブルから一文字を取得
_strMoji = "あ"

'文字のサイズを取得(20~70)
_intSize = 50

'文字が裏向きであるかを取得(1/2の確率で裏向き)
'★この部分に後ほどコードを追加します★

'文字の角度を取得(0~359)
'★この部分に後ほどコードを追加します★

End Sub

--------------------------------------------------

nttadamoji-024.gif

どんどん完成に近づいて来ました。

はやく実行して完成していくことを実感して頂きたいのですが、

このMojiクラスが今回のゲームにとって、とても重要で中心となるところです。

今のうちにどういった動きをするものを作成しているのか、

コードを見て、調べてみたり、予想したりして楽しんでください。

わくわくしてください(笑)

テーマ : フリーゲーム - ジャンル : ゲーム


プロフィール

ウルトラパワー

Author:ウルトラパワー
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ

相互リンク

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。