Exemple #1
0
        static void jatekosMeghal(Jatekos aldozat, UInt32 tettesJatekosID)
        {
            if (!aldozat.Ele)
            {
                return;
            }

            Jatekos j;
            String  tettesNev;

            if (!Jatekosok.TryGetValue(tettesJatekosID, out j))
            {
                tettesNev = "Ismeretlen";
            }
            else
            {
                tettesNev = j.Nev;
            }

            aldozat.Ele = false;

            csomiSzoras(
                new ChatCsomi(
                    aldozat.ID,
                    String.Format(
                        "Jajj meghaltam, Tettes:{0}",
                        tettesNev
                        )
                    )
                );
        }
Exemple #2
0
 public Bomba(Jatekos jatekos, uint x, uint y)
 {
     this.Rendzs     = jatekos.Rendzs;
     this.Jatekos_ID = jatekos.ID;
     this.x          = x;
     this.y          = y;
 }
Exemple #3
0
        static void Main(string[] args)
        {
            szerverneve = Console.ReadLine();
            info        = new Thread(new ThreadStart(info_szal));
            info.Start();

            TcpListener tl = new TcpListener(60000);

            tl.Start();//halgatozás inditása


            palya_init(35, 35);
            // jatekos_pozicio_generalas

            while (true)//csatlakozos cikls
            {
                if (tl.Pending())
                {
                    Jatekos j = new Jatekos()
                    {
                        ID           = Jatekos_ID_Szamlalo++,
                        Nev          = "",
                        Rendzs       = 1,
                        Maxbombaszam = 1,
                        Ele          = true,
                        Sebesseg     = 1,
                        Uzisor       = new ConcurrentQueue <string>(),
                        tcp          = tl.AcceptTcpClient(),
                        thread       = new Thread(new ParameterizedThreadStart(jatekos_szal))
                    };
                    Jatekosok.Add(j.ID, j);

                    j.thread.Start(j);
                }
                if (Console.KeyAvailable)
                {
                    if (Console.ReadKey().KeyChar == 's')
                    {
                        break;
                    }
                }
            }

            szerverjatekben = true;


            jatekos_pozicio_generalas();

            while (true)
            {
                bomba_check();
                lang_check();
                // palya_kirajzol();
                System.Threading.Thread.Sleep(50);
            }
        }
Exemple #4
0
        static bool jatekos_lep(uint uj_x, uint uj_y, Jatekos j)
        {
            if (
                uj_y < 0
                ||
                uj_x < 0
                ||
                uj_y >= palya_magassag
                ||
                uj_x >= palya_szelesseg
                )
            {
                return(false);
            }

            lock (Palya)
            {
                switch (Palya[uj_x, uj_y - 1].Tipus)
                {
                case CellaTipus.Ures: break;

                case CellaTipus.Fal: return(false);;

                case CellaTipus.Robbanthato_Fal: return(false);;

                case CellaTipus.Bomba: return(false);;

                case CellaTipus.Lang:
                    j.Ele = false;
                    break;

                case CellaTipus.Bomba_Kartya:
                    j.Maxbombaszam         += 1;
                    Palya[uj_x, uj_y].Tipus = CellaTipus.Ures;
                    break;

                case CellaTipus.Lang_Kartya:
                    j.Rendzs += 1;
                    Palya[uj_x, uj_y].Tipus = CellaTipus.Ures;
                    break;

                case CellaTipus.Halalfej_Kartya: break;

                case CellaTipus.Sebesseg_Kartya: break;

                case CellaTipus.Lab_Kartya: break;

                case CellaTipus.Kesztyu_Kartya: break;
                }
            }
            return(true);
        }
Exemple #5
0
        static void jatekos_pozicio_generalas()
        {
            uint x_db = (palya_szelesseg - 2 - 1) / 2;
            uint y_db = (palya_magassag - 2 - 1) / 2;

            for (int i = 0; i < Jatekosok.Count; i++)
            {
                while (true)
                {
                    uint x = (uint)(1 + r.Next((int)x_db) * 2);
                    uint y = (uint)(1 + r.Next((int)y_db) * 2);

                    bool talaltunke = false;

                    for (int j = 0; j < i; j++)
                    {
                        Jatekos jj = Jatekosok.Values.ElementAt(j);
                        if (jj.x == x && jj.y == y)
                        {
                            talaltunke = true;
                            break;
                        }
                    }

                    if (!talaltunke)
                    {
                        Jatekos jj = Jatekosok.Values.ElementAt(i);
                        jj.x = x;
                        jj.y = y;
                        // Jatekosok[jj.ID] = jj;
                        Palya[x, y].Tipus     = CellaTipus.Ures;
                        Palya[x + 1, y].Tipus = CellaTipus.Ures;
                        Palya[x, y + 1].Tipus = CellaTipus.Ures;
                        break;
                    }
                }
            }

            /*foreach (Jatekos j in Jatekosok.Values.ToList())
             *  Console.WriteLine("ID={0} Nev={1} x={2} y={3}", j.ID, j.Nev, j.x, j.y);
             */
        }
