private void btnDraw_Click(object sender, EventArgs e) { if (Creators.Count == 0) { return; } int i = Creators[SelectedFabric].CheckPoints(ref points); if (i > 0) { Creators[SelectedFabric].Painter = Painter; AbstractFigure Fig; Pen Pen = new Pen(PenColor.Color, PenColor.Width); Fig = Creators[SelectedFabric].GetFigure(Pen, points); Fig.Draw(); lvFigures.Items.Add(Fig.GetName()); FigList.AddToList(Fig); } else { MessageBox.Show("Неверно заданы точки!!"); } for (int j = 0; j < i; j++) { points.RemoveAt(0); } lblPointsN.Text = points.Count.ToString(); MainView.Image = Canvas; }
public void TestCalcCircleArea() { double r = 7.62f; var actual = Fig.CalcCircleArea(r); var expected = 182.41; Assert.AreEqual(Math.Round(actual, 2), expected); }
public void TestCalcTriangleArea() { double a = 5; double b = 4; double c = 3; var actual = Fig.CalcTriangleArea(a, b, c); var expected = 6; Assert.AreEqual(actual, expected); }
private static void FiguresPrint(List <Figure> ListOfFigures) { int flag = 0; foreach (Figure Fig in ListOfFigures) { Fig.PrintFigure(); flag = 1; } if (flag == 0) { Console.WriteLine("Холст чист."); } }
public void TransformFiguresAndMergeFaces() { foreach (Figure3D Fig in Figs) { Fig.ApplyTransform(this); Fig.BuildVBO(Fig == Selected); } if (Rays.Properties.Settings.Default.OctreeEnable) { MyOctree.MinFaceCountInNode = Rays.Properties.Settings.Default.OctreeMinFaces; MyOctree.MaxDeep = Rays.Properties.Settings.Default.OctreeDeepness; MyOctree.BuildTree(this); } BuildVBO(false); }
public void OnTrigger(GameClients.GameClient Session, Item Item, int Request, bool HasRights) { if (Item.ExtraData.Contains(Convert.ToChar(5).ToString())) { String[] Stuff = Item.ExtraData.Split(Convert.ToChar(5)); Session.GetHabbo().Gender = Stuff[0].ToUpper(); Dictionary <String, String> NewFig = new Dictionary <String, String>(); NewFig.Clear(); foreach (String Man in Stuff[1].Split('.')) { foreach (String Fig in Session.GetHabbo().Look.Split('.')) { if (Fig.Split('-')[0] == Man.Split('-')[0]) { if (NewFig.ContainsKey(Fig.Split('-')[0]) && !NewFig.ContainsValue(Man)) { NewFig.Remove(Fig.Split('-')[0]); NewFig.Add(Fig.Split('-')[0], Man); } else if (!NewFig.ContainsKey(Fig.Split('-')[0]) && !NewFig.ContainsValue(Man)) { NewFig.Add(Fig.Split('-')[0], Man); } } else { if (!NewFig.ContainsKey(Fig.Split('-')[0])) { NewFig.Add(Fig.Split('-')[0], Fig); } } } } string Final = ""; foreach (String Str in NewFig.Values) { Final += Str + "."; } Session.GetHabbo().Look = Final.TrimEnd('.'); using (IQueryAdapter dbClient = PlusEnvironment.GetDatabaseManager().GetQueryReactor()) { dbClient.SetQuery("UPDATE users SET look = @look, gender = @gender WHERE id = '" + Session.GetHabbo().Id + "' LIMIT 1"); dbClient.AddParameter("look", Session.GetHabbo().Look); dbClient.AddParameter("gender", Session.GetHabbo().Gender); dbClient.RunQuery(); } Room Room = Session.GetHabbo().CurrentRoom; if (Room != null) { RoomUser User = Room.GetRoomUserManager().GetRoomUserByHabbo(Session.GetHabbo().Id); if (User != null) { Session.SendMessage(new UserChangeComposer(User, true)); Session.GetHabbo().CurrentRoom.SendMessage(new UserChangeComposer(User, false)); } } } }
void ExplodeBomb(byte x, byte y, bool isatomic) { Log(new Event { type = EventType.Explode, from = new Cord(x, y), agr = field[x, y].fig, player = field[x, y].player }); field[x, y] = new Fig(); for (byte i = (byte)Math.Max(0, x - 2); i < Math.Min(14, x + 3); i++) { for (byte j = (byte)Math.Max(0, y - 2); j < Math.Min(14, y + 3); j++) { if (field[i, j].fig != FigType.Null) { if (isatomic) { Destroy(i, j); } else { Log(new Event { type = EventType.Destroy, from = new Cord(i, j), agr = FigType.Null, player = field[i, j].player }); field[i, j] = new Fig(field[i, j].fig, 0); } } } } }
private void Destroy(byte x, byte y) { Log(new Event { type = EventType.Destroy, from = new Cord(x, y), agr = field[x, y].fig, player = field[x, y].player }); field[x, y] = new Fig(); }
public void Shot(byte x, byte y, byte nx, byte ny, byte p, bool isaoe) { if (phase == PhaseType.Move && player == p) { if (IsCord(x) && IsCord(y) && IsCord(nx) && IsCord(ny)) { if (field[x, y].player == p) { if (field[nx, ny].player == Opponent(p) || (isaoe && field[x, y].fig == FigType.Rk && field[nx, ny].fig == FigType.Null)) { FigType target = field[nx, ny].fig; FigType agressor = field[x, y].fig; if (!PatronNear(x, y, agressor, p)) throw new IllegalActionException("Нет патрона рядом"); if (isaoe && agressor == FigType.Rk && (nx == x || ny == y) && Math.Abs(nx - x + ny - y) <= 2) { Log(new Event { type = EventType.Explode, from = new Cord(nx, ny), agr = FigType.Rk, player = p }); Destroy(x, y); ExplodeRocket(nx, ny, p); PhaseChange(PhaseType.Move, p); } else if (agressor == FigType.Br) { if (inverted) throw new IllegalActionException("Вы уже захватывали корабль в этот ход"); field[nx, ny] = new Fig(field[nx, ny].fig, p); Log(new Event { type = EventType.Shot, player = p, win = true, from = new Cord(x, y), to = new Cord(nx, ny), agr = FigType.Br, tar = target }); inverted = true; PhaseChange(PhaseType.Move, p); } else if ((agressor == FigType.Sm && (x == nx || y == ny || Math.Abs(x - nx) == Math.Abs(y - ny))) || (agressor == FigType.T && Torpedo(x, y, nx, ny)) || (agressor == FigType.Rk && target != FigType.Null && (nx == x || ny == y) && Math.Abs(nx - x + ny - y) <= 3)) { Log(new Event { type = EventType.Shot, agr = agressor, tar = target, from = new Cord(x, y), to = new Cord(nx, ny), win = target != FigType.F, player = p }); if (target == FigType.F) { PhaseChange(PhaseType.Move, Opponent(p)); } else { Destroy(nx, ny); PhaseChange(PhaseType.Move, p); } Destroy(x, y); } else throw new IllegalActionException("Невозможно попасть в эту клетку"); } else throw new IllegalActionException("Стрелять можно только по противнику"); } else throw new IllegalActionException("Нельзя стрелять чужим кораблем"); } else throw new IllegalActionException("Неверные координаты"); } else throw new IllegalActionException("Вы сейчас не можете стрелять"); }
public void Move(byte x, byte y, byte nx, byte ny, byte p) { int dist; if (phase == PhaseType.Move && player == p) { if (IsCord(x) && IsCord(y) && IsCord(nx) && IsCord(ny)) { if (field[x, y].player == p) { if (field[nx, ny].fig == FigType.Null) { if (field[x, y].fig != FigType.F) { dist = Math.Abs(nx - x) + Math.Abs(ny - y); if (dist != 1) { if (!(field[x, y].fig == FigType.T || field[x, y].fig == FigType.Tk)) throw new IllegalActionException("Слишком далеко"); bool flag = false; if (nx == x) { if (ny == y+2 && field[x, y+1].fig == FigType.Null) flag = true; else if (ny == y-2 && field[x, y-1].fig == FigType.Null) flag = true; } if (ny == y) { if (nx == x+2 && field[x+1, y].fig == FigType.Null) flag = true; else if (nx == x-2 && field[x-1, y].fig == FigType.Null) flag = true; } if (Math.Abs(nx - x) == 1 && Math.Abs(ny - y) == 1) if (field[x, ny].fig == FigType.Null || field[nx, y].fig == FigType.Null) flag = true; if (!flag) throw new IllegalActionException("Невозожно перейти в эту клетку"); } if (PatronNear(x, y, field[x, y].fig, p)) { if (PatronNear(nx, ny, field[x, y].fig, p)) { field[nx, ny] = new Fig(field[x, y].fig, p); field[x, y] = new Fig(); Log(new Event { type = EventType.Move, from = new Cord(x, y), to = new Cord(nx, ny), player = p }); PhaseChange(PhaseType.Attack, p); } else throw new IllegalActionException("Нельзя отходить от патрона"); } else throw new IllegalActionException("Нет патрона рядом"); } else throw new IllegalActionException("Вы пытаетесь передвинуть неподвижную фишку"); } else throw new IllegalActionException("Нельзя ходить на занятую клетку"); } else throw new IllegalActionException("Вы пытаетесь переместить корабль противника"); } else throw new IllegalActionException("Недопустимые координаты"); } else throw new IllegalActionException("Вы сейчас не можете перемещаться"); }
public void Displace(byte[,] f, byte p) { if (phase == PhaseType.Displacing && player != p) { for (int i = 0; i < 5; i++) { for (int j = 0; j < 14; j++) { field[i + (p == 1 ? 0 : 9), j] = new Fig((FigType)f[i, j], p); } } if (player == 0) { PhaseChange(PhaseType.Displacing, p); } else { Start(); PhaseChange(PhaseType.Move, 1); } } else throw new IllegalActionException("Вы уже не можете расставлять корабли"); }
public void Attack(byte x, byte y, byte nx, byte ny, byte p) { if (phase == PhaseType.Attack && player == p) { if (field[x, y].player == p) { if (x == nx && y == ny && (field[x, y].fig == FigType.AB || field[x, y].fig == FigType.NB)) { ExplodeBomb(x, y, field[x, y].fig == FigType.AB); PhaseChange(PhaseType.Move, p); } else if (Math.Abs(nx - x) + Math.Abs(ny - y) == 1) { if (field[nx, ny].player == 0 && field[nx, ny].fig != FigType.Null) { field[nx, ny] = new Fig(field[nx, ny].fig, p); Log(new Event { type = EventType.Capture, from = new Cord(x, y), to = new Cord(nx, ny), player = p }); PhaseChange(PhaseType.Move, Opponent(p)); } else if (field[nx, ny].player == Opponent(p)) { FigType oppfig = field[nx, ny].fig; FigType fig = field[x, y].fig; if (fig == FigType.Av || fig == FigType.Es || fig == FigType.Kr || fig == FigType.KrPl || fig == FigType.Lk || fig == FigType.Pl || fig == FigType.Rd || fig == FigType.St || fig == FigType.Tk || fig == FigType.Tp || fig == FigType.Tr) { if (oppfig == FigType.F) { Destroy(nx, ny); PhaseChange(PhaseType.Move, p); } else if (oppfig == FigType.Rk || oppfig == FigType.Sm) { Destroy(x, y); Destroy(nx, ny); PhaseChange(PhaseType.Move, Opponent(p)); } else if (oppfig == FigType.Mn || oppfig == FigType.T || oppfig == FigType.Br) { if (fig == FigType.Tr) { Destroy(nx, ny); PhaseChange(PhaseType.Move, p); } else { Destroy(x, y); Destroy(nx, ny); PhaseChange(PhaseType.Move, Opponent(p)); } } else if (oppfig == FigType.AB || oppfig == FigType.NB) { ExplodeBomb(nx, ny, oppfig == FigType.AB); PhaseChange(PhaseType.Move, Opponent(p)); } else { if (oppfig == FigType.KrPl || oppfig == FigType.Pl || oppfig == FigType.Tp) { if (fig == oppfig) { EventAttack(x, y, nx, ny, false, p); Destroy(x, y); Destroy(nx, ny); PhaseChange(PhaseType.Move, Opponent(p)); } if (oppfig == FigType.Tp || (oppfig == FigType.Pl && fig != FigType.Lk) || (oppfig == FigType.KrPl && (fig == FigType.Kr || fig == FigType.Es || fig == FigType.Rd))) { EventAttack(x, y, nx, ny, true, p); Destroy(nx, ny); PhaseChange(PhaseType.Move, p); } else { EventAttack(x, y, nx, ny, false, p); Destroy(x, y); PhaseChange(PhaseType.Move, Opponent(p)); } } else { blocks[0] = null; blocks[1] = null; inask[p-1] = new Cord(x, y); inask[Opponent(p)-1] = new Cord(nx, ny); PhaseChange(PhaseType.Asking, p); } } } else throw new IllegalActionException("Этим кораблем нельзя атаковать"); } else throw new IllegalActionException("Атаковать можно только корабль противника"); } else throw new IllegalActionException("Слишком далеко"); } else throw new IllegalActionException("Вы пытаетесь атаковать кораблем противника"); } else throw new IllegalActionException("Вы сейчас не можете атаковать"); }
public void Add(int x, int y, Fig fig) { bufferx.Add(x); buffery.Add(y); bufferfig[0].Add((int)fig.fig+fig.player*100); if (fig.fig == FigType.Null) { bufferfig[1].Add((int)FigType.Null); bufferfig[2].Add((int)FigType.Null); } else if (fig.player == 0) { bufferfig[1].Add((int)FigType.Sinking); bufferfig[2].Add((int)FigType.Sinking); } else { bufferfig[fig.player].Add((int)fig.fig); bufferfig[fig.player == 1 ? 2 : 1].Add((int)FigType.Unknown); } game.WriteHistory(String.Join(":", x, y, (int)fig.fig, fig.player)); }