static void GetXYFromDirection(DirectionKey dkey, out byte x, out byte y) { if (dkey.HasFlag(DirectionKey.Left) && !dkey.HasFlag(DirectionKey.Right)) { x = STICK_MIN; } else if (!dkey.HasFlag(DirectionKey.Left) && dkey.HasFlag(DirectionKey.Right)) { x = STICK_MAX; } else { x = STICK_CENTER; } if (dkey.HasFlag(DirectionKey.Up) && !dkey.HasFlag(DirectionKey.Down)) { y = STICK_MIN; } else if (!dkey.HasFlag(DirectionKey.Up) && dkey.HasFlag(DirectionKey.Down)) { y = STICK_MAX; } else { y = STICK_CENTER; } }
public static Key RStick(DirectionKey dkey) { byte x, y; GetXYFromDirection(dkey, out x, out y); return(RStick(x, y)); }
private void Direction(DirectionKey dkey, bool down, ref DirectionKey flags, Func <byte, byte, ECKey> getkey) { if (down) { flags |= dkey; } else { flags &= ~dkey; } GetXYFromDirection(flags, out byte x, out byte y); Down(getkey(x, y)); }
public void culebritaTest() { Console.Title = "Culebrita Cola Circular"; DirectionKey direction = new DirectionKey(); ColaCircular cirular = new ColaCircular(); var punteo = 0; var velocidad = 80; var posiciónComida = Point.Empty; var tamañoPantalla = new Size(60, 20); var longitudCulebra = 15; var posiciónActual = new Point(0, 9); cirular.insertar(posiciónActual); var dirección = DirectionKey.Direction.Derecha; direction.DibujaPantalla(tamañoPantalla); direction.MuestraPunteo(punteo); while (MoverLaCulebrita1(cirular, posiciónActual, longitudCulebra, tamañoPantalla)) { if (velocidad > 0) { Thread.Sleep(velocidad); } dirección = direction.ObtieneDireccion(dirección); posiciónActual = direction.ObtieneSiguienteDireccion(dirección, posiciónActual); if (posiciónActual.Equals(posiciónComida)) { posiciónComida = Point.Empty; longitudCulebra++;; punteo += 10; direction.MuestraPunteo(punteo); Console.Beep(); velocidad -= 3; } if (posiciónComida == Point.Empty) { posiciónComida = MostrarComida1(tamañoPantalla, cirular); } } Console.ResetColor(); Console.SetCursorPosition(tamañoPantalla.Width / 2 - 4, tamañoPantalla.Height / 2); Console.Write("Fin del Juego"); Thread.Sleep(2000); new Game().Start(); }
void Direction(DirectionKey dkey, bool down, ref DirectionKey flags, Func <byte, byte, Key> getkey) { var oldflags = flags; if (down) { flags |= dkey; } else { flags &= ~dkey; } byte x, y; GetXYFromDirection(flags, out x, out y); Down(getkey(x, y)); }
static HAT GetHATFromDirection(DirectionKey dkey) { if (dkey.HasFlag(DirectionKey.Up) && dkey.HasFlag(DirectionKey.Down)) { dkey &= ~DirectionKey.Up & ~DirectionKey.Down; } if (dkey.HasFlag(DirectionKey.Left) && dkey.HasFlag(DirectionKey.Right)) { dkey &= ~DirectionKey.Left & ~DirectionKey.Right; } if (dkey == DirectionKey.Up) { return(HAT.TOP); } if (dkey == DirectionKey.Down) { return(HAT.BOTTOM); } if (dkey == DirectionKey.Left) { return(HAT.LEFT); } if (dkey == DirectionKey.Right) { return(HAT.RIGHT); } if (dkey.HasFlag(DirectionKey.Up) && dkey.HasFlag(DirectionKey.Left)) { return(HAT.TOP_LEFT); } if (dkey.HasFlag(DirectionKey.Up) && dkey.HasFlag(DirectionKey.Right)) { return(HAT.TOP_RIGHT); } if (dkey.HasFlag(DirectionKey.Down) && dkey.HasFlag(DirectionKey.Left)) { return(HAT.BOTTOM_LEFT); } if (dkey.HasFlag(DirectionKey.Down) && dkey.HasFlag(DirectionKey.Right)) { return(HAT.BOTTOM_RIGHT); } return(HAT.CENTER); }
public void RightDirection(DirectionKey dkey, bool down) { Direction(dkey, down, ref _rightStick, Key.RStick); }
public void LeftDirection(DirectionKey dkey, bool down) { Direction(dkey, down, ref _leftStick, Key.LStick); }
public static Key HAT(DirectionKey dkey) { return(HAT(GetHATFromDirection(dkey))); }
protected abstract KeyControl GetKeyControl(DirectionKey key);