public CollisionData(MatrixCoords CollisionForceDirection, string objectCollisionGroupString) { this.CollisionForceDirection = CollisionForceDirection; this.hitObjectsCollisionGroupStrings = new List<string>(); this.hitObjectsCollisionGroupStrings.Add(objectCollisionGroupString); }
public GameObject(MatrixCoords topLeft, char[,] body) { this.TopLeft = topLeft; int imageRows = body.GetLength(0); int imageCols = body.GetLength(1); this.body = this.CopyBodyMatrix(body); this.IsDestroyed = false; }
public CollisionData(MatrixCoords collisionForceDirection, List<string> hitObjectsCollisionGroupStrings) { this.CollisionForceDirection = collisionForceDirection; this.hitObjectsCollisionGroupStrings = new List<string>(); foreach (var str in hitObjectsCollisionGroupStrings) { this.hitObjectsCollisionGroupStrings.Add(str); } }
public void DoNotEating() { foreach (var uneatable in DoNotEatingList) { if (uneatable.TopLeft.Row == this.topLeft.Row && uneatable.TopLeft.Col == this.topLeft.Col) { this.Speed = new MatrixCoords(0, 0); SnakeHead.playing = false; } } }
public IndestructableWall(MatrixCoords topLeft) : base(topLeft, new char[,] { { '#' } }) { Console.ForegroundColor = ConsoleColor.Green; }
public SnakeHead(MatrixCoords topLeft, MatrixCoords speed, int tailLength) : base(topLeft,new char[,]{{'O'}}, speed) { this.Speed = new MatrixCoords(speed.Row, speed.Col); this.tailLength = tailLength; }
public FoodForSnake(MatrixCoords topLeft) : base(topLeft, new char[,] { { '@' } }) { //Console.ForegroundColor = ConsoleColor.Yellow; }
public MovingObject(MatrixCoords topLeft, char[,] body, MatrixCoords speed) : base(topLeft, body) { this.Speed = speed; }
private static void HandleMovingWithStaticCollisions(List<MovingObject> movingObjects, List<GameObject> staticObjects) { foreach (var movingObject in movingObjects) { int verticalIndex = VerticalCollisionIndex(movingObject, staticObjects); int horizontalIndex = HorizontalCollisionIndex(movingObject, staticObjects); MatrixCoords movingCollisionForceDirection = new MatrixCoords(0, 0); if (verticalIndex != -1) { movingCollisionForceDirection.Row = -movingObject.Speed.Row; staticObjects[verticalIndex].RespondToCollision( new CollisionData(new MatrixCoords(movingObject.Speed.Row, 0), movingObject.GetCollisionGroupString()) ); } if (horizontalIndex != -1) { movingCollisionForceDirection.Col = -movingObject.Speed.Col; staticObjects[horizontalIndex].RespondToCollision( new CollisionData(new MatrixCoords(0, movingObject.Speed.Col), movingObject.GetCollisionGroupString()) ); } int diagonalIndex = -1; if (horizontalIndex == -1 && verticalIndex == -1) { diagonalIndex = DiagonalCollisionIndex(movingObject, staticObjects); if (diagonalIndex != -1) { movingCollisionForceDirection.Row = -movingObject.Speed.Row; movingCollisionForceDirection.Col = -movingObject.Speed.Col; staticObjects[diagonalIndex].RespondToCollision( new CollisionData(new MatrixCoords(movingObject.Speed.Row,0), movingObject.GetCollisionGroupString()) ); } List<string> hitByMovingCollisionGroups = new List<string>(); if (verticalIndex != -1) { hitByMovingCollisionGroups.Add(staticObjects[verticalIndex].GetCollisionGroupString()); } if(horizontalIndex != -1) { hitByMovingCollisionGroups.Add(staticObjects[horizontalIndex].GetCollisionGroupString()); } if(diagonalIndex != -1) { hitByMovingCollisionGroups.Add(staticObjects[diagonalIndex].GetCollisionGroupString()); } if (verticalIndex != -1 || horizontalIndex != -1 || diagonalIndex != -1) { movingObject.RespondToCollision( new CollisionData(movingCollisionForceDirection, hitByMovingCollisionGroups) ); } } } }
public TrailObject(MatrixCoords topLeft, char[,] body, int lifeTime) : base(topLeft, new char[,] { { '+' } }) { this.lifeTime = lifeTime; }
public Score(MatrixCoords topLeft, char[,] body) : base(topLeft, body) { }