Skip to content

Instantly share code, notes, and snippets.

@playdeezgames
Created August 6, 2018 09:00
Show Gist options
  • Save playdeezgames/68e40ae9452d779768518971ffa35266 to your computer and use it in GitHub Desktop.
Save playdeezgames/68e40ae9452d779768518971ffa35266 to your computer and use it in GitHub Desktop.
Tokenland: in which a player moves about an empty grid of squares.
using System;
namespace Tokenland
{
internal class World
{
internal int BoardWidth = 8;
internal int BoardHeight = 8;
internal int TokenColumn = 1;
internal int TokenRow = 1;
}
class Program
{
static void Main(string[] args)
{
Console.Title = "Tokenland";
Console.Clear();
Console.CursorVisible = false;
var world = new World();
var done = false;
while (!done)
{
RenderWorld(world);
done = HandleInput(world);
}
}
private static bool HandleInput(World world)
{
var key = Console.ReadKey(true);
switch (key.Key)
{
case ConsoleKey.Escape:
return true;
case ConsoleKey.UpArrow:
world.TokenRow = (world.TokenRow > 1) ? (world.TokenRow - 1) : (world.TokenRow);
return false;
case ConsoleKey.DownArrow:
world.TokenRow = (world.TokenRow < world.BoardHeight) ? (world.TokenRow + 1) : (world.TokenRow);
return false;
case ConsoleKey.LeftArrow:
world.TokenColumn = (world.TokenColumn > 1) ? (world.TokenColumn - 1) : (world.TokenColumn);
return false;
case ConsoleKey.RightArrow:
world.TokenColumn = (world.TokenColumn < world.BoardWidth) ? (world.TokenColumn + 1) : (world.TokenColumn);
return false;
default:
return false;
}
}
private static void RenderWorld(World world)
{
for (int row = 1; row <= world.BoardHeight; ++row)
{
for (int column = 1; column <= world.BoardWidth; ++column)
{
Console.CursorLeft = column - 1;
Console.CursorTop = row - 1;
if (world.TokenColumn == column && world.TokenRow == row)
{
Console.ForegroundColor = ConsoleColor.White;
Console.BackgroundColor = ConsoleColor.Black;
Console.Write("@");
}
else
{
Console.ForegroundColor = ConsoleColor.DarkGray;
Console.BackgroundColor = ConsoleColor.Black;
Console.Write(".");
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment