Аналитический обзор игровых приложений

Автор работы: Пользователь скрыл имя, 16 Мая 2013 в 09:07, курсовая работа

Краткое описание

Аргументы против игр просты: они отнимают у человека время, развивают в нем агрессивные инстинкты, притупляют воображение, служат причиной сотен болезней, начиная от близорукости и кончая воспалением мозга... И вообще — плохо это и все! А немногочисленные либералы относятся к играм как к возрастной болезни — мол, со временем пройдет... И действительно, у некоторых проходит.

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

Введение………………………………………………………………………...4
Актуальность и значение темы………………………………………………..4
Формулировка целей курсового проекта…..…………………………………6
Аналитический обзор игровых приложений…….…………………………...7
Описание процесса разработки………………………………………………..9
Руководство пользователя……………………………………………………15
Заключение……………………………………………………………………20
Список использованных источников………………………………………..21
Приложения…………………………………………………………………...22
Приложение 1…………………………………………………………………22

Содержимое работы - 1 файл

Ilkhom.docx

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

 

Содержание

 

Введение………………………………………………………………………...4

Актуальность и значение темы………………………………………………..4

Формулировка целей курсового  проекта…..…………………………………6

Аналитический обзор игровых  приложений…….…………………………...7

Описание процесса разработки………………………………………………..9

Руководство пользователя……………………………………………………15

Заключение……………………………………………………………………20

Список использованных источников………………………………………..21

Приложения…………………………………………………………………...22

Приложение 1…………………………………………………………………22

 

Введение

Актуальность и значение темы

 

Компьютерные игры — парадоксальное явление. Пожалуй, нет человека, который  хоть раз за свою сознательную компьютерную жизнь не попадал под их влияние. Играть любят все: школьники и  деловые люди, прогрессивная интеллигенция  и рабочий класс. Пожалуй, и сами создатели компьютерных фирм не прочь  часок-другой провести перед монитором, управляя поступками героев или отстраивая замки.

И в то же время — психологический  феномен, не иначе! — большинство  пользователей в этой любви не признаются. Существует какое-то предубеждение, не позволяющее человеку сказать: да, меня интересуют игры! Более того, чем  старше человек, тем сильнее он стесняется своего неравнодушного отношения к  «игрушкам». Зачастую противник компьютерных игр на самом деле оказывается  безнадежным игроманом.

Против игр выступают  начальники – не тем подчиненные  в рабочее время занимаются. Их поддерживают родители: увидев ребенка  за Quake, они спешат схватиться за ремень.

Аргументы против игр просты: они отнимают у человека время, развивают  в нем агрессивные инстинкты, притупляют воображение, служат причиной сотен болезней, начиная от близорукости и кончая воспалением мозга... И  вообще — плохо это и все! А  немногочисленные либералы относятся  к играм как к возрастной болезни  — мол, со временем пройдет... И действительно, у некоторых проходит.

Вообще-то пора, наконец, отдать играм должное: ведь если бы не они, персональный компьютер никогда  не стал бы таким, каким он является сегодня.

• Звуковая карта.

• Колонки.

• Мощные видеокарты с трехмерной графикой.

• Устройства «виртуальной реальности»

Все это обязано своим  появлением на рынке именно игровой  индустрии.

Компьютерная индустрия  никогда не смогла бы так развиться  за два десятилетия, если бы ее не подстегивали производители компьютерных игр, предъявляющие  все более высокие требования к производительности и оснащению  компьютера.

Как известно, нет лучшего  способа заставить человека обновить свой компьютер, как выпустить на рынок новую, особо требовательную игру. Практически никогда человек  не купит новый компьютер из-за желания установить новую версию текстового редактора. А вот для  новой игры — сколько угодно. В нашей стране это смотрится  особо комично: пользователь выкладывает 300—400 долл., оптимизируя компьютер  под...  пиратскую версию Quake за 10000 рублей.

Пожалуй, на этом отрицательные  черты игр заканчиваются и  начинаются положительные, которые  напрямую зависят от жанра. Игры бывают самыми разными, но условно их принято  делить на стратегии, 3D-Action и квесты.

Стратегии развивают способность  логически мыслить. 3D-Action и симуляторы развивают реакцию. Квесты — находчивость и нестандартное мышление. Кроме  того, любая игра дает человеку возможность  попробовать себя в новой роли, открыть в себе новые, неведомые  ранее качества... И в этом смысле польза может быть от любой игры.

В своей работе я рассмотрю  разработку несложной игры под названием  “Угадай слово”, которая не только является безобидной в противовес вышесказанному, но и отвлекает от повседневной суеты. Суть игры заключается в следующем: пользователь пытается отгадать слово  из 5-ти букв. На это у него есть 5 попыток.

 

Формулировка целей

 

Целью данного курсового  проекта является создание программного продукта, представляющего собой  игру. Область применения: досуг  и развитие словарного запаса пользователя.

