Автор работы: Пользователь скрыл имя, 16 Мая 2013 в 09:07, курсовая работа
Аргументы против игр просты: они отнимают у человека время, развивают в нем агрессивные инстинкты, притупляют воображение, служат причиной сотен болезней, начиная от близорукости и кончая воспалением мозга... И вообще — плохо это и все! А немногочисленные либералы относятся к играм как к возрастной болезни — мол, со временем пройдет... И действительно, у некоторых проходит.
Введение………………………………………………………………………...4
Актуальность и значение темы………………………………………………..4
Формулировка целей курсового проекта…..…………………………………6
Аналитический обзор игровых приложений…….…………………………...7
Описание процесса разработки………………………………………………..9
Руководство пользователя……………………………………………………15
Заключение……………………………………………………………………20
Список использованных источников………………………………………..21
Приложения…………………………………………………………………...22
Приложение 1…………………………………………………………………22
Содержание
Введение…………………………………………………………
Актуальность и значение темы………………………………………………..4
Формулировка целей курсового проекта…..…………………………………6
Аналитический обзор игровых приложений…….…………………………...7
Описание процесса разработки………………………………………………..
Руководство пользователя………………………………………………
Заключение……………………………………………………
Список использованных источников………………………………………..21
Приложения……………………………………………………
Приложение 1…………………………………………………………………22
Введение
Актуальность и значение темы
Компьютерные игры — парадоксальное явление. Пожалуй, нет человека, который хоть раз за свою сознательную компьютерную жизнь не попадал под их влияние. Играть любят все: школьники и деловые люди, прогрессивная интеллигенция и рабочий класс. Пожалуй, и сами создатели компьютерных фирм не прочь часок-другой провести перед монитором, управляя поступками героев или отстраивая замки.
И в то же время — психологический феномен, не иначе! — большинство пользователей в этой любви не признаются. Существует какое-то предубеждение, не позволяющее человеку сказать: да, меня интересуют игры! Более того, чем старше человек, тем сильнее он стесняется своего неравнодушного отношения к «игрушкам». Зачастую противник компьютерных игр на самом деле оказывается безнадежным игроманом.
Против игр выступают начальники – не тем подчиненные в рабочее время занимаются. Их поддерживают родители: увидев ребенка за Quake, они спешат схватиться за ремень.
Аргументы против игр просты: они отнимают у человека время, развивают в нем агрессивные инстинкты, притупляют воображение, служат причиной сотен болезней, начиная от близорукости и кончая воспалением мозга... И вообще — плохо это и все! А немногочисленные либералы относятся к играм как к возрастной болезни — мол, со временем пройдет... И действительно, у некоторых проходит.
Вообще-то пора, наконец, отдать играм должное: ведь если бы не они, персональный компьютер никогда не стал бы таким, каким он является сегодня.
• Звуковая карта.
• Колонки.
• Мощные видеокарты с трехмерной графикой.
• Устройства «виртуальной реальности»
Все это обязано своим появлением на рынке именно игровой индустрии.
Компьютерная индустрия никогда не смогла бы так развиться за два десятилетия, если бы ее не подстегивали производители компьютерных игр, предъявляющие все более высокие требования к производительности и оснащению компьютера.
Как известно, нет лучшего способа заставить человека обновить свой компьютер, как выпустить на рынок новую, особо требовательную игру. Практически никогда человек не купит новый компьютер из-за желания установить новую версию текстового редактора. А вот для новой игры — сколько угодно. В нашей стране это смотрится особо комично: пользователь выкладывает 300—400 долл., оптимизируя компьютер под... пиратскую версию Quake за 10000 рублей.
Пожалуй, на этом отрицательные черты игр заканчиваются и начинаются положительные, которые напрямую зависят от жанра. Игры бывают самыми разными, но условно их принято делить на стратегии, 3D-Action и квесты.
Стратегии развивают способность логически мыслить. 3D-Action и симуляторы развивают реакцию. Квесты — находчивость и нестандартное мышление. Кроме того, любая игра дает человеку возможность попробовать себя в новой роли, открыть в себе новые, неведомые ранее качества... И в этом смысле польза может быть от любой игры.
В своей работе я рассмотрю разработку несложной игры под названием “Угадай слово”, которая не только является безобидной в противовес вышесказанному, но и отвлекает от повседневной суеты. Суть игры заключается в следующем: пользователь пытается отгадать слово из 5-ти букв. На это у него есть 5 попыток.
Формулировка целей
Целью данного курсового проекта является создание программного продукта, представляющего собой игру. Область применения: досуг и развитие словарного запаса пользователя.
Программный продукт должен
реализовывать следующие
* Случайный выбор слова из файла
* Интуитивно понятный механизм распознавания ошибок пользователя
* Учет очков для данного пользователя
Для увеличения пользовательского интереса должны быть реализованы такие возможности как:
* Изменение уровня сложности
* Возможность выведения
подсказок при определенных
* Возможность узнать
значение данного слова (
Разработка будет вестись на языке C#, платформа Microsoft .NET Framework.
Microsoft .NET Framework – это, предложенная
компанией Microsoft, программная технология,
основной задачей которой
В C#, за счёт наличия встроенных
средств событийного
Аналитический обзор игровых приложений
Первые примитивные
На сегодняшний день компьютерные игры могут быть классифицированы по нескольким признакам:
* Жанр: игра может
принадлежать как к одному, так
и к нескольким жанрам, а в
уникальных случаях —
* Количество игроков
и способ их взаимодействия: игра
может быть
* Визуальное представление:
игра может как использовать
графические средства
* Платформа: игра
может принадлежать как к
Вследствие того, что критерии
принадлежности игры к тому или иному
жанру не определены однозначно, классификация
компьютерных игр недостаточно систематизирована,
и в разных источниках данные о
жанре конкретного проекта
* приключения - игры
построены на определённой
* стратегии - игры с нетривиальными вариантами выбора;
* имитации - упражнения на оптимизацию и координацию;
* головоломки - игры
на развитие аналитического
* забавы - программы, предназначенные исключительно для развлечения;
* образовательные - игры, построенные на принципе обучения через игру.
Описание процесса разработки
В первую очередь был разработан компонентный класс MyFadeLabel, являющийся расширением стандартного класса Label. С его помощью реализуется основной пользовательский интерфейс: вывод слов на форму, выделение цветом, вывод подсказок.
Листинг класса MyFadeLabel предоставлен в приложении 1.
Следующим образом был реализован основной функционал приложения.
private void StartGame()
{
Random r = new Random(DateTime.Now.
randomPos1 = r.Next(0, WordLength);
randomPos2 = r.Next(0, WordLength - 1);
if (randomPos2 == randomPos1)
{
randomPos2++;
}
wordIndex = r.Next(0, words.Count);
while (!
{
wordIndex = r.Next(0, words.Count);
}
_currentPuzzleWord = words[wordIndex].Substring(2);
ResetGrid();
initLayout.Controls[
initLayout.Controls[
SetLetterToolTip(initLayout.
SetLetterToolTip(initLayout.
MyFadeLabel fl = initLayout.Controls[
fl.FadeToForeColor = Color.White;
fl.FadeToBackColor = Color.CornflowerBlue;
fl.Font = bold;
fl.FadeDuration = fl.MaxTransitions;
fl.Fade();
fl = initLayout.Controls[
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[
layout.Controls[currentAttempt * WordLength + i].BackColor = Color.Gainsboro;
if (solved[i] && currentAttempt < GameState.LastAttempt)
{
layout.Controls[(
}
}
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]
SetLetterToolTip(layout.
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]
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]
SetLetterToolTip(layout.
}
if (currentAttempt < GameState.LastAttempt && solved[i])
{
layout.Controls[labelPosition + WordLength].Text = CurrentPuzzleWord[i] + "";
SetLetterToolTip(layout.
}