public PrivateData(Point p, Critter.Direction d, int infectCount, Color color, string _string) { this.p = p; this.direction = d; this.infectCount = infectCount; this.color = color; this._string = _string; }
private Info getInfo(PrivateData data, Type original) { Critter.Neighbor[] neighbors = new Critter.Neighbor[4]; Critter.Direction d = data.direction; for (int i = 0; i < 4; i++) { neighbors[i] = getStatus(pointAt(data.p, d), original); d = rotate(d); } return(new Info(neighbors, data.direction, data.infectCount)); }
public void add(int number, Type critter) { Random r = new Random(); Critter.Direction[] directions = (Critter.Direction[])Enum.GetValues(typeof(Critter.Direction)); if (info.Count + number > width * height) { throw new SystemException("adding too many critters"); } for (int i = 0; i < number; i++) { Critter next; try { next = makeCritter(critter); } catch (Exception e) { Console.WriteLine("ERROR: " + critter + " threw an " + " exception in its constructor."); Environment.Exit(-1); return; } int x, y; do { x = r.Next(width); y = r.Next(height); } while (grid[x, y] != null); grid[x, y] = next; Critter.Direction d = directions[r.Next(directions.Length)]; info.Add(next, new PrivateData(new Point(x, y), d, 0, next.getColor(), next.toString())); } string name = critter.Name; if (!critterCount.ContainsKey(name)) { critterCount.Add(name, number); } else { critterCount.Add(name, critterCount[name] + number); } }
private Point pointAt(Point p, Critter.Direction d) { if (d == Critter.Direction.NORTH) { return(new Point(p.X, p.Y - 1)); } else if (d == Critter.Direction.SOUTH) { return(new Point(p.X, p.Y + 1)); } else if (d == Critter.Direction.EAST) { return(new Point(p.X + 1, p.Y)); } else { return(new Point(p.X - 1, p.Y)); } }
// returns the result of rotating the given direction clockwise private Critter.Direction rotate(Critter.Direction d) { if (d == Critter.Direction.NORTH) { return(Critter.Direction.EAST); } else if (d == Critter.Direction.SOUTH) { return(Critter.Direction.WEST); } else if (d == Critter.Direction.EAST) { return(Critter.Direction.SOUTH); } else { return(Critter.Direction.NORTH); } }
public Info(Critter.Neighbor[] neighbors, Critter.Direction d, int infectCount) { this.neighbors = neighbors; this.direction = d; this.infectCount = infectCount; }