Программный продукт должен реализовывать следующие функции:

   * Случайный выбор  слова из файла

   * Интуитивно понятный  механизм распознавания ошибок  пользователя

   * Учет очков для  данного пользователя 

Для увеличения пользовательского  интереса должны быть реализованы такие  возможности как:

   * Изменение уровня  сложности

   * Возможность выведения  подсказок при определенных условиях 

   * Возможность узнать  значение данного слова (используя  такие поисковые системы как: google.com или wordnet.princeton.edu)

Разработка будет вестись  на языке C#, платформа Microsoft .NET Framework. 

Microsoft .NET Framework – это, предложенная  компанией Microsoft, программная технология, основной задачей которой является  предоставление разработчику набора  очень удобных средств для  разработки как простых программ, так и web приложений.

В C#, за счёт наличия встроенных средств событийного программирования скрывает от разработчика детали обработки  событий и некоторые другие моменты, облегчая разработку интерфейса. На платформе .NET изначально широко использовались визуальные построители интерфейса. Всё это даёт возможности для  быстрой разработки интерфейса настольных приложений.

 

Аналитический обзор игровых  приложений

 

Первые примитивные компьютерные игры были разработаны в 1950-х и 1960-х  годах. Они работали на таких платформах, как университетские мейнфреймы и компьютеры EDSAC. Самой первой компьютерной игрой стал симулятор ракеты, созданный  в 1942 году Томасом Голдсмитом Младшим  и Истл Рей Менном.

На сегодняшний день компьютерные игры могут быть классифицированы по нескольким признакам:

   * Жанр: игра может  принадлежать как к одному, так  и к нескольким жанрам, а в  уникальных случаях — открывать  новый или быть вне всяких  жанров;

   * Количество игроков  и способ их взаимодействия: игра  может быть однопользовательской  — рассчитанной на игру одного  человека, или многопользовательской  — рассчитанной на одновременную  игру нескольких человек; а  также вестись на одном компьютере, через интернет, электронную почту,  или массово;

   * Визуальное представление:  игра может как использовать  графические средства оформления, так и напротив, быть текстовой.  Игра также может быть двухмерной  или трехмерной. Есть и звуковые  игры — в них вместо визуального  представления используются звуки.

   * Платформа: игра  может принадлежать как к одной  платформе, так и быть мультиплатформенной.

 

Вследствие того, что критерии принадлежности игры к тому или иному  жанру не определены однозначно, классификация  компьютерных игр недостаточно систематизирована, и в разных источниках данные о  жанре конкретного проекта могут  различаться. Тем не менее, существует консенсус, к которому пришли разработчики игр, и принадлежность игры к одному из основных жанров почти всегда можно  определить однозначно. Эти наиболее популярные жанры (которые объединяют в себе множество поджанров) перечислены  ниже. экшен - игры с динамичным сюжетом, когда игроку приходится часто и  быстро нажимать на клавиши;

   * приключения - игры  построены на определённой истории;

   * стратегии - игры  с нетривиальными вариантами  выбора;

   * имитации - упражнения  на оптимизацию и координацию;

   * головоломки - игры  на развитие аналитического мышления;

   * забавы - программы,  предназначенные исключительно  для развлечения;

   * образовательные  - игры, построенные на принципе  обучения через игру.

 

Описание процесса разработки

 

В первую очередь был разработан компонентный класс MyFadeLabel, являющийся расширением стандартного класса Label.  С его помощью реализуется  основной пользовательский интерфейс: вывод слов на форму, выделение цветом, вывод подсказок.

Листинг класса MyFadeLabel предоставлен в приложении 1.

 

Следующим образом был  реализован основной функционал приложения.

private void StartGame()

        {

            Random r = new Random(DateTime.Now.Millisecond);

            randomPos1 = r.Next(0, WordLength);

            randomPos2 = r.Next(0, WordLength - 1);

            if (randomPos2 == randomPos1)

            {

                randomPos2++;

            }

            wordIndex = r.Next(0, words.Count);

            while (!IsWordMatchForDifficultyLevel(words[wordIndex], gameDifficulty))

            {

                wordIndex = r.Next(0, words.Count);

            }

            _currentPuzzleWord = words[wordIndex].Substring(2);

            ResetGrid();

            initLayout.Controls[randomPos1].Text = CurrentPuzzleWord[randomPos1] + "";

            initLayout.Controls[randomPos2].Text = CurrentPuzzleWord[randomPos2] + "";

            SetLetterToolTip(initLayout.Controls[randomPos1], true);

            SetLetterToolTip(initLayout.Controls[randomPos2], true);

            MyFadeLabel fl = initLayout.Controls[randomPos1] as MyFadeLabel;

            fl.FadeToForeColor = Color.White;

            fl.FadeToBackColor = Color.CornflowerBlue;

            fl.Font = bold;

            fl.FadeDuration = fl.MaxTransitions;

            fl.Fade();

            fl = initLayout.Controls[randomPos2] as MyFadeLabel;

            fl.FadeToForeColor = Color.White;

            fl.FadeToBackColor = Color.CornflowerBlue;

            fl.Font = bold;

            fl.FadeDuration = fl.MaxTransitions;

            fl.Fade();

            currentAttempt = GameState.FirstAttempt;

            guess.Text = "";

            history.Clear();

            history.Add(guess.Text);

            historyIndex = 1;

            solved[randomPos1] = solved[randomPos2] = true;

            definitionLink.Visible = false;

            bonusScore = MaximumBonusScore;

            bonusTimer.Start();

            helpGiven = false;

            guess.ForeColor = TextBox.DefaultForeColor;

        }

 

