Entries

マップチップ その4

マップチップ その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

これでフォームクラス、マップクラス、キャラクタクラスの作成ができました。
今の状態では移動はできますが、川を渡ったり、海を泳いだり、画面端から消えて行ったりと問題点が残っています。
あとは、これらの制御を組み込めばフィールド移動に関してはひと段落ですかね。

0件のコメント

コメントの投稿

新規
投稿した内容は管理者にだけ閲覧出来ます

0件のトラックバック

トラックバックURL
http://hinagis.blog33.fc2.com/tb.php/37-6d21be98
この記事に対してトラックバックを送信する(FC2ブログユーザー)

Appendix

最新記事

検索フォーム

月別アーカイブ

売れ筋ランキング

お楽しみ用

アニメグッズ

プロフィール

Author:ひなぎ
VB2005&2008でゲーム作成中

FC2カウンター

Powered By FC2ブログ

今すぐブログを作ろう!

Powered By FC2ブログ

FC2ブログ 一戸建て