Автор: Пользователь скрыл имя, 05 Декабря 2011 в 21:59, дипломная работа
Разработать программу, моделирующую игру «Кости». Играющий называет любое число в диапазоне от 2 до 12 и ставку, которую он делает в этот ход. Программа с помощью датчика случайных чисел дважды выбирает числа от 1 до 6 («бросает кубик», на гранях которого цифры от 1 до 6). Если сумма выпавших цифр меньше 7 и играющий задумал число меньшее 7, он выигрывает сделанную ставку. Если сумма выпавших цифр больше 7 и играющий задумал число большее 7, он также выигрывает сделанную ставку. Если играющий угадал сумму цифр, он получает в четыре раза больше очков, чем сделанная ставка. Ставка проиграна, если не имеет место ни одна из описанных ситуаций. В начальный момент у играющего 100 очков. В программе должно присутствовать графическое изображение поверхности кубика при каждом ходе игрока.
ВВЕДЕНИЕ
ОСНОВНАЯ ЧАСТЬ
1 РАЗРАБОТКА ЭСКИЗНОГО И ТЕХНИЧЕСКОГО ПРОЕКТОВ ПРОГРАММЫ
1.1.Назначение и область применения
1.2.Технические характеристики
1.2.1. Постановка задачи
1.2.2. Описание алгоритма
1.2.3. Организация входных и выходных данных
1.2.4. Выбор состава технических и программных средств
2 РАЗРАБОТКА РАБОЧЕГО ПРОЕКТА
2.1 Разработка рабочего проекта
2.2 Написание программы
2.3 Текст программы
2.4 Тестирование программы
ЗАКЛЮЧЕНИЕ
ГЛОССАРИЙ
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
ПРИЛОЖЕНИЯ
Rewrite(FO);
Writeln(FO,'0');
CloseFile(FO);
end;
end;
ListBox.ItemIndex:=0;
end;
//-----------------------
//Создание нового игрока
//-----------------------
procedure TFormNew.BNewClick(Sender: TObject);
var ClickedOK: Boolean; //Нажата ли кнопка ОК
begin
ClickedOK:=InputQuery('Новый игрок',
'Введите имя нового игрока', NameGamer);
if ClickedOk and (NameGamer<>'') then begin //Если имя игрока введено
AssignFile(FO, 'Players.dat'); AssignFile(FS, '1.dat');
Reset(FO); Rewrite(FS); //Открытие двух файлов
Readln(FO, S); KolGamer:=StrToInt(S);
Writeln(FS, IntToStr(KolGamer+1)); //Запись увеличенного кол. икроков
if KolGamer<>0 then for i:=1 to KolGamer do for j:=1 to 6 do begin
Readln(FO, S); Writeln(FS, S);
end;
//Добавление в конец файла информации о новом игроке
Writeln(FS, NameGamer);
Writeln(FS, '100'); Writeln(FS, '20'); Writeln(FS, '7');
Writeln(FS, '1'); Writeln(FS, '1');
//Закрытие файлов и удаление временного
CloseFile(FO); CloseFile(FS);
CopyFile('1.dat', 'Players.dat',False);
DeleteFile('1.dat');
//Добавление нового игрока в список
ListBox.Items.Add(NameGamer);
ListBox.ItemIndex:=ListBox.
end;
end;
//-----------------------
//Удаление игрока
//-----------------------
procedure TFormNew.BDelClick(Sender: TObject);
begin
AssignFile(FO, 'Players.dat'); AssignFile(FS, '1.dat');
Reset(FO); Rewrite(FS); //Открытие файлов
Readln(FO, S); KolGamer:=StrToInt(S);
Writeln(FS, IntToStr(KolGamer-1)); //Запись уменьшеннго кол. игроков
//Перезапись игроков кроме выделенного в списке
for i:=1 to KolGamer do
if i<>ListBox.ItemIndex+1 then
for j:=1 to 6 do begin Readln(FO, S); Writeln(FS, S); end
else for j:=1 to 6 do Readln(FO, S); //Пропуск 6 строчек
//Закрытие файлов и удаление временного
CloseFile(FO); CloseFile(FS);
CopyFile('1.dat', 'Players.dat',False);
DeleteFile('1.dat');
FormCreate(nil); //Обновление списка игроков
end;
end.
2.4 Тестирование программы
После запуска приложения появляется главное окно программы в цен-тре экрана, которое перекрыто диалоговым окном выбора игрока. Нажимаем кнопку «Новый». Появляется окно, в которое предлагается ввести имя создаваемого игрока. Вид программы представлен в приложении 1. Вводим имя «Сергей» и нажимаем клавишу «ОК». Имя игрока появляется в списке игроков. После нажатия на кнопку «Выбрать». Главное окно программы с начальными значениями становится активным. Вид программы на данном этапе представлен в приложении 1, второй рисунок. После нажатия на кнопку «Ход» вид окна программы изменился (приложение 1, третий рисунок). Далее, в таблице 3 представлена таблица с данными игры созданного игрока до полного проигрыша. Вид окна программы на последнем этапе игры представлен в приложении 1, 4 рисунок.
Таблица 3
Кредит | Ставка | Число | Выпало | Выигрыш |
100 | 20 | 7 | 2 | - |
125 | 25 | 3 | 5 | 25 |
110 | 15 | 8 | 2 | 0 |
140 | 30 | 10 | 9 | 30 |
115 | 25 | 8 | 4 | 0 |
95 | 25 | 9 | 2 | 0 |
35 | 40 | 7 | 12 | 0 |
30 | 5 | 2 | 7 | 0 |
70 | 5 | 3 | 3 | 40 |
20 | 50 | 10 | 5 | 0 |
0 | 20 | 11 | 4 | 0 |
В условии задачи
не сказано о максимально
Для уменьшения размера исполняемого файла программы можно картинки граней кубиков загружать при запуске игры. Можно добавить озвучивание событий игры, уровень сложности игры и разные настройки параметров игры. Это вызвало бы больший интерес к игре.
Используемая в программе структура файла наиболее оптимально подходит для такого рода операций над файлом как сохранение всей информации о каждом игроке. При использовании текстового файла нет необходимости создавать динамические структуры. Для доступа к информации о любом игроке, записанном в файле, необходимо пропустить по 6 строк для каждого предыдущего игрока.
В целом приложение представляет собой почти самый простой вариант игры «Кости» с набором самых необходимых функций.
№ | Понятие | Определение |
1 | Спецификация программы | точное и полное описание задачи, содержащее всю необходимую информацию для разработки алгоритма и программы решения задачи |
2 | Вычислительная разрешимость | возможность решения задачи на вычислительной машине (компьютере) |
3 | Алгоритмическая сложность | характеристика сложности, определяемая через минимальную длину программы решения соответствующего класса задач |
4 | Вычислительная сложность | сложность вычислительной реализации задачи данного класса, позволяющая оценить минимальные затраты различных вычислительных ресурсов на решение задачи |
5 | Сигнализирующая времени | характеристика вычислительной сложности, определяющая время работы алгоритма от момента ввода исходных данных до момента получения результата |
6 | Сигнализирующая емкости | характеристика вычислительной сложности, определяющая число ячеек памяти, к которым хотя бы раз происходило обращение в процессе реализации алгоритма |
7 | Легкоразрешимые задачи | класс задач, для которых существует алгоритм, решающий любую задачу из этого класса за число шагов, не превышающее некоторый полином от размерности задачи |
8 | Трудноразрешимые задачи | класс задач, для которых существует алгоритм, решающий любую задачу из этого класса за число шагов, не меньшее, чем экспоненциальная функция от размерности задачи |
9 | Ассемблер | символическая форма записи машинного языка, требующая знания архитектуры компьютера |
10 | Синтаксис языка программирования | правила записи языковых конструкций (выражений, операторов, подпрограмм и т.п.) языка программирования |
1 | Емелина Е.И. Основы программирования на языке Паскаль. М., 1997. |
2 | Мануйлов В. Г. Разработка программного обеспечения на Паскале. М., 1998г. |
3 | Фаронов В.В.Турбо Паскаль 7.0. М., 1998 |
4 | Культин Н. Програмирование на Object Pascal. Киев, 1998. |
5 | Федоров А. Г. Delphi 3.0 для всех. М., 1998. |
6 | Дарахвелидзе П., Марков Е. Программирование в Delphi 4.СПб.: БХВ. СПб., 1999 |
7 | Роб Баас, Майк Фервай, Хайдемария Гюнтер. Delphi 4. Полное руководство. - К.: Издательская группа BHV, 1999 |
8 | Изучаем Delphi. – СПб.: Питер, 2000. – 352 с.: ил. |
9 | Александровский А. Д. Delphi 5.0. Разработка корпоративных приложений. – М.: ДМК, 2000. – 512 с.: ил. (Серия «Для программистов»). |
10 | Delphi: быстрый старт. – СПб.: БХВ – Петербург, 2002. – 288 с.: ил. |
11 | Turbo Pascal / С.А. Немнюгин. – СПб: Издательство «Питер», 2000. – 496 с.: ил. |
12 | Изучаем Delphi. – СПб.: Питер, 2000. – 352 с.: ил. |
13 | Власов А.Я. Справочник по программированию на Object Pascal. Киев, 2001г. |
14 | Turbo Pascal в задачах и программах. – СПб.: БХВ – Петербург,, 2002. – 560 с.: ил. |
15 | Delphi: быстрый старт. – СПб.: БХВ – Петербург, 2002. – 288 с.: ил. |
Приложение 1 |