Социальная интеллектуальная игра «ЗаБотань!»

Автор работы: Пользователь скрыл имя, 18 Декабря 2013 в 18:34, курсовая работа

Описание работы

Идея совместить популярные игровые механики и интеллектуальное развитие пришла ко мне ещё в 8-ом классе. Для реализации мечты не хватало опыта и единомышленников. БГУИР дал мне и то, и то другое. Я знал, что проект должен быть прост в реализации, а порог входа на выбранный рынок должен быть как можно ниже. И я выбрал рынок социальных игр.

Содержание работы

Введение 3
Классификация игры, сюжет и миссия 4
Структура программы 5
Диаграмма классов 6
Основные алгоритмы 7
Описание игрового процесса 9
Описание игровых вещей Ошибка! Закладка не определена.12
Описание игрового баланса Ошибка! Закладка не определена.13
Заключение 14
Литература 15
Исходный код…………………………………………….…………………………………………….16

Файлы: 1 файл

Пояснительная записка Заботань!.docx

— 739.55 Кб (Скачать файл)

                return;

            }

            #endregion

 

            #region valid - если друга уже пригласили

            if (friend.Fight.FriendInvite != null || friend.Fight.IsFriendInviteSend)

            {

                Packet pak = c.pak;

                pak.Clear();

                pak.Addint16(PacketCommand.SEND_LOCATION_GOFVF);

                pak.Addbyte((byte)SendFvfMessage.FRIEND_ISINVITED);

                pak.Send(c);

                Log.Write(EType.Packet, "{0} {1}, message: {2}", c.ID, "<-GoFvf", SendFvfMessage.FRIEND_ISINVITED);

                return;

            }

            #endregion

 

            #region проверяем, приглашал ли игрок еще кого-нибудь

            for(int i=0;i<WorldServer.world_players.Count;i++)

            {

                Client cl = WorldServer.world_players[i];

                if (cl.Fight.FriendInvite == c)

                {

                    cl.Fight.FriendInvite = null;

                }

            }

            #endregion

 

 

            c.SetFlag(PlayerFlags.FVF);

            c.Fight.BeginWeit();

            friend.Fight.FriendInvite = c;

 

            if (friend.Fight.Status != FightStatus.None)

            {

                Packet pak = c.pak;

                pak.Clear();

                pak.Addint16(PacketCommand.SEND_LOCATION_GOFVF);

                pak.Addbyte((byte)SendFvfMessage.FRIEND_INFIGHT);

                pak.Send(c);

                Log.Write(EType.Packet, "{0} {1}, message: {2}", c.ID, "<-GoFvf", SendFvfMessage.FRIEND_INFIGHT);

            }

            else

            {

                Packet pak = c.pak;

                pak.Clear();

                pak.Addint16(PacketCommand.SEND_LOCATION_GOFVF);

                pak.Addbyte((byte)SendFvfMessage.OK);

                pak.Send(c);

                Log.Write(EType.Packet, "{0} {1}, message: {2}", c.ID, "<-GoFvf", SendFvfMessage.OK);

            }

 

            #region ValidTask

            int taskID = 7;

            List<STask> task = c.Tasks.Where(n => n.ID == taskID && !n.Complete).ToList();

            if (task.Count == 1)

            {

                STask t = task[0];

                t.SetComplete();

                for (int i = 0; i < c.Tasks.Count; i++)

                    if (c.Tasks[i].ID == t.ID)

                    {

                        c.Tasks[i] = t;

                        break;

                    }

            }

            #endregion

        }

 

        public static void SendFriendCancel(Client c)

        {

            Packet pak = c.pak;

            pak.Clear();

            pak.Addint16(PacketCommand.SEND_LOCATION_GOFVF);

            pak.Addbyte((byte)SendFvfMessage.FRIEND_CANCEL);

            pak.Send(c);

            Log.Write(EType.Packet, "{0} {1}, message: {2}", c.ID, "<-GoFvf", SendFvfMessage.FRIEND_CANCEL);

        }

    }

}

 

Класс MainSocet:

 

namespace BobServ

{

    /// <summary>Класс для работы с сетью

    /// </summary>

    public class MainSocket

    {

        private static Socket listenSocket;             //Сокет для прослушивания соединения

        private static AsyncCallback as_callback;       //делегат для обратного вызова функции HandleConnectClient

 

        /// <summary>

        /// Start() - Запускает обработчик подключений к серверу.

        /// </summary>

        /// <param name="port">Порт подключения к серверу.</param>

        public static int Start(int port)

        {

            as_callback = new AsyncCallback(HandleConnectClient);

            listenSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

            listenSocket.ReceiveTimeout = 10;

            listenSocket.SendTimeout = 10;

                       

            IPEndPoint epConfiguration = new IPEndPoint(IPAddress.Any, port);

 

            try

            {

                listenSocket.Bind(epConfiguration);         //привязываем сокет к точке

                listenSocket.Listen(1000);                   //начинаем прослушивать соединения

 

                listenSocket.BeginAccept(as_callback, null);

                Log.Write(EType.Notice, "[MainSocket] Ready.");

                return 0;

            }

            catch (Exception se)

            {

                Log.Write(EType.Warning, "[MainSocket]Start->" + se.Message);

                return 1;

            }

        }

        /// <summary>

        /// Stop() - Останавливает обработчик подключений к серверу.

        /// </summary>

        public static void Stop()

        {

            try

            {

                listenSocket.Disconnect(false);

                listenSocket.Close();

                Log.Write(EType.Notice, "MainSocket Close!");

            }

            catch(Exception ex)

            {

                Log.Write(EType.Error, "MainSocket Close:" + ex.ToString());

            }

        }

 

        private static void HandleConnectClient(IAsyncResult asyn)

        {

            try

            {

                if (WorldServer.world_players.Count >= Config.ServerMaxPlayers)

                {

                    Log.Write(EType.Notice, "[Server max online!]");

                    try

                    {

                        listenSocket.EndAccept(asyn).Close();

                    }

                    catch { }

                }

                else

                    new Client(listenSocket.EndAccept(asyn)); //создаем нового клиента

            }

            catch

            {

 

            }

            finally

            {

                listenSocket.BeginAccept(as_callback, null); //готовы принять следующее подключение

            }

        }

    }

}

 

 


Информация о работе Социальная интеллектуальная игра «ЗаБотань!»