mirror of
https://github.com/coding-horror/basic-computer-games.git
synced 2025-12-23 07:29:02 -08:00
39 lines
1000 B
C#
39 lines
1000 B
C#
using static Bounce.Resources.Resource;
|
|
|
|
namespace Bounce;
|
|
|
|
internal class Game
|
|
{
|
|
private readonly IReadWrite _io;
|
|
|
|
public Game(IReadWrite io)
|
|
{
|
|
_io = io;
|
|
}
|
|
|
|
public void Play(Func<bool> playAgain)
|
|
{
|
|
_io.Write(Streams.Title);
|
|
_io.Write(Streams.Instructions);
|
|
|
|
while (playAgain.Invoke())
|
|
{
|
|
var timeIncrement = _io.ReadParameter("Time increment (sec)");
|
|
var velocity = _io.ReadParameter("Velocity (fps)");
|
|
var elasticity = _io.ReadParameter("Coefficient");
|
|
|
|
var bounce = new Bounce(velocity);
|
|
var bounceCount = (int)(Graph.Row.Width * timeIncrement / bounce.Duration);
|
|
var graph = new Graph(bounce.MaxHeight, timeIncrement);
|
|
|
|
var time = 0f;
|
|
for (var i = 0; i < bounceCount; i++, bounce = bounce.Next(elasticity))
|
|
{
|
|
time = bounce.Plot(graph, time);
|
|
}
|
|
|
|
_io.WriteLine(graph);
|
|
}
|
|
}
|
|
}
|