素人がゲームプログラム作成に挑戦
ゲームを買うお金がないから、ゲームを作るというゲームに挑戦!言語はVisual Basic(VB)をメインにC++、C#、Javaは参考程度
Entries
新しい記事を書く事で広告が消せます。
- --------
- カテゴリ : スポンサー広告
- コメント : -
- トラックバック : -
-件のコメント
コメントの投稿
-件のトラックバック
- トラックバックURL
- http://hinagis.blog33.fc2.com/tb.php/37-6d21be98
- この記事に対してトラックバックを送信する(FC2ブログユーザー)
マップチップ その4
- ジャンル : コンピュータ
- スレッドテーマ : Visual Basic
マップチップ その3で作成したキャラクタクラスをマップチップ その2で作成したフォームクラスに組み込んでいきます。
キャラクタクラスは移動アニメーションなど描画位置の計算処理が含まれます。
これはゲームループの中で行われる作業になるため、ゲーム時間を渡してあげるようにしておかなければなりません。
将来的にみていくと、ゲーム時間はキャラクタ以外にも利用することが考えられるため、すべてのクラスを管理するフォームクラスに持たせておいたほうがよいかと思います。
また、キャラクタクラスにキー入力を渡しておかなければキャラクタの移動ができませんから、キャラクタクラスに入力されたキー情報を渡すイベントメソッドを作成しておきます。
これでフォームクラス、マップクラス、キャラクタクラスの作成ができました。
今の状態では移動はできますが、川を渡ったり、海を泳いだり、画面端から消えて行ったりと問題点が残っています。
あとは、これらの制御を組み込めばフィールド移動に関してはひと段落ですかね。
キャラクタクラスは移動アニメーションなど描画位置の計算処理が含まれます。
これはゲームループの中で行われる作業になるため、ゲーム時間を渡してあげるようにしておかなければなりません。
将来的にみていくと、ゲーム時間はキャラクタ以外にも利用することが考えられるため、すべてのクラスを管理するフォームクラスに持たせておいたほうがよいかと思います。
また、キャラクタクラスにキー入力を渡しておかなければキャラクタの移動ができませんから、キャラクタクラスに入力されたキー情報を渡すイベントメソッドを作成しておきます。
Public Class Form1
Dim map As MapClass 'マップオブジェクト変数
Dim chara As CharaClass 'キャラオブジェクト変数
Dim swatch As Stopwatch = New Stopwatch() 'ストップウォッチ
Dim lastTime As Double '前回実行時の時間
Public Sub New( )
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent( )
' InitializeComponent( ) 呼び出しの後で初期化を追加します。
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True)
Me.ClientSize = New Size(640, 480)
map = New MapClass 'マップオブジェクト生成
chara = New CharaClass(9, 7) 'キャラオブジェクト生成
lastTime = 0.0
swatch.Reset( )
swatch.Start( )
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
Dim nowTime As Double = swatch.ElapsedMilliseconds / 1000.0 'Paintメソッドを実行した瞬間の時間
Dim elapsedTime As Double = nowTime - lastTime
lastTime = nowTime
'更新
chara.Update(nowTime, elapsedTime)
'描画
map.Draw(g)
chara.Draw(g)
'フォーム再描画
Me.Invalidate( )
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
chara.KeyDown(e.KeyCode)
End Sub
End Class
Dim map As MapClass 'マップオブジェクト変数
Dim chara As CharaClass 'キャラオブジェクト変数
Dim swatch As Stopwatch = New Stopwatch() 'ストップウォッチ
Dim lastTime As Double '前回実行時の時間
Public Sub New( )
' この呼び出しは、Windows フォーム デザイナで必要です。
InitializeComponent( )
' InitializeComponent( ) 呼び出しの後で初期化を追加します。
Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.UserPaint Or ControlStyles.OptimizedDoubleBuffer, True)
Me.ClientSize = New Size(640, 480)
map = New MapClass 'マップオブジェクト生成
chara = New CharaClass(9, 7) 'キャラオブジェクト生成
lastTime = 0.0
swatch.Reset( )
swatch.Start( )
End Sub
Private Sub Form1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim g As Graphics = e.Graphics
Dim nowTime As Double = swatch.ElapsedMilliseconds / 1000.0 'Paintメソッドを実行した瞬間の時間
Dim elapsedTime As Double = nowTime - lastTime
lastTime = nowTime
'更新
chara.Update(nowTime, elapsedTime)
'描画
map.Draw(g)
chara.Draw(g)
'フォーム再描画
Me.Invalidate( )
End Sub
Private Sub Form1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
chara.KeyDown(e.KeyCode)
End Sub
End Class
これでフォームクラス、マップクラス、キャラクタクラスの作成ができました。
今の状態では移動はできますが、川を渡ったり、海を泳いだり、画面端から消えて行ったりと問題点が残っています。
あとは、これらの制御を組み込めばフィールド移動に関してはひと段落ですかね。
0件のコメント
コメントの投稿
0件のトラックバック
- トラックバックURL
- http://hinagis.blog33.fc2.com/tb.php/37-6d21be98
- この記事に対してトラックバックを送信する(FC2ブログユーザー)



