経過時間を計ることはできますか?

タグの編集
投稿者 れい  (学生) 投稿日時 2009/1/19 16:28:27
はじめまして、大学生のれいです。
Visual Basic 2005ゲームでゲームを作っています。

勉強し始めたばかりなので、初歩的な質問だったら申し訳ないんですが…調べてもわからなくて投稿しました。

ゲーム内にカウントアップ(経過時間)をLabelで表示できるように設定するにはどうすればいいでしょうか??
教えてください!
投稿者   (社会人) 投稿日時 2009/1/19 19:21:59
System.Threading.Timer
投稿者 るしぇ  (社会人) 投稿日時 2009/1/19 20:24:50
初心者には Timer コンポーネント(デザイン画面でコントロールのように
貼り付けて使う)を使うほうが分かり易いかもしれません。
精度は悪いですが、サンプルコードもたくさん転がってるし。

> 調べてもわからなくて投稿しました。
Visual Basic 2005 のヘルプにも載っている内容ですし、
入門本にもサンプルコードが書いてあるような内容ですね。
何をどう調べたかを書き込むようにしてください。

調べ方が分からないのでは、すぐに次の壁にぶつかると思います。
投稿者 魔界の仮面弁士  (社会人) 投稿日時 2009/1/19 20:41:54
経過時間の測定には、「System.Diagnostics.StopWatch クラス」が便利かと思います。
(Date 型/TimeSpan 型でも良いですけれども)

一方、「System.Windows.Forms.Timer クラス」は、
“一定時間が経過するたびにイベントを発生させる”という代物です。
(“一定間隔でイベントを発生させる”では無い事に注意)


以下サンプル。
フォームに、Label/Button/Timer を貼っておいてください。

Public Class Form1

    Private watch As New Stopwatch()

    Private Sub Timer1_Tick(ByVal sender As ObjectByVal e As EventArgs) Handles Timer1.Tick
        Label1.Text = watch.Elapsed.ToString()
    End Sub

    Private Sub Form1_Load(ByVal sender As ObjectByVal e As EventArgs) Handles Me.Load
        Button1.Text = "開始/停止"
        Button2.Text = "リセット"
        Timer1.Interval = 20
        Timer1.Enabled = True
    End Sub

    Private Sub Button1_Click(ByVal sender As ObjectByVal e As EventArgs) Handles Button1.Click
        If watch.IsRunning Then
            watch.Stop()
        Else
            watch.Start()
        End If
    End Sub

    Private Sub Button2_Click(ByVal sender As ObjectByVal e As EventArgs) Handles Button2.Click
        watch.Reset()
    End Sub
End Class


上記の Timer1.Interval は、画面の再描画間隔を表します。お好みで調整してください。
投稿者 れい  (学生) 投稿日時 2009/1/20 00:02:46
解答ありがとうございます。
特に魔界の仮面弁士さんはすごく丁寧で、とても参考になりました。