我正在尝试使用图片框开发一个简单的游戏
例如,如果您有3个不同的图片框,每个图片框都包含唯一的图片 加载表单时,可以看到一个框,而其他两个框是不可见的 玩家必须在可见图片框变为不可见之前点击该图片框(指定该框保持可见的时间)
示例:框1保持可见状态5秒,如果在5秒内没有单击框,则框1变为不可见,并且另一个随机框将变为可见。 当然,如果用户成功点击图片,他的分数就会更新 通过缩短时间可以达到不同的水平
代码可能是表单加载时放置的单个代码 有帮助吗?感谢
答案 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()