При помощи стандартного класса Random программа случайным образом  находит подходящее по сложности  ключевое слово.

Далее выбирается 2 буквы  из слова и отображаются на игровую  область.

С помощью функционала  класса MyFadeLabel реализовано корректное отображение как слова, так и  ошибок пользователя.

После нахождения подходящего  слова пользователю предоставляется 5 попыток его угадать.

if (e.KeyChar != (char)Keys.Enter && guess.SelectionLength == 0)

{

return;

}

if (guess.SelectionLength != 0)

{

e.Handled = false;

return;

}

if (!IsValidWord(guess.Text))

{

errorLabel.Visible = true;

guess.SelectAll();

messageLabel.Text = null;

for (int i = 0; i < WordLength; i++)

{

layout.Controls[currentAttempt*WordLength + i].Text = guess.Text[i] +"";

layout.Controls[currentAttempt * WordLength + i].BackColor = Color.Gainsboro;

if (solved[i] && currentAttempt < GameState.LastAttempt)

{

layout.Controls[(currentAttempt+1)*WordLength+i].Text=CurrentPuzzleWord[i]+"";

}

}

currentAttempt++;

return;

}

              else

{

               errorLabel.Visible = false;

if (history[historyIndex - 1] != guess.Text)

                    {

                        history.Add(guess.Text);

                        historyIndex = history.Count;

                    }

}

DisplayCorrectLetters();

DisplayProbableLetters();

currentAttempt++;

}

 

private void DisplayProbableLetters()

        {

            int labelPosition = 0;

            for (int i = 0; i < WordLength; i++)

            {

                if (marked[i] && guess.Text[i] == CurrentPuzzleWord[i])

                {

                    continue;

                }

                for (int j = 0; j < WordLength; j++)

                {

                    if (guess.Text[i] == CurrentPuzzleWord[j])

                    {

                  if (!marked[j])

                        {

                            marked[j] = true;

                            labelPosition = currentAttempt * WordLength + i;

                            MyFadeLabel fl = layout.Controls[labelPosition] as MyFadeLabel;

                            fl.FadeToBackColor = Color.OrangeRed;

                            fl.FadeToForeColor = Color.WhiteSmoke;

                            fl.FadeFromForeColor = Label.DefaultBackColor;

                            fl.FadeFromBackColor = Label.DefaultBackColor;

                            fl.Fade();

                            layout.Controls[labelPosition].Font = bold;

                            SetLetterToolTip(layout.Controls[labelPosition], false);

                            break;

                        }

                        else if (CurrentPuzzleWord.Substring(j + 1).IndexOf(guess.Text[i]) >= 0)

                        {

                            continue;

                        }

                        else

                            break;

                    }

                }

            }

        }

 

private void DisplayCorrectLetters()

        {

            int labelPosition = 0;

            lock (solved)

            {

                for (int i = 0; i < WordLength; i++)

                {

                    labelPosition = currentAttempt * WordLength + i;

                    layout.Controls[labelPosition].Text = guess.Text[i] + "";

                    if (guess.Text[i] == CurrentPuzzleWord[i])

                    {

                        solved[i] = true;

                        MyFadeLabel fl = layout.Controls[labelPosition] as MyFadeLabel;

                        fl.FadeFromForeColor = Label.DefaultBackColor;

                        fl.FadeFromBackColor = Label.DefaultBackColor;

                        fl.FadeToBackColor = Color.GreenYellow;

                        fl.FadeFromForeColor = Label.DefaultForeColor;

                        fl.Fade();

                        layout.Controls[labelPosition].Font = bold;

                        SetLetterToolTip(layout.Controls[labelPosition], true);

                    }

                    if (currentAttempt < GameState.LastAttempt && solved[i])

                    {

                        layout.Controls[labelPosition + WordLength].Text = CurrentPuzzleWord[i] + "";

                        SetLetterToolTip(layout.Controls[labelPosition + WordLength], true);

                    }

Информация о работе Аналитический обзор игровых приложений