Разработки программы, реализующей игру 'Слова'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    335,6 Кб
  • Опубликовано:
    2012-07-13
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработки программы, реализующей игру 'Слова'

МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования

Московский государственный университет технологий и управления

имени К.Г. Разумовского

Университетский колледж информационных технологий

Специальность 230105 «Программное обеспечение вычислительной техники и автоматизированных систем»





КУРСОВОЙ ПРОЕКТ

по дисциплине «Технология разработки программных продуктов»

на тему Разработки программы, реализующей игру «Слова»

 


Студент С.Р. Пушица

Руководитель проекта

И.А. Кумскова

 

МОСКВА 2012

 

Содержание

Содержание

Введение

Постановка задачи. Спецификация на программный продукт

Проектирование .        Функциональная схема

b.      Диаграмма классов

Алгоритмы

Программирование .   Обоснование выбора среды программирования

b.      Оценка стиля программирования

c.       Листинг программы

Отладка программы

Тестирование

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

Выводы

Введение

Игра в слова (Виселица ) как развивающая игра.

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

Например, детское домино с изображением геометрических фигур на фишках, не только научит ребенка взаимодействовать в коллективе, но и запомнить основные фигуры (круг, квадрат, треугольник, прямоугольник). В данном проекте под название «Игра в слова» необходима интуиция, логика. Играя, ребёнок осваивает новые роли, развивает навыки и расширяет жизненный опыт. У взрослых игра не исчезает, а превращается в рекреационную деятельность, имеющую ценность как дополнение к жизни. Теория функционального удовольствия К. Бюлера рассматривает удовольствие, получаемое непосредственно от игрового процесса в качестве главной мотивации. Согласно концепции игры, разработанной Гербертом Спенсером под влиянием идей Ф. Шиллера, игра является средством избавления от нереализованной энергии.

Принцип игры в том, что компьютер загадывает слово, а пользователь предлагает буквы, которые могут входить в это слово. Если эта буква есть в слове то компьютер ее пишет в соответствующих полях - столько раз, сколько она встречается в слове. Если нету такой буквы то к виселице добавляется круг к петле, изображающий голову. Пользователь продолжает угадывать буквы до тех пор, пока не отгадает все слово. За каждый не правильный ответ первый игрок добавляет одну часть туловища к виселице, в данном проекте их 9. Если туловище в виселице нарисовано полностью, то отгадывающий игрок проигрывает, считается повешенным. Если игроку удаётся угадать слово, он выигрывает.

Разработать программу, реализующую задачу “игра в слова ”. Смысл игры заключается в том, что на экране есть поля с буквами, которые нужно угадать используя русский алфавит расположенный ниже игрового поля. Программа будет работать как на «быстрых», так и на «медленных» компьютерах одинаково.

Существующие аналоги.

Video Games Hangman - логическая игра, в которой необходимо угадывать названия современных видеоигр. На разгадывание названия отводится определенное количество попыток. Когда название разгадано, вы увидите год выхода игры, а также поддерживаемые платформы.

Hang The Alien - абсолютно аналогичная игра. Единственное отличие то что вместо человека на виселице находится инопланетянин.

KHangMan - пользователь должен отгадать слово буква за буквой. Ему даётся 10 попыток, каждая неудачная попытка пририсовывает деталь изображения виселицы. На момент текущей версии программа доступна на 24 языках.

Постановка задач

Задание: Разработать программу, реализующей функцию игры “Игры в слова”.

Спецификация на программный продукт «Игра в слова».

1.      Введение.

1.1.   Цели

Разработка программы, реализующей функцию игры «Игра в слова».

.2.     Соглашения о терминах.

Курсив - выделение терминов.

.3.     Предполагаемая аудитория.

Документ предназначен для участников разработки.

.4.     Границы проекта.

Развивающий продукт. Область применения: домашние ПК.

2.      Общее описание.

2.1.   Видение продукта.

Совершенно новый продукт. Без возрастных ограничений.

.2.     Функциональность продукта.

Главная функция - развивать наблюдательность, логическое мышление пользователя. На экран выводятся русский алфавит и поле с зашифрованным словом, пользователь угадывает буквы пока не угадает слово полностью.

.3.     Классы и характеристики пользователей.

Все классы пользователей.

.4.     Среда функционирования продукта (операционная среда).

OC Windows.

.5.     Рамки, ограничения, правила и стандарты.

Ограничения накладываются внутренним устройством выбранного ПО.

.6.     Документация для пользователя.

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

3.      Функции.

3.1.   Таблица рекордов.

