Автор работы: Пользователь скрыл имя, 18 Декабря 2013 в 18:34, курсовая работа
Идея совместить популярные игровые механики и интеллектуальное развитие пришла ко мне ещё в 8-ом классе. Для реализации мечты не хватало опыта и единомышленников. БГУИР дал мне и то, и то другое. Я знал, что проект должен быть прост в реализации, а порог входа на выбранный рынок должен быть как можно ниже. И я выбрал рынок социальных игр.
Введение 3
Классификация игры, сюжет и миссия 4
Структура программы 5
Диаграмма классов 6
Основные алгоритмы 7
Описание игрового процесса 9
Описание игровых вещей Ошибка! Закладка не определена.12
Описание игрового баланса Ошибка! Закладка не определена.13
Заключение 14
Литература 15
Исходный код…………………………………………….…………………………………………….16
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ
Учреждение Образования
«Белорусский
Государственный Университет
кафедра информатики
ПОЯСНИТЕЛЬНАЯ ЗАПИСКА
к курсовому проекту по
курсу «Объектно-
Тема: Социальная интеллектуальная игра «ЗаБотань!»
Выполнил студент гр. 052002
Грицовец Б.Д.
Проверил
Галковский А.В.
Минск 2012
Оглавление
Введение 3
Классификация игры, сюжет и миссия 4
Структура программы 5
Диаграмма классов 6
Основные алгоритмы 7
Описание игрового процесса 9
Описание игровых вещей Ошибка! Закладка не определена.12
Описание игрового баланса Ошибка! Закладка не определена.13
Заключение 14
Литература 15
Исходный код…………………………………………….
Идея совместить популярные
игровые механики и интеллектуальное
развитие пришла ко мне ещё в 8-ом
классе. Для реализации мечты
не хватало опыта и
Что такое социальная игра (игра для соц. сетей)? Вот какой ответ даёт Википедия:
Игры для социальных сетей — разновидность онлайн игр, которые распространяются преимущественно через социальные сети, в большинстве случаев являются многопользовательскими. Игры в социальных сетях в основном браузерные, они не требуют установки на компьютер пользователя и доступны со многих устройств, через которые доступна конкретная социальная сеть. Игры в социальных сетях — одни из лидеров по популярности во всем мире, некоторые имеют десятки миллионов игроков. Mafia Wars, FarmVille и FrontierVille — пример популярных игр в Facebook.
Технологии, используемые для
разработки игр для социальных сетей,
те же, что и для подобных казуальных
Игры в социальных сетях
имеют много сходств с
Название
игры: «ЗаБотань!»
Жанр: социальная интеллектуальная
игра
Классификация по количеству пользователей: многопользовательская игра.
«ЗаБотань» - это маленький мирок, где Знания решают всё. Игроки сражаются за место под Солнцем, используя исключительно свои Мозги.
Делать людей образованнее и не давать им при этом соскучиться.
Это клиент-серверное приложение. Я не буду рассматривать работу клиентской части. Вместо этого, подробно опишу работу серверной части, которая отвечает за выполнение основной логики игры.
Рассмотрим основные классы, реализованные в программе.
public class Config
Класс содержит в себе набор важных полей, таких как Название БД, ИП адрес сервера и другие. Данные подгружаются из xml-файла.
class ResultSet
partial class Database
Класс Database служит для работы с базой данных. В класс ResultSet записывается выборка данных, полученная из базы данных.
public static class Log
Класс для работы с логами. В логи записываются все важные события, происходящие на сервере. Данные записываются большими кусками, когда переполняется временный буфер.
class HttpSocket
Класс содержит методы, для работы с АПИ соц.сети. Специальный менеджер посылает и получает данные.
public class MainSocket
Класс служит для настройки соединения с клиентскими приложениями.
class ClientManager
После соединения сервера с клиентским приложением, именно ClientManager работает с ним дальше, вплоть до того момента, как игрок отключается. Для каждого клиента создаётся отдельный поток.
public class WorldServer
Класс содержит необходимые данные для игрового процесса: список игроков, список вопросов, список предметов, методы подбора подходящего противника и др.
Т.к. в игре присутствуют элементы РПГ, каждый игрок имеет свой уровень развития. При подборе противника важно учитывать этот фактор, ведь если силы будут не равны, игроки останутся недовольны.
public static Client GetEnemy(Client old)
{
try
{
int brain = old.GetAllBrains;
IEnumerable<Client> enemy = world_players.Where(c => c.ID != old.ID && c.Flag == PlayerFlags.PVP && c.Fight.Status == FightStatus.Wait && (Math.Abs(c.GetAllBrains - brain) <= Config.RaznicaBrains));
if (enemy.Count() == 1)
return enemy.ElementAt(0);
else if (enemy.Count() > 1)
return enemy.ElementAt(rand_q.Next(0, enemy.Count() - 1));
else return null;
}
catch(Exception ex)
{
Log.Write(EType.Error, "{0} GetEnemy error:{1}", old.ID, ex.ToString());
return null;
}
}
В потоке для работы с клиентом во время боя каждый такт происходят 3 ключевые проверки:
else if (thisclient.Fight.Status == FightStatus.Fighting)
{
var enemy = thisclient.Fight.Enemy;
if (enemy == null || (!enemy.IsBot && !WorldServer.world_players.
{
thisclient.Fight.End();
break;
}
if (thisclient.Fight.TryDie())
break;
thisclient.Fight.
thisclient.Fight.TryBullet();
}
public bool TryDie()
{
if ((_owner.CurrentHP <= 0f || Enemy.CurrentHP <= 0f) &&
Bullet.Count == 0 && Enemy.Fight.Bullet.Count == 0)
{
End();
return true;
}
return false;
}
public void TrySendQuestion()
{
if (SelectedQuest == null && Enemy.CurrentHP > 0f && TimeShowRespone < DateTime.Now)
{
_owner.SendQuestion();
}
}
public void TryBullet(bool isManiken = false)
{
for (int j = 0; j < Bullet.Count; j++)
{
Bullet b = Bullet[j];
if ((DateTime.Now - b.StartTime).TotalMilliseconds > Config.TimeForBullet)
{
if (!isManiken && _owner.CurrentHP == _owner.MaxHP && Enemy.CurrentHP == Enemy.MaxHP && ResponeCounts == 1)
{
AwardsManager.UA_FirstBlood(_
}
Enemy.CurrentHP -= b.Dmg;
Bullet.RemoveAt(j);
}
}
}
Суть игры: победить противника, правильно отвечая на вопросы.
В игре существует несколько режимов боя:
Рейтинг игроков по нескольким параметрам:
В игре есть специальные задания, выполняя которые, игроки получают деньги и дополнительные бонусы.
Наградами можно похвастать перед друзьями.
Описание игровых вещей
Кофе – прибавляет 10% концентрации игроку во время боя
Шпаргалка – убирает 2 неверных ответа.
Супер шпора – убирает все неверные ответы.
Батарейка – повышает уровень сложности вопроса.
Заморозка - «замораживает»
текущую науку противника до конца боя.
Перевёртыш – переворачивает
буквы в вопросе и вариантах ответа противника
Билет в кино – увеличивает запас Концентрации на 10% (действует 36 часов)
Описание игрового баланса
В таблице ставится соответствие значений Знаний, Концентрации (hp), Урона (damag) уровню противника.
В ходе выполнения данного курсового проекта мною была создана компьютерная игра, сочетающая в себе концепции написания игр и объектно-ориентированного программирования. Я более подробно изучил платформу .NET Framework. Я горжусь тем, что игра вышла на широкую аудиторию, и приносит конкретную пользу другим людям. Я считаю, что за развивающими играми – будущее нашего образования.
Класс ClientManager
namespace BobServ
{
class ClientManager
{
private static object synObj = new object();
public static bool IsRun = false;
public void Start()
{
Thread clientManagerThread;
IsRun = true;
for (int i = 0; i < Config.
{
clientManagerThread = new Thread(new ThreadStart(Update));
clientManagerThread.Name = "ClientManagerThread["+i+"]";
clientManagerThread.Start();
}
Log.Write(EType.Notice, "[ClientManager] Загружен
({0} Потоков).",Config.
}
public static void Stop()
{
IsRun = false;
Log.Write(EType.Notice, "CM Stopping...");
}
private void Update()
{
Client thisclient;
Stopwatch sw = new Stopwatch();
Stopwatch sw2 = new Stopwatch();
while (true)
{
try
{
if (WorldThreads.
{
for (int i = 0; i < WorldServer.world_players.
{
Информация о работе Социальная интеллектуальная игра «ЗаБотань!»