2016-05-08 13 views
-1

キャラクターを空中でまっすぐ飛び越えて見せてから、元に戻って元のレベルに戻ります。 (y = 100)以下のコードは、プログラムが自分自身と戦い、同時に彼を上下に動かすようにしているようです。Visual Basic:ボタンをクリックするとイメージが上に移動してから下に戻ります

私は数え切れないほどの方法を試してみましたが、それらのすべてが男になって戻って来ないか、ページから飛んできませんでした。

Private Sub btnJump_Click(sender As Object, e As EventArgs) Handles btnJump.Click 
    tmrJump.Start() 
End Sub 
Private Sub tmrJump_Tick(sender As Object, e As EventArgs) Handles tmrJump.Tick 
    For intCounterUp As Integer = 100 To 15 
     picSpaceRunner.Location = New Point(intCounterX, intCounterY) 
     intCounterY = intCounterUp 
    Next intCounterUp 
    For intCounterDown As Integer = 15 To 100 
     picSpaceRunner.Location = New Point(intCounterX, intCounterY) 
     intCounterY = intCounterDown 
    Next intCounterDown 
End Sub 
End Class 
+0

これはVB.NETであり、C++ではありません –

+0

はい、あります。 – yotacoman

答えて

0

コードは遅れずに実行されているため、マシンは慈悲に満ちています。

私はプロのゲームコーダーではないので、近代的なゲームエンジンの複雑さについては説明できませんでした。しかし、私が長年前に学んだ基本的なアイデアの1つは、ゲーム/アニメーションのループを制御することです。毎秒のフレームを考えてみましょう。

コードでは、各ループの繰り返し内に遅延を追加するのと同じくらい簡単です。キャラクターが2秒(1秒上、1秒下)でジャンプを完了するようにするには、各ループの反復回数で1000(1秒= 1000 ms)を割り、その分だけ遅らせます。たとえば、85回の反復があるため、各反復には約12 msがかかります。

スレッドをブロックしても構わない場合は、Threading.Thread.Sleep(12)でこれを非常に簡単に行うことができます。ブロッキングが問題になる場合は、おそらく外部タイマーを使用することになります。

Google検索でこのリンクが見つかりました。 VB.Netでマネージドゲームループを設定する方法について説明します。

http://www.vbforums.com/showthread.php?737805-Vb-Net-Managed-Game-Loop

UPDATE:パーOPさんのコメント...

この使用してタイマーを実行するには、Timerイベントハンドラ(ティック)内で直接文字オブジェクトを操作することをお勧めします。あなたはループをまったく使用しません。

Timer's Intervalを前述の値に設定します。これは、1ピクセル移動に要する時間に相当します。次に、TimerのTickハンドラで、キャラクタオブジェクトのLocationを新しい値の新しいPointに設定します。 Tickハンドラでも上限(15)を確認し、下限(100)に達するまでプロセスを逆にします。例えば

Private Sub tmrJump_Tick(sender As Object, e As EventArgs) Handles tmrJump.Tick 
    If (intCounterY > 15 And blnGoingUp == True) Then 
     picSpaceRunner.Location = new Point(intCounterX, intCounterY - 1); 
    End If 

    ... Remaining Code Goes Here ... 

End Sub 
+0

私は学校の課題としてこれをやっています。遅れではなくレッスンを完了するためにタイマーを使わなければなりません。私が同じ効果を達成できる他の方法はありますか? – yotacoman

+0

これは学校向けのものなので、答えとして完全なコードを渡すだけではありません。しかし、私のアップデートはあなたを正しい道に導くはずです。 – WonderGrub

+0

これは、キャラクタを1ピクセルだけ上に移動させ、ジャンプ動作で滑るのではなく、瞬時にキャラクタを移動させます。また、彼を元に戻すことの本当の問題は、あなたの提案されたコードに取り組まれていませんでした。他のアイデア? – yotacoman

0

はtimer_tickにループを入れないでください。代わりに、設定した間隔で高さを増減させてから、画像が最大高さに達したかどうかを確認してください。

関連する問題