Example #1
0
        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);
        }
Example #4
0
        private static void FiguresPrint(List <Figure> ListOfFigures)
        {
            int flag = 0;

            foreach (Figure Fig in ListOfFigures)
            {
                Fig.PrintFigure();
                flag = 1;
            }
            if (flag == 0)
            {
                Console.WriteLine("Холст чист.");
            }
        }
Example #5
0
        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);
        }
Example #6
0
        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));
                    }
                }
            }
        }
Example #7
0
 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);
                 }
             }
         }
     }
 }
Example #8
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();
 }
Example #9
0
 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("Вы сейчас не можете стрелять");
 }
Example #10
0
 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("Вы сейчас не можете перемещаться");
 }
Example #11
0
 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("Вы уже не можете расставлять корабли");
 }
Example #12
0
        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("Вы сейчас не можете атаковать");
        }
Example #13
0
 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));
 }