VB.net游戏使用图片框功能

时间:2013-02-28 17:25:11

标签: vb.net function image

我正在尝试使用图片框开发一个简单的游戏

例如,如果您有3个不同的图片框,每个图片框都包含唯一的图片 加载表单时,可以看到一个框,而其他两个框是不可见的 玩家必须在可见图片框变为不可见之前点击该图片框(指定该框保持可见的时间)

示例:框1保持可见状态5秒,如果在5秒内没有单击框,则框1变为不可见,并且另一个随机框将变为可见。 当然,如果用户成功点击图片,他的分数就会更新 通过缩短时间可以达到不同的水平

代码可能是表单加载时放置的单个代码 有帮助吗?感谢

2 个答案:

答案 0 :(得分:0)

我可能会使用秒表 - 计时器很难,因为我不知道在用户点击成功时将计数重置为0的方法。

声明一个像这样的秒表:

Private maxWaitTimer As New Stopwatch

然后,也许在你的表单加载事件中可以使用'游戏循环'类型的东西...也许是这样的:

maxWaitStopwatch.Start()

While(GameIsRunning)
    If maxWaitStopwatch.ElapsedMilliseconds > 5000 Then
        Losses = Losses + 1
        selectNewPictureBox()
        maxWaitStopwatch.Restart()
    Else
        Application.DoEvents() 'this gives the program a chance to execute the picture box click event, among other things (resize, drag, etc... since we are spinning in a loop)    
    End If
    'System.Threading.Thread.Sleep(100) 'uncommenting this line will prevent it from maxing out your processor, although it will be slightly less responsive
End While

你的图片框可以实现这样的东西:

Wins = Wins + 1
selectNewPictureBox()
maxWaitStopwatch.Restart()

基本上,你的程序在循环中旋转,检查计时器是否已经过去,如果是,它会移动图片。

click事件会增加分数 - 它有机会在循环的'application.doevents()'部分运行。

添加一个睡眠(100)会使它慢下来(并使它稍微不准确,大约100ms),但它会阻止它使用大量的CPU。你可能不会注意到速度上的差异。

可能有更好的方法来做到这一点,但是......


编辑 - 反映史蒂文所说的,如果你使用计时器而不是循环会更好:

当用户点击图片时使用stop(),然后在。之后调用start()。

(我没有意识到会重置它,但显然确实如此)

答案 1 :(得分:0)

使用间隔为5000的计时器,然后使用已用事件处理程序

Timer.stop()
Losses = Losses + 1
selectNewPictureBox()
Time.start()

然后在图片框处理程序

Timer.stop()
Wins = Wins + 1
selectNewPictureBox()
Timer.start()