Fixed PlayArea tracking and rendering
Fixed logical errors (particularly in variable/iterator naming) Added "frame timing" for a more consistent feel
This commit is contained in:
parent
f948626cd0
commit
fd552b1429
@ -34,7 +34,7 @@ namespace ConsoleSnake
|
|||||||
public Int32 Y { get; set; }
|
public Int32 Y { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
private static PlayArea _playArea;
|
private static PlayArea _playArea = new PlayArea(1, 4, Console.WindowWidth - 2, Console.WindowHeight - 2);
|
||||||
private static bool _running = true;
|
private static bool _running = true;
|
||||||
private static bool _growing = false;
|
private static bool _growing = false;
|
||||||
private static Direction _direction = Direction.Up;
|
private static Direction _direction = Direction.Up;
|
||||||
@ -44,8 +44,7 @@ namespace ConsoleSnake
|
|||||||
static void Main(string[] args)
|
static void Main(string[] args)
|
||||||
{
|
{
|
||||||
Console.ReadKey();
|
Console.ReadKey();
|
||||||
Console.WindowWidth -= Console.WindowWidth % 2;
|
|
||||||
Console.WindowHeight -= Console.WindowHeight % 2;
|
|
||||||
Console.SetBufferSize(Console.WindowWidth, Console.WindowHeight);
|
Console.SetBufferSize(Console.WindowWidth, Console.WindowHeight);
|
||||||
|
|
||||||
DrawPlayArea();
|
DrawPlayArea();
|
||||||
@ -57,9 +56,13 @@ namespace ConsoleSnake
|
|||||||
|
|
||||||
while (_running)
|
while (_running)
|
||||||
{
|
{
|
||||||
|
DateTime beginFrame = DateTime.Now;
|
||||||
HandleInput();
|
HandleInput();
|
||||||
AllSnakeThings();
|
AllSnakeThings();
|
||||||
Thread.Sleep(50);
|
TimeSpan frameTime = DateTime.Now.Subtract(beginFrame);
|
||||||
|
|
||||||
|
if(50 - frameTime.Milliseconds > 0)
|
||||||
|
Thread.Sleep(50 - frameTime.Milliseconds);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,14 +73,19 @@ namespace ConsoleSnake
|
|||||||
{
|
{
|
||||||
Console.CursorTop = top;
|
Console.CursorTop = top;
|
||||||
Console.CursorLeft = 0;
|
Console.CursorLeft = 0;
|
||||||
if (top == 0 || top == Console.WindowHeight - 1)
|
if (top < _playArea.TopEdge || top > _playArea.BottomEdge)
|
||||||
for (Int32 row = 0; row < Console.WindowWidth; ++row)
|
for (Int32 left = 0; left < Console.WindowWidth; ++left)
|
||||||
Console.Write(' ');
|
Console.Write(' ');
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Console.Write(' ');
|
for (Int32 left = 0; left < _playArea.LeftEdge; ++left)
|
||||||
|
Console.Write(' ');
|
||||||
|
//Console.CursorLeft = _playArea.RightEdge+1;
|
||||||
|
for (Int32 left = Console.CursorLeft = _playArea.RightEdge + 1; left < Console.WindowWidth; ++left)
|
||||||
|
Console.Write(' ');
|
||||||
|
/*Console.Write(' ');
|
||||||
Console.CursorLeft = Console.WindowWidth-1;
|
Console.CursorLeft = Console.WindowWidth-1;
|
||||||
Console.Write(' ');
|
Console.Write(' ');*/
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*for (Int32 top = _playArea.Top; top < _playArea.Height; ++top)
|
/*for (Int32 top = _playArea.Top; top < _playArea.Height; ++top)
|
||||||
@ -93,7 +101,7 @@ namespace ConsoleSnake
|
|||||||
}
|
}
|
||||||
private static void Reset()
|
private static void Reset()
|
||||||
{
|
{
|
||||||
_playArea = new PlayArea(1, 1, Console.WindowWidth - 2, Console.WindowHeight - 2);
|
_playArea = new PlayArea(1, 4, Console.WindowWidth - 2, Console.WindowHeight - 2);
|
||||||
_running = true;
|
_running = true;
|
||||||
_growing = false;
|
_growing = false;
|
||||||
_direction = Direction.Up;
|
_direction = Direction.Up;
|
||||||
@ -111,7 +119,7 @@ namespace ConsoleSnake
|
|||||||
Position2D oldCursorPos = new Position2D(Console.CursorLeft, Console.CursorTop);
|
Position2D oldCursorPos = new Position2D(Console.CursorLeft, Console.CursorTop);
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
_food = new Position2D(rng.Next(3, Console.WindowWidth - 10), rng.Next(3, Console.WindowHeight - 3));
|
_food = new Position2D(rng.Next(_playArea.LeftEdge+1, _playArea.RightEdge), rng.Next(_playArea.TopEdge, _playArea.BottomEdge));
|
||||||
} while (_snakeSegments.Contains(_food));
|
} while (_snakeSegments.Contains(_food));
|
||||||
MoveCursor(_food);
|
MoveCursor(_food);
|
||||||
Console.ForegroundColor = ConsoleColor.Red;
|
Console.ForegroundColor = ConsoleColor.Red;
|
||||||
|
Loading…
Reference in New Issue
Block a user