3.1.1. Сохранение имени пользователя в памяти (Средний приоритет).

3.1.2. Ввод и вывод имени и сохранение в файле.

3.2.   Игра.

.2.2.  Выбор буквы.

.2.3.  Особенностей нет.

.3.     Регистрация пользователя.

3.3.1. Сохранение имени пользователя в памяти (Средний приоритет).

3.3.2. Ввод имени и сохранение его в памяти.

3.3.3. Отсутствие имени не позволяет начать игру.

.        Требование к интерфейсу.

4.1.   Интерфейсы пользователей (UX).

Стандартный графический интерфейс

.1.1.  640*480 - 1680*1050.

.1.2.  Мышь.

.2.     Программные интерфейсы.

Стандартные устройства.

.3.     Интерфейсы оборудования.

Стандартные интерфейсы.

.4.     Интерфейсы связи и коммуникации.

Стандартные интерфейсы передачи информации.

5.      Другие нефункциональные требования.

5.1.   Требования к производительности.

Хорошая производительность даже на очень старых ПК.

.2.     Требования к сохранности (данных).

Безопасная, так как не может повредить файлы ПК.

.3.     Критерии качества программного обеспечения.

Требования отсутствуют.

.4.     Требования к безопасности системы.

Мобильность, надёжность, стабильность.

6.      Прочие требования.

Отказоустойчивость

Проектирование

Функциональная схема

Диаграмма классов

                           











Алгоритмы

Игра                                      Регистрация                                    Рекорды


Программирование

Обоснование выбора среды программирования

При решении поставленной задачи оптимально использовать для представления информационных материалов язык Delphi (Object Pascal).

Delphi был очень удобен для создания продукта «Игра в слова» т.к.:

.        Интегрированный отладчик Delphi имеет много полезных свойств.

2.      Высокоскоростной компилятор позволяет быстро и без проблем перевести Ваши программы в машинный код. Компилятор, встроенный в Delphi является на данный момент самым быстрым в мире.

3.      Визуальное построение приложений позволяет быстро и качественно создать интерфейс Вашей программы.

4.      Простые и функциональные способы построения баз данных (БД).

5.      Разработчик программ может самостоятельно строить объекты для Delphi. Это очень полезно для составления уникальных приложений.

Оценка стиля программирования

1.   Оценка модульности программы - 0.23

2.      Оценка структурности кодирования - 50,44

.        Оценка структурированности - 0,342

.        Оценка читабельности - 0,421

Листинг файла Main.pas

unit Unit1;, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,, StdCtrls, Grids;= class(TForm): TStringGrid;: TStringGrid;: TButton;: TLabel;: TButton;: TButton;FormCreate(Sender: TObject);StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);FormClose(Sender: TObject; var Action: TCloseAction);StringGrid1SelectCell(Sender: TObject; ACol, ARow: Integer;CanSelect: Boolean);Button1Click(Sender: TObject);

procedure Zapolnenie; //Эту процедуру создали мы сами

procedure StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);StringGrid1KeyDown(Sender: TObject; var Key: Word;: TShiftState);Button3Click(Sender: TObject);Button2Click(Sender: TObject);

{ Private declarations }

{ Public declarations };1: TForm1;:TStringList; //Сюда загружаем вопросы из текстового файла, ZagadalTemp:String; //То что загадал компьютер .

{ZadalTemp - Это строка для проверки. Из неё мы удаляем пробелы и сверяем с тем что есть}

implementation

{$R *.dfm}TForm1.FormCreate(Sender: TObject);i,j,k:Integer;.RowCount:=1;.Height:=25;.ScrollBars:=ssnone;.DefaultColWidth:=25;.FixedCols:=0;.RowCount:=4;.ColCount:=8;.Width:=StringGrid1.DefaultColWidth*StringGrid1.ColCount;.ScrollBars:=ssNone;.FixedCols:=0;.FixedRows:=0;.Options:= [];.Color:=Form1.Color;.WordWrap:=True;.AutoSize:=False;.Left:=10;.Top:=10;.Height:=50;.Width:=StringGrid1.Width;.Font.Style:=[fsBold];.Font.Size:=10;.Left:=10;.Top:=Label1.Top+Label1.Height+40;.Top:=StringGrid1.Top+StringGrid1.Height+10;.Caption:='Начать игру';.Top:=StringGrid2.Top+StringGrid2.Height+20;.Height:=Button1.Top+Button1.Height+90;

Form1.Caption:='Игра в слова';

{Все с инспектором объектов типа закончили, дальше нужный код}.Click; //Имитируем нажатие кнопки;