Exemple #6
0
        static void bomba_telepites(Jatekos jatekos)
        {
            if (jatekos.Actbombaszam >= jatekos.Maxbombaszam)
            {
                return;
            }

            if (!palya.uresE(jatekos.x, jatekos.y))
            {
                return;
            }

            Bomba b = new Bomba(jatekos, jatekos.x, jatekos.y);

            Bombak.Add(b.ID, b);

            palya.bombaTelepit(b);

            jatekos.Actbombaszam++;
        }
Exemple #7
0
 public JatekosAdatokCsomi(Jatekos Jatekos)
     : base(Server_Uzi_Tipusok.Jatekos_Adatok)
 {
     this.Jatekos = Jatekos;
 }
Exemple #8
0
        static void jatekos_szal(Object param)
        {
            Jatekos j = (Jatekos)param;

            try
            {
                using (BinaryWriter bw = new BinaryWriter(j.tcp.GetStream()))
                {
                    using (BinaryReader br = new BinaryReader(j.tcp.GetStream()))
                    {
                        bool Bemutatkozott = false;

                        while (true)
                        {
                            if (j.tcp.Available > 0)
                            {
                                int uzi_tipus = br.Read();
                                switch ((Jatekos_Uzi_Tipusok)uzi_tipus)
                                {
                                case Jatekos_Uzi_Tipusok.Bemutatkozik:
                                    j.Nev = br.ReadString();
                                    int r = br.ReadByte();
                                    int g = br.ReadByte();
                                    int b = br.ReadByte();
                                    j.Szin = System.Drawing.Color.FromArgb(r, g, b);
                                    break;

                                case Jatekos_Uzi_Tipusok.Lep_Fel:
                                    if (!Bemutatkozott)
                                    {
                                        break;
                                    }

                                    if (!j.Ele)
                                    {
                                        break;
                                    }


                                    if (jatekos_lep(j.x, j.y - 1, j))
                                    {
                                        j.y -= 1;
                                    }

                                    break;

                                case Jatekos_Uzi_Tipusok.Lep_Jobbra:
                                    if (!Bemutatkozott)
                                    {
                                        break;
                                    }
                                    if (!j.Ele)
                                    {
                                        break;
                                    }

                                    if (jatekos_lep(j.x, j.y - 1, j))
                                    {
                                        j.x += 1;
                                    }
                                    break;


                                case Jatekos_Uzi_Tipusok.Lep_Le:
                                    if (!Bemutatkozott)
                                    {
                                        break;
                                    }

                                    if (!j.Ele)
                                    {
                                        break;
                                    }

                                    if (jatekos_lep(j.x, j.y - 1, j))
                                    {
                                        j.y += 1;
                                    }
                                    break;


                                case Jatekos_Uzi_Tipusok.Lep_Balra:
                                    if (!Bemutatkozott)
                                    {
                                        break;
                                    }
                                    if (!j.Ele)
                                    {
                                        break;
                                    }
                                    if (jatekos_lep(j.x, j.y - 1, j))
                                    {
                                        j.x -= 1;
                                    }
                                    break;

                                case Jatekos_Uzi_Tipusok.Bombat_rak:
                                    if (!Bemutatkozott)
                                    {
                                        break;
                                    }

                                    if (!j.Ele)
                                    {
                                        break;
                                    }

                                    bomba_telepites(j.ID, j.x, j.y);
                                    break;


                                case Jatekos_Uzi_Tipusok.Chat:
                                    String uzike = br.ReadString();
                                    String s     = String.Format("{0}({1}):{2}", j.Nev, j.ID, uzike);
                                    Console.WriteLine(s);
                                    uzi_szoras(s);
                                    break;
                                }
                            }
                            String uzi;

                            if (j.Uzisor.TryDequeue(out uzi))
                            {
                                bw.Write((byte)Server_Uzi_Tipusok.Chat);
                                bw.Write(uzi);
                                bw.Flush();
                            }
                            bw.Write((byte)Server_Uzi_Tipusok.Jatekosok_Pozicioja);


                            foreach (Jatekos jj in Jatekosok.Values.ToList())
                            {
                                bw.Write(jj.ID);
                                bw.Write(jj.Nev);
                                bw.Write(jj.Ele);
                                bw.Write(jj.Szin.R);
                                bw.Write(jj.Szin.G);
                                bw.Write(jj.Szin.B);
                                bw.Write(jj.x);
                                bw.Write(jj.y);
                            }

                            bw.Write((uint)0);

                            bw.Flush();

                            bw.Write((byte)Server_Uzi_Tipusok.Palyakep);

                            bw.Write(palya_szelesseg);
                            bw.Write(palya_magassag);

                            byte[] t = new byte[palya_szelesseg * palya_magassag];

                            for (int y = 0, tidx = 0; y < palya_magassag; y++)
                            {
                                for (int x = 0; x < palya_szelesseg; x++)
                                {
                                    t[tidx++] = (byte)Palya[x, y].Tipus;
                                }
                            }

                            bw.Write(t);
                            bw.Flush();

                            System.Threading.Thread.Sleep(20);
                        }
                    }
                }
            }
            catch
            { }
            finally
            {
                Jatekosok.Remove(j.ID);
            }
        }
