Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using System.IO;
- namespace ConsoleApplication23
- {
- internal class Program
- {
- private static void Main()
- {
- var point = new Point(x: 1, y: 1, size: 1);
- Print(point);
- while (true)
- {
- var key = Console.ReadKey().Key;
- switch (key)
- {
- case ConsoleKey.UpArrow:
- point.Direction = Direction.Up;
- break;
- case ConsoleKey.DownArrow:
- point.Direction = Direction.Down;
- break;
- case ConsoleKey.LeftArrow:
- point.Direction = Direction.Left;
- break;
- case ConsoleKey.RightArrow:
- point.Direction = Direction.Right;
- break;
- }
- point.Move(1);
- Print(point);
- }
- }
- private static void Print(Point point)
- {
- Console.Clear();
- for (var i = 0; i < point.Size; i++)
- {
- Console.SetCursorPosition(point[i].X, point[i].Y);
- Console.WriteLine (i == 0 ? "*+*":"");
- }
- }
- }
- internal class Point
- {
- private readonly List<Segment> seg;
- public Point(int x, int y, uint size)
- {
- if (size == 0)
- throw new ArgumentException();
- seg = new List<Segment>();
- for (var i = 0; i < size; i++)
- seg.Add(new Segment(x, y + i));
- Direction = Direction.Up;
- }
- public Direction Direction { get; set; }
- public int Size
- {
- get { return seg.Count; }
- }
- public Segment this[int ind]
- {
- get { return seg[ind]; }
- }
- public void Move(int flash)
- {
- int x = 0, y = 0;
- switch (Direction)
- {
- case Direction.Up:
- y = -flash;
- break;
- case Direction.Down:
- y = flash;
- break;
- case Direction.Left:
- x = -flash;
- break;
- case Direction.Right:
- x = flash;
- break;
- }
- for (var i = Size - 1; i >= 1; i--)
- {
- seg[i].X = seg[i - 1].X;
- seg[i].Y = seg[i - 1].Y;
- }
- seg[0].X += x;
- seg[0].Y += y;
- }
- }
- internal class Segment
- {
- public Segment(int x = 0, int y = 0)
- {
- X = x;
- Y = y;
- }
- public int X { get; set; }
- public int Y { get; set; }
- }
- internal enum Direction
- {
- Up,Down,Left,Right
- }
- }
Add Comment
Please, Sign In to add comment