{Обработчик события из вкладки Events. Это мы убираем выделение из StringGrid}

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);: TStringGrid;: TCanvas;:= Sender as TStringGrid;:= StringGrid.Canvas;.Font := StringGrid.Font;(ARow >= StringGrid.FixedRows) and (ACol >= StringGrid.FixedCols)Can.Brush.Color := StringGrid.ColorCan.Brush.Color := StringGrid2.Color;ActiveControl = Sender then // Эта строка "выключает" выделение(gdSelected in State) then.Font.Color := 0;.Brush.Color := StringGrid1.Color;;.FillRect(Rect);.TextOut(Rect.Left+2,Rect.Top+2, StringGrid.Cells[ACol, ARow]);;TForm1.FormClose(Sender: TObject; var Action: TCloseAction);.Free; //Освобождаем память;

{Обработчик события из вкладки Events для StringGrid1}

procedure TForm1.StringGrid1SelectCell(Sender: TObject; ACol,: Integer; var CanSelect: Boolean);

var s1:char; //Символ, в который ткнули мышью,j:integer; //Счетчики циклов:String; //Временная строка, которая составляется из угаданных символов

{Если мы ткнули не в пустую ячейку, то s1 принимает значение из этой ячейки}

if length(StringGrid1.Cells[ACol,ARow])>0 then s1:= StringGrid1.Cells[ACol,ARow][9];

{Проверяем наличие выбранного символа в ответе}pos(s1,Zagadal)>0 then Begin //Если наш символ есть в тексте, то записываем его в StringGrid2i:=1 to length(Zagadal) do Begin //Проходим по всей длине загаданного слова

StringGrid2.Cells[i-1,0]:=s1;//Каждый одинаковый символ записываем в соотв. ему позиции; //Т.е. если в слове 3 буквы О, то все 3 и запишутся в StringList2 на их позиции из ответа;; //Закончили проверку встречи символа

{tempS - это временная строка, которая составляется из символов внутри StringGrid2

Рассматриваем StringGrid2 как строку и заполняем tempS, исходя из наличия в StringGrid2 символов}

for i:=0 to StringGrid2.ColCount do Begin:=tempS+StringGrid2.Cells[i,0];

{Очищаем пробелы из TempS}j:=length(tempS) downto 1 do Beginpos(' ',tempS)>0 then delete(tempS,pos(' ',tempS),1);

end;; //Закончили работу с TempS

{Проверяем соответствие TempS и ZagadalTemp. В обоих строках удалены пробелы

и остается проверять только на символы. Если они совпали, значит пользователь угадал слово

и выводится сообщение - Ты победил}

if tempS=ZagadalTemp then Begin('Победа');

end;.Cells[ACol,ARow]:=''; //Очищаем нажатую ячейку от Буквы, чтоб не нажимали тысячи раз уже нажатую

end;TForm1.Button1Click(Sender: TObject);i,j:Integer;: TStringGrid;

begin; //Наша процедура, заполняющая таблицу Буквами

i:=1;; odd(i) do i:=Random(S.Count-1); //Это строка проверяет i на нечетнссть.

{Так как вопросы нечет - Вопрос, Чет - ответ, логично Выбирать вопросы из нечетной

строки, а ответы из четной. Пока i не примет нечетное значение идет выборка i

случайным образом}.Caption:=S.Strings[i]; //Вопрос выбран, отображаем его в Label1:=(S.Strings[i+1]); //Запоминаем ответ для в вопроса в глобальную переменную:=Zagadal; //Это тот же ответ, только в нем мы исключим пробелы.ColCount:=length(S.Strings[i+1]); //Отображаем в StringGrid2 столько ячеек сколько символов в ответе.Width:=length(S.Strings[i+1])*StringGrid2.DefaultColWidth+15; //Меняем ширину в зависимости от длины ответа

for i:=0 to StringGrid2.ColCount do StringGrid2.Cells[i,0]:=''; //При нажатии на кнопку очищаем StringGrid2 от прошлого ответаj:=length(ZagadalTemp) downto 1 do //Удаляем пробелы из ZagadalTemppos(' ',ZagadalTemp)>0 then Delete(ZagadalTemp,pos(' ',ZagadalTemp),1);

end;

{Созданная нами процедура заполняет StringGrid1 ,буквами}

procedure TForm1.zapolnenie;i,j,k:Integer;

begin:=192; // 192 - это Числовой код Буквы А. Заполняем нашу таблицу буквами А..Я