Exemple #9
0
        static void jatekos_szal(Object param)
        {
            Jatekos j = (Jatekos)param;

            try
            {
                using (BinaryWriter bw = new BinaryWriter(j.tcp.GetStream()))
                {
                    using (BinaryReader br = new BinaryReader(j.tcp.GetStream()))
                    {
                        bool Bemutatkozott = false;

                        while (true)
                        {
                            if (j.tcp.Available > 0)
                            {
                                int uzi_tipus = br.ReadByte();
                                switch ((Jatekos_Uzi_Tipusok)uzi_tipus)
                                {
                                case Jatekos_Uzi_Tipusok.Bemutatkozik:
                                    Bemutatkozott = true;
                                    j.Nev         = br.ReadString();
                                    UInt32 hossz = br.ReadUInt32();
                                    j.Arc = br.ReadBytes((int)hossz);

                                    csomiSzoras(new JatekosAdatokCsomi(j));
                                    csomiSzoras(new ChatCsomi(j.ID, "***BELÉPETT**"));
                                    break;

                                case Jatekos_Uzi_Tipusok.Lep_Fel:
                                case Jatekos_Uzi_Tipusok.Lep_Jobbra:
                                case Jatekos_Uzi_Tipusok.Lep_Le:
                                case Jatekos_Uzi_Tipusok.Lep_Balra:
                                    if (!Bemutatkozott)
                                    {
                                        break;
                                    }
                                    if (!j.Ele)
                                    {
                                        break;
                                    }
                                    jatekos_lep(j, (Jatekos_Uzi_Tipusok)uzi_tipus);
                                    break;

                                case Jatekos_Uzi_Tipusok.Bombat_rak:
                                    if (!Bemutatkozott)
                                    {
                                        break;
                                    }
                                    if (!j.Ele)
                                    {
                                        break;
                                    }
                                    bomba_telepites(j);
                                    break;

                                case Jatekos_Uzi_Tipusok.Chat:
                                    String uzike = br.ReadString();
                                    csomiSzoras(new ChatCsomi(j.ID, uzike));
                                    break;
                                }
                            }

                            j.CsomiSor.Enqueue(new JatekosokPoziciojaCsomi(Jatekosok.Values.ToList()));
                            j.CsomiSor.Enqueue(new PalyakepCsomi(palya));

                            Csomi tmp;

                            while (j.CsomiSor.TryDequeue(out tmp))
                            {
                                tmp.becsomagol(bw);
                            }

                            System.Threading.Thread.Sleep(25);
                        }
                    }
                }
            }
            catch
            {
                csomiSzoras(new ChatCsomi(j.ID, "***TCP CONNECTION KILLED***"));
            }
            finally
            {
                Jatekosok.Remove(j.ID);
                csomiSzoras(new ChatCsomi(j.ID, "***CLOSED***"));
            }

            Jatekosok.Remove(j.ID);
        }