for j:=0 to 3 do Begin //4 строкиi:=0 to 7 do StringGrid1.Cells[i,j]:=' '+chr(I+k); k:=k+8;i:=i+1; //8 колонок

end;

{===============}:=TStringList.Create; //Создаем контейнер для хранения строк.LoadFromFile('HMRusBase.txt'); //Загружаем в него весь текстовый файл; //Запускаем генератор случайных значений;

{Процедура для StringGrid2 из вкладки Events. Убирает выделение с ячейки}TForm1.StringGrid2DrawCell(Sender: TObject; ACol, ARow: Integer;: TRect; State: TGridDrawState);: TStringGrid;: TCanvas;:= Sender as TStringGrid;:= StringGrid.Canvas;.Font := StringGrid.Font;(ARow >= StringGrid.FixedRows) and (ACol >= StringGrid.FixedCols)Can.Brush.Color := StringGrid.ColorCan.Brush.Color := StringGrid2.Color;ActiveControl = Sender then // Эта строка "выключает" выделение(gdSelected in State) then.Font.Color := 0;.Brush.Color := StringGrid1.Color;;.FillRect(Rect);.TextOut(Rect.Left+2,Rect.Top+2, StringGrid.Cells[ACol, ARow]);

end;

{Игнорируем нажатие стрелок на клавиатуре, для исключения переходов по таблице через них}

procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;: TShiftState);(Key=VK_Up) or (Key=VK_Down) or (Key=VK_Left) or (Key=VK_RIGHT) then Key:=VK_Shift;;TForm1.Button3Click(Sender: TObject);

beginMessageDlg('Выходим из программы ?',

mtConfirmation, [mbYes, mbNo], 0) = mrYesclose;;TForm1.Button2Click(Sender: TObject);(‘’);;.

Отладка

Отладка программы «Игра в слова»

Тип ошибки

Пример

Решение

1

Логическая ошибка

Не отображается русский алфавит в таблице

Заполняем нашу таблицу буквами А..Я begin k:=192;  for j:=0 to 3 do Begin //4 строки for i:=0 to 7 do StringGrid1.Cells[i,j]:=' '+chr(I+k); k:=k+8;i:=i+1; //8 колонок end;

2

Логическая ошибка

При нажатии на кнопку новая игра не очищались прошлые слова

 Были добавлены следующие строки, for i:=0 to StringGrid2.ColCount do StringGrid2.Cells[i,0]:='';

3

Логическая ошибка

При загрузке слов из текстового файла выводилась ошибка

Исправлена ошибка неверного чтения из файла.

4

Логическая ошибка

Когда пользователь угадал слово программа сравнивала загаданное слово не с тем что выбирал пользователь.

sTemps - переменная хранящая слово угадывающее пользователем for j:=length(tempS) downto 1 do Begin if pos(' ',tempS)>0 then delete(tempS,pos(' ',tempS),1); end; if tempS=ZagadalTemp then Begin ShowMessage('Победа');  end;

5

Логическая ошибка

Когда пользователь выбирал букву она оставалась в таблице

Было добавлено StringGrid1.Cells[ACol,ARow]:='';

Тестирование

Название теста

Нормальные условия

Критические условия

Экстремальные условия

1

Загрузка слова из файла

Производится загрузка слова из файла и сравнивается с буквами, которые вводит пользователь.

Производится загрузка слова из некорректного файла - Вывод сообщения об ошибке.

Загрузка слова из несуществующего файла - Вывод сообщения об ошибке.

2

Загрузка подсказки из файла.

Производится загрузка подсказки из некорректного файла - Вывод сообщения об ошибке.

Загрузка подсказки из несуществующего файла - Вывод сообщения об ошибке.

3

Выбор буквы в таблице

Буква корректно выбирается и пропадает из таблицы.

Выбор уже отсутсвующей буквы не возможен.

Если пользователь выберет неправильную букву, то буква не пропадет

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

программа развивающая игра слово

Запуск программы.

Запускаем файл «igra_v_slova.exe». Вам откроется фоновый режим программы.


После запуска игры откроется следующая форма:


Необходимо нажать на кнопку «Начать игру» для запуска новой игры.

Поле с загаданным словом.

Русский алфавит, из которого Вы будете угадывать загаданное слово

Поле с подсказками:

Для выходы из игры необходимо нажать кнопку «Выход»:

Выводы

В результате выполненных работ был получен программный продукт «Игра в слова» и комплект документации к нему. Программа реализовывалась полностью с соответствием технического задания.

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

Похожие работы на - Разработки программы, реализующей игру 'Слова'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!