Exemple #10
0
        static void jatekos_lep(Jatekos j, Jatekos_Uzi_Tipusok irany)
        {
            uint uj_x = j.x;
            uint uj_y = j.y;

            switch (irany)
            {
            case Jatekos_Uzi_Tipusok.Lep_Jobbra:
                uj_x++;
                if (uj_x >= palya.Szelesseg)
                {
                    uj_x = 0;
                }
                break;

            case Jatekos_Uzi_Tipusok.Lep_Le:
                uj_y++;
                if (uj_y >= palya.Magassag)
                {
                    uj_y = 0;
                }
                break;

            case Jatekos_Uzi_Tipusok.Lep_Balra:
                if (uj_x == 0)
                {
                    uj_x = palya.Szelesseg - 1;
                }
                else
                {
                    uj_x--;
                }
                break;

            case Jatekos_Uzi_Tipusok.Lep_Fel:
                if (uj_y == 0)
                {
                    uj_y = palya.Magassag - 1;
                }
                else
                {
                    uj_y--;
                }
                break;
            }

            lock (palya)
            {
                switch (palya.Cellak[uj_x, uj_y].Tipus)
                {
                case CellaTipus.Ures: break;

                case CellaTipus.Fal: return;

                case CellaTipus.Robbanthato_Fal: return;

                case CellaTipus.Bomba:
                    if (j.Lab == 0)
                    {
                        return;
                    }

                    Bomba b;

                    if (!Bombak.TryGetValue(palya.Cellak[uj_x, uj_y].Bomba_ID, out b))
                    {
                        return;
                    }

                    if (!bombaMozgat(b, irany))
                    {
                        return;
                    }

                    j.x = uj_x;
                    j.y = uj_y;

                    for (int i = (int)j.Lab - 1; i > 0; i--)
                    {
                        if (!bombaMozgat(b, irany))
                        {
                            return;
                        }
                    }
                    break;

                case CellaTipus.Lang:
                    UInt32 langid = palya.Cellak[uj_x, uj_y].Lang_ID;

                    Lang l;

                    if (Langok.TryGetValue(langid, out l))
                    {
                        jatekosMeghal(j, l.Jatekos_ID);
                    }
                    else
                    {
                        jatekosMeghal(j, 0);
                    }

                    break;

                case CellaTipus.Bomba_Kartya:
                    j.Maxbombaszam += 1;
                    palya.cellaTorol(uj_x, uj_y);
                    break;

                case CellaTipus.Lang_Kartya:
                    j.Rendzs += 1;
                    palya.cellaTorol(uj_x, uj_y);
                    break;

                case CellaTipus.Halalfej_Kartya: break;

                case CellaTipus.Sebesseg_Kartya: break;

                case CellaTipus.Lab_Kartya:
                    j.Lab += 1;
                    palya.cellaTorol(uj_x, uj_y);
                    break;

                case CellaTipus.Kesztyu_Kartya: break;
                }
            }

            j.x = uj_x;
            j.y = uj_y;
        }
Exemple #11
0
        static void Main(string[] args)
        {
            palya.betolt("palya1.png");
            palya.robbanthatoFalGeneralas(0.7);

            //szerverneve = Console.ReadLine();
            szerverneve = "Szerver";
            Console.WriteLine("szerver elindult {0} néven", szerverneve);
            info = new Thread(new ThreadStart(info_szal));
            info.Start();

            TcpListener tl = new TcpListener(60000);

            tl.Start();

            while (true) // Csatalakozós ciklus
            {
                if (tl.Pending())
                {
                    Jatekos j = new Jatekos()
                    {
                        tcp    = tl.AcceptTcpClient(),
                        thread = new Thread(new ParameterizedThreadStart(jatekos_szal))
                    };
                    j.CsomiSor.Enqueue(new ChatCsomi(0, "Üdv a világomban!"));

                    foreach (Jatekos tmpj in Jatekosok.Values.ToList())
                    {
                        j.CsomiSor.Enqueue(new JatekosAdatokCsomi(tmpj));
                    }

                    Jatekosok.Add(j.ID, j);

                    j.thread.Start(j);
                }

                if (Console.KeyAvailable)
                {
                    if (Console.ReadKey().KeyChar == 's')
                    {
                        break;
                    }
                }
            }

            szerverjatekban = true;

            jatekos_pozicio_generalas();

            while (true)
            {
                bomba_check();
                lang_check();
                palya.kirajzol();

                int tmp = 0;
                foreach (Jatekos j in Jatekosok.Values.ToList())
                {
                    if (j.Ele)
                    {
                        tmp++;
                    }
                }

                if (tmp < 2)
                {
                    palya.cellakTorol();
                    palya.robbanthatoFalGeneralas(0.7);
                    Bombak.Clear();
                    Langok.Clear();

                    foreach (Jatekos j in Jatekosok.Values.ToList())
                    {
                        j.kezdoAllapot();
                    }

                    jatekos_pozicio_generalas();
                }

                System.Threading.Thread.Sleep(50);
            }
        }