Напоминание

Программирование игры Кости


Автор: Кулик Евгений Васильевич
Должность: Преподаватель
Учебное заведение: ГПОУ "Печорский промышленно-экономический техникум"
Населённый пункт: Республика Коми, город Печора
Наименование материала: Методические рекомендации
Тема: Программирование игры Кости
Раздел: среднее профессиональное





Назад




Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Методические рекомендации по выполнению практической работы

«Программирование игры Кости»

Настоящие методические рекомендации предназначены для студентов государственного

профессионального образовательного учреждения «Печорский промышленно-экономический

техникум» очной формы обучения специальности 09.02.07 Информационные системы и

программирование.

Овладение даже основами программирования представляется весьма сложным

процессом. Идеей для создания игры послужило желание разнообразить подходы к

программированию классических задач, показать студентам, что программирование это не всегда

скучно и неинтересно. И как доказательство создадим локальную двухпользовательскую игру

Кости.

Кости — одна из древнейших игр. Инструментом для игры являются кубики (кости) в

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

кубиков и дальнейшем подсчѐте очков, количество которых и определяет победителя.

Основной принцип игры в кости — каждый игрок по очереди бросает некоторое количество

игральных костей (от одной до пяти), после чего результат броска используется для определения

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

бросков.

Программа Кости не является законченным программным продуктом, в конце

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

Практическая работа выполнена в рамках интеграции практических работ по дисциплинам

ОП.05 Основы алгоритмизации и программирования и ОП.08 Основы проектирования баз

данных студентами специальности 09.02.07 Информационные системы и программирование.

Среда разработки: система управления базами данных (СУБД) MS Access 2007.

Цель работы: разработка полноценной локальной версии настольной игры Кости.

Задачи работы:

совершенствование и развитие коммуникативно-познавательных умений, направленных на

систематизацию и углубление знаний;

расширить знания практического применения баз данных;

приобрести практические навыки программирования классических задач;

разработать пользовательский интерфейс программы;

написать кодинг программы с учетм следующих особенностей игры: количество игроков –

2, количество кубиков – 4, количество бросков – 3.

Для работы над практической работой студент:

должен знать:

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

основы проектирования баз данных в СУБД MS Access;

основы языка структурированных запросов (SQL);

основы программирования в среде VBA.

Должен уметь:

строить таблицы базы данных, создавать связи;

создавать обработчики событий, писать простой код обработчика;

работать в любом графическом (растровом) редакторе.

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

должен знать:

составление выражений SQL инструкций;

именование элементов управления пользовательского интерфейса;

свойства, методы объектов DoCmd, CurrentDB;

применение метода Execute в кодинге программы;

способы сохранения результатов работы приложений.

Должен уметь:

выполнять программную настройку свойств элеиентов управления;

выполнять SQL инструкции в коде программы;

использовать информацию таблиц баз данных в кодинге;

использовать объекты DoCmd, CurrentDB при кодинге приложений;

выполнять запросы с помощью метода Execute.

Иметь практический опыт:

алгоритмизациизадачи проектируемого приложения;

анализа программного кода, выявления некачественных программных решений;

проектирования простых приложений пользователя.

Внимание: Некоторые решения при разработке игры не являются оптимальными и выполнены

исключительно в учебных целях с целью обеспечения наглядности, максимального соответствия учебному

плану и демонстрации возможностей программных конструкций.

Этапы работы:

1.

Создание схемы данных.

2.

Создание форм пользовательского интерфейса.

3.

Создание запросов.

4.

Создание отчетов.

5.

Кодинг формы Регистрация.

6.

Кодинг формы Кости.

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Ход работы:

1.

Создание схемы данных

Для сохранения результатов игры будем использовать базу данных. Создадим файл базы

данных Кости.accdb. В созданной базе данных создадим две таблицы.

Таблица Игрок содержит данные о зарегистрированных в приложении игроках. Таблица

содержит атрибуты (рис.1):

КодИгрок – PrimaryKey, Счетчик;

Фамилия – Текстовый;

Имя – Текстовый;

Отчество – Текстовый;

Ник – Текстовый;

Пароль – Текстовый.

Выполним настройку полей таблицы Игрок.

Для поля Фамилия выполним настройки свойств:

Обязательное поле: Да;

Пустые строки: Нет;

Индексированное поле: Да (Допускаются совпадения).

Для поля Ник выполним настройки свойств:

Обязательное поле: Да;

Пустые строки: Нет;

Индексированное поле: Да (Совпадения не допускаются).

Для поля Пароль выполним настройки свойств:

Обязательное поле: Да;

Пустые строки: Нет;

Индексированное поле: Нет.

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Рисунок 1. Создание таблицы Игрок

Таблица Игра содержит информацию о количестве очков, набранных игроком в каждой

игре и ее результатах. Запись о результат игры хранится в формате: Победа/Поражение. Таблица

содержит атрибуты (рис.2):

КодИгра – PrimaryKey, Счетчик;

КодИгрок – ForeignKey, Числовой;

КоличествоОчков – Текстовый;

Результат –Текстовый.

Рисунок 2. Создание таблицы Игра

Построить схему данных для созданных таблиц. Создать связь между таблицами (рис.3).

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Рисунок 3. Схема данных

2.

Создание форм пользовательского интерфейса

В коде программы могут встречаться имена элементов управления. VBA каждому элементу

управления присваивает по умолчанию имя, которое зависит только от типа элемента

(например, Form1 для формы; Поле1, Поле7 для текстовых полей; Надпись1, Надпись23 для

надписей).

Такие имена являются малозначимыми, поскольку в них не отражена предметная область

решаемой задачи. В настоящее время очень широко распространена так называемая венгерская

префиксная форма составления имен (венгерское соглашение, венгерская нотация). Согласно

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

<Префикс><Базовое имя>

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

Например, имя frmКасса может быть присвоено форме с заголовком «Касса», имя lblЦена – для

надписи «Цена», имя txtЦена – для текстового поля, в которое будет вводиться значение цены

товара, а имя lblРезСтоимость – для надписи, в которой будет выводиться результат вычисления

стоимости товара.

Общепринятые префиксы для имен основных элементов управления представлены в

таблице 1.

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Таблица 1. Общепринятые префиксы

Элемент управления

Префикс

Надпись

lbl

Текстовое поле

txt

Кнопка

cmd

Флажок

chk

Переключатель

opt

Группа

fra

Список

lst

Поле со списком

cbo

Рисунок

img

Графический фрейм

pic

Объект OLE

ole

Форма

frm

Среди программистов есть как сторонники, так и противники использования венгерской

нотации.Использовать или не использовать венгерскую нотацию дело каждого, однозначно одно,

при написании кода необходимо придерживаться определенных правил именования элементов

управления и переменных.

2.1. Создание формы «Регистрация»

Для добавления данных о новых игроках в таблицу Игрок, используя инструмент Мастер

форм, создадим форму Регистрация. Добавим звездочки к надписям обязательных для

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

Рисунок 4. Форма Регистрация

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Важно. При построении форм с использованием мастера имена объектам (элементам

управления) даются без учета венгерского соглашения. Поэтому в форме данные атрибута

Фамилия таблицы Игрок загружаются в текстовое поле Фамилия формы Регистрация, атрибута

Имя в текстовое поле Имя и т.д. Мы не будем исправлять имена объектов, просто запомним этот

факт.

2.2. Создание основной формы «Кости»

Создадим форму Кости, основной интерфейс для организации игры.Примерный вид

формы Кости приведен на рисунке 5. Для большей наглядности на рисунке 6 форма

представлена в режиме Конструктор. В таблицах 2-4 представлены надписи, имена и типы

элементов управления формы Кости.

Рисунок 5. Примерный вид формы Кости

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Рисунок 6. Форма Кости в режиме Конструктор

Таблица 2. Элементы управления первого игрока

Элемент управления

Тип элемента

управления

Имя

Фамилия

Поле со списком

cboВыбор1

Счет

Поле

txtСчет1

Результат

Поле

txtРезультат1

Аватар

Рисунок

imgАватар1

Очистить

Кнопка

cmdОчистить1

Отчет

Кнопка

cmdОтчет1

Загрузить фото

Кнопка

cmdЗагрузитьАватар1

Изображение кубика 1

Рисунок

imgКубик1

Изображение кубика 2

Рисунок

imgКубик2

Изображение кубика 3

Рисунок

imgКубик3

Изображение кубика 4

Рисунок

imgКубик4

Кинуть кости

Кнопка

cmdКинуть1

Бросок

Поле

txtБросок1

1

2

3

4

5

6

7

8

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Таблца 3. Элементы управления второго игрока

Элемент управления

Тип элемента

управления

Имя

Фамилия

Поле со списком

cboВыбор2

Счет

Поле

txtСчет2

Результат

Поле

txtРезультат2

Аватар

Рисунок

imgАватар2

Очистить

Кнопка

cmdОчистить2

Отчет

Кнопка

cmdОтчет2

Загрузить фото

Кнопка

cmdЗагрузитьАватар2

Изображение кубика 5

Рисунок

imgКубик5

Изображение кубика 6

Рисунок

imgКубик6

Изображение кубика 7

Рисунок

imgКубик7

Изображение кубика 8

Рисунок

imgКубик8

Кинуть кости

Кнопка

cmdКинуть2

Бросок

Поле

txtБросок2

Таблица 4. Общие элементы управления

Элемент управления

Тип элемента

управления

Имя

Новая игра

Кнопка

cmdНоваяИгра

Обновить

Кнопка

cmdОбновить

Регистрация

Кнопка

cmdРегистрация

Закрыть форму

Кнопка

cmdЗакрыть

Основная форма пользовательского интерфейса создана, элементам управления

присвоены значимые имена.

3.

Создание запросов

3.1. Создание запроса на выбор фамилии

Атрибут Фамилия, расположенный в форме Кости реализован в виде поля со списком.

Данным списком выбираем зарегистрированных в системе игроков. В качестве источника строк

списка выступит запрос, выводящий данные полей КодИгрок и Фамилия таблицы Игрок. С

помощью конструктора запросов создадим запрос ЗапросВыборФамилии (рис.7).

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Рисунок 7. Создание запроса на выборку игроков

Откроем форму Кости в режиме Конструктор. Для поля со списком Фамилия первого

игрока выполним настройки свойств:

Вкладка Данные:

Источник строк – ЗапросВыборФамилии.

Тип источника строк – Таблица или запрос.

Присоединенный столбец – 1.

Вкладка Макет:

Число столбцов –2.

Ширина столбцов – 0см;3см.

Выполнить аналогичный настройки для поля со списком второго игрока.

3.2. Создание запросов для отчетов статистики

После выбора фамилии формы Кости можно посмотреть статистику игр выбранного

игрока. Данную возможность реализуем с помощью отчетов, построенных на основе запросов:

ЗапросОтчетИгрок1, ЗапросОтчетИгрок2. Запросы строим с использованием инструмента

Конструктор запросов. Добавляем таблицы в конструктор запроса. Выбираем все поля таблицы

Игрок, все поля таблицы Игра. В поле КодИгрок формируем условие отбора – ссылку на элемент

управления Поле со списком cboВыбор1 формы Кости для первого игрока и cboВыбор2 формы

Кости второго игрока соответственно (рис.8).

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Рисунок 8. Создание запроса по статистике первого игрока

3.3. Создание запросов на сохранение результатов игры

Выражение, определяющее ссылку на свойство .Value (значение) элемента управления

(объекта) формы, в общем виде выглядит так:

Forms![Форма1].Controls![Поле1].Value (1)

Операторы "!" и "." идут через один. Чередуются имена коллекций и их элементов, причем

оператор "!" означает, что справа от него указан элемент коллекции, а оператор "." служит для

обращения к свойству этого элемента.

Квадратные скобки следует использовать, если имя элемента содержит внутренние

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

Коллекция Controls формы используется в Access по умолчанию. Поэтому выражение (1)

может быть записано короче:

Forms![Форма1]![Поле1].Value (2)

Создадим запрос на запись результатов игры для первого игрока. Для этого кликнем по

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

таблицы. Кликнув в области составления запроса правой клавишей мыши перейдем в Режим

SQL.

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Рисунок 9. Создание запроса на запись результата игры

В редакторе SQL наберем выражение запроса на вставку новых записей в таблицу Игра.

Для вставки новой строки в таблицу используем SQL инструкцию INSERTINTO (рис.10).

INSERT INTO Игра (КодИгрок, КоличествоОчков, Результат)

VALUES (

Forms!Кости![cboВыбор1].Value,

Forms!Кости![txtСчет1].Value,

Forms!Кости![txtРезультат1].Value

);

Рисунок 10. Запрос на добавление результатов игры первого игрока

Сохраним запрос с именем ДобавлениеДанныхИгрок1 (рис.11).

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Рисунок 11. Сохранение запроса

Аналогично создадим запрос на сохранение результатов игры второго игрока. Запрос

назовем ДобавлениеДанныхИгрок2.

Важно. При сохранении запроса ядро базы данных может оптимизировать созданное

нами SQL-выражение (рис.9), визуально это может выглядеть как изменение формы записи

выражения.При этом главное свойство запроса - его работоспособность не нарушится.

4.

Создание отчетов

Чтобы просмотреть статистику игр достаточно выбрать фамилию интересующего игрока в

форме Кости. Данная возможность будет реализована с помощью отчетов, построенных на

основе созданных запросов: ЗапросОтчетИгрок1 и ЗапросОтчетИгрок2.

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

отчетов, в открывшемся диалоговом окне в качетсве источника выберем запрос

ЗапросОтчетИгрок1. Выберем все доступные поля запроса (рис.12).

Рисунок 12. Выбор полей отчета

Выберем вид представления данных как на рисунке (рис.13).

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Рисунок 13. Выбор представления данных

По полю Результат создадим дополнительный уровень группировки.

Рисунок 14. Группируем отчет по полю Результат

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Настройку сортировки записей оставляем без измененний.

Рисунок 15. Выбор порядка сортировки

Настройку вида макета оставляем без изменений.

Рисунок 16. Выбор макета

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Зададим имя отчета ОтчетИгрок1.

Рисунок 17. Задание имени отчета

После форматирования объектов интерфейса примерный вид отчета ОтчетИгрок1 в

режиме Конструктор приобрел вид, представленный на рисунке 18.

Рисунок 18. Примерный вид отчета

Аналогично создать отчет для второго игрока ОтчетИгрок2.

5.

Кодинг формы « Регистрация»

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Приступим к написанию программного кода логики игры (кодингу).

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

Добавить игрока. Для вставки новой строки в таблицу Игрок используемSQL инструкцию INSERT

INTO.

Важно. Если в случае создания запросов на сохранение результатов игры (п.3.3) мы

создавали запрос на вставку записей, который потом запустим с помощью макрокоманды, то

сейчас запустим запрос из кода программы.

SQL выражение INSERT INTO формируем «на лету», это значит, что конечный вид

выражение примет только в момент запуска обработчика.

Так как инструкция SQL запускается из модуля текущей формы, выражение (2) (п.3.3),

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

Me.[Поле1].Value (3)

Ключевое слов Me указывает на принадлежость текстовых полей текущей форме.

strSQL = "INSERT INTO Игрок (Фамилия, Имя, Отчество, Ник, Пароль) VALUES (" _

& "'" &Me.Фамилия.Value& "'," _

& "'" &Me.Имя.Value& "'," _

& "'" &Me.Отчество.Value& "'," _

& "'" & Me.Ник.Value& "'," _

& "'" & Me.Пароль.Value& "');"

С помощью функции IsNull проверяем на заполнение обязательные текстовые поля. Если

хотя бы одно из полей не заполнено, предупреждаем об этом пользователя, выходим из

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

текущей базы данных.

If (IsNull(Фамилия) Or IsNull(Ник) Or IsNull(Пароль)) Then

MsgBox "Для корректной регистрации необходимо заполнить обязательные

текстовые поля"

Else:

CurrentDb.Execute strSQL, dbFailOnError

MsgBox "Пользователь зарегистрирован в системе"

End If

Метод Execute выполняет запрос на изменение или инструкцию SQL для указанного

объекта.

объект.Execute источник, параметры

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

где:

объект: объектная переменная, представляющая объект Connection или Базу Данных, для

которого будет выполнен запрос.

источник: выражение или переменная типа String, содержащая инструкцию SQL.

параметры: необязательный. Константа или комбинация констант, определяющая

характеристики целостности данных.Например: dbFailOnError - отмена всех внесенных

изменений при возникновении ошибки.

CurrentDb.ExecutestrSQL, dbFailOnError

здесь:

объект CurrentDB – текущая база данных;

источник strSQL – сформированное выражение SQL;

параметр dbFailOnError – константа

.

Полный код обработчика события представлен в листинге Листинг 1.

Листинг 1. Регистрация нового игрока

Private Sub cmdДобавитьИгрока_Click()

On Error GoTo HandlerError

strSQL = "INSERTINTOИгрок (Фамилия, Имя, Отчество, Ник, Пароль) VALUES (" _

& "'" & Me.Фамилия.Value& "'," _

& "'" & Me.Имя.Value& "'," _

& "'" & Me.Отчество.Value& "'," _

& "'" & Me.Ник.Value & "'," _

& "'" & Me.Пароль.Value & "');"

'для отладки программы бывает важно просмотреть сформированное выражение

'MsgBox strSQL

If (IsNull(Фамилия) Or IsNull(Ник) Or IsNull(Пароль)) Then

MsgBox "Для корректной регистрации необходимо заполнить обязательные

текстовые поля"

Else:

'выполняем SQL-инструкцию вставки новой записи

CurrentDb.Execute strSQL, dbFailOnError

MsgBox "Пользователь зарегистрирован в системе"

End If

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

ExitHere:

Exit Sub

HandlerError:

'при ошибке вставки новой записи выводим сообщение пользователю

MsgBox "Error. Failed to register user in system"

Resume ExitHere

End Sub

6.

Кодинг формы «Кости»

6.1. Объявление, инициализация переменных, элементов управления

Объявим переменные уровня модуля формы (листинг 2).

Настройка элементов управления может быть выполнена разработчиком либо в режиме

конструктора, либо программным путем. Оба способа имеют право на существование, дело

предпочтений программиста.

Инициализацию объявленных переменных и первичную настройку элементов управления

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

загруженной формы показан на рисунке 5.

Листинг 2. Объявление переменных уровня модуля

Rem номер броска первого игрока

Dim number_shots_1 As Byte

Rem номер броска второго игрока

Dim number_shots_2 As Byte

Rem сумма баллов первого игрока

Dim amount1 As Byte

Rem сумма баллов второго игрока

Dim amount2 As Byte

Листинг 3. Загрузка формы

Private Sub Form_Load()

number_shots_1 = 0

number_shots_2 = 0

amount1 = 0

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

amount2 = 0

Me.cmdКинуть1.Enabled = False

Me.cmdКинуть2.Enabled = False

Me.cmdНоваяИгра.Enabled = False

Me.cmdОтчет1.Enabled = False

Me.cmdОтчет2.Enabled = False

Me.txtСчет1.Enabled = False

Me.txtСчет2.Enabled = False

Me.txtРезультат1.Enabled = False

Me.txtРезультат2.Enabled = False

Me.txtБросок1.Enabled = False

Me.txtБросок2.Enabled = False

End Sub

6.2. Кодинг загрузки изображения аватарки

Создадим кодинг загрузки аватарки первого игрока. Загружается аватарка с помощью

пользовательской фукнции InputBox. Выбор возможен из трех заранее подготовленных

изображений. В листинге 4 представлен кодинг загрузки для первого игрока. Загрузка аватарки

второго игрока в блок imgАватар2 выполняется аналогично. При написании кода используем

инструкцию обработки ошибки On Error Go To.

Листинг 4. Загрузка изображения аватарки первого игрока

Private Sub cmdЗагрузитьАватар1_Click()

Dim Avatar As String

On Error Go To HandlerError

Avatar = InputBox("Список возможных фото: user1, user2, user3", "Выбор фото

пользователя", "user")

imgАватар1.Picture = CurrentProject.Path & "\user\" & Avatar & ".png"

ExitHere:

Exit Sub

HandlerError:

MsgBox "Упс... Что-то пошло не так :-(("

Resume ExitHere

End Sub

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

6.3. Кодинг обработчика выбора фамилии

В обработчике выбора фамилии игрока используется функция isNull, определяющая

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

и Отчет. В листинге 5 приведен пример кодинга выбора фамилии первого игрока. Выбор

фамилии второго игрока выполняется аналогично. При написании кода выбора фамилии второго

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

Листинг 5. Выбор фамилии первого игрока

Private Sub cboВыбор1_AfterUpdate()

If (IsNull(cboВыбор1.Value)) Then

Me.cmdКинуть1.Enabled = False

Me.cmdОтчет1.Enabled = False

Else

Me.cmdКинуть1.Enabled = True

Me.cmdОтчет1.Enabled = True

Me.cmdНоваяИгра.Enabled = False

End If

End Sub

6.4. Кодинг обработчика командной кнопки «Очистить»

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

начальное состояние. В листинге 6 приводится пример кода для командной кнопки первого игрока.

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

соответствующие имена управляющих элементов.

Листинг 6. Кодинг кнопки Очистить первого игрока

PrivateSubcmdОчистить1_Click()

number_shots_1 = 0

amount1 = 0

Me.cboВыбор1.Value = ""

Me.txtСчет1.Value = ""

Me.txtРезультат1.Value = ""

Me.txtБросок1.Value = ""

Me.imgКубик1.Picture = ""

Me.imgКубик2.Picture = ""

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Me.imgКубик3.Picture = ""

Me.imgКубик4.Picture = ""

Me.cmdКинуть1.Enabled = False

Me.cmdОчистить1.Enabled = False

Me.imgАватар1.Picture = CurrentProject.Path & "\user\" & "unnamed.jpg"

End Sub

6.5. Кодинг обработчика командной кнопки «Отчет»

Объект DoCmd —позволяет программным образом выполнять макрокоманды Access, те

действия, которые можно просмотреть в окне конструктора макрокоманд. Действия — это самые

распространенные

операции,

которые

обычно

приходится

выполнять

в

Access

программным

способом.

Объект реализует набор команд, которые ориентированы на часто выполняемые

операции, например, открыть-закрыть форму, открыть запрос и т.д.У объекта DoCmd нет свойств

— только методы (табл. ХХХ)

Таблица 5. Некоторые методы объекта DoCmd

Метод

Описание

Синтаксис

OpenReport

Открыть отчѐт

OpenReport ―имя_отчѐта‖

OpenTable

Открыть таблицу

OpenTable ―имя_таблицы‖

OpenForm

Открыть форму

OpenForm ―имя_формы‖

OpenQuery

Открыть запрос

OpenQuery ―имя_запроса‖

GotoControl

Передаѐт фокус элементу управления

Close

Закрыть активное окно

GotoRecord

Передаѐт фокус следующей записи в активной

форме или таблице

Beep

Cлужит для издания звука

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

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

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

умолчанию. Например, метод OpenForm использует семь аргументов, но только первый из них,

“имя_формы”, является обязательным.

Примеры:

Открыть форму.

DoCmd.OpenForm имяФормы [, режим] [, имяФайла] [, условиеWhere] [,

режимДанных] [, режимОкна] [, аргументыОткрытия]

Открыть отчет.

Макрокоманда ОткрытьОтчет (OpenReport) открывает отчет в режиме конструктора, в

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

отбор записей, которые следует включить в отчет.

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

DoCmd.OpenReport имяОтчета [, режим] [, имяФайла] [, условиеWhere]]

В листинге 7 представлен кодинг открытия отчета с использованием объекта DoCmd.

Листинг 7. Открытие отчета

Private Sub cmdОтчет1_Click()

DoCmd.OpenReport "ОтчетИгрок1", acViewReport

End Sub

6.6. Кодинг обработчика командной кнопки «Кинуть кости»

Напишем обработчик командной кнопки Кинуть кости для первого игрока. Кодинг

командной кнопки Кинуть кости второго игрока выполняется аналогично. При написании кода не

забывайте менять соответствующие имена управляющих элементов.

Важно. Переменная k цикла обработчика для второго игрока будет изменяться в

диапазоне от 5 до 8.

For k = 5 To 8

num = Int(Rnd * 6) + 1

. . . . . . . . . .

Next k

Предлагаемый код обработчика написан с учетом того, что графические файлы

изображений кубиков хранятся в директории cube (рис.19).

Рисунок 19. Графические файлы изображений кубиков

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

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

Листинг 8. Код обработчика события для кнопки Кинуть кости первого игрока

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Private Sub cmdКинуть1_Click()

Dim num As Byte

Randomize

For k = 1 To 4

'получаемслучайное число в диапазоне от 1 до 6

num = Int(Rnd * 6) + 1

'суммируем набранные баллы

amount1 = amount1 + num

'обращаемся к свойству Picture объекта с именем imgКубик[k] коллекции формы

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

'num

Me.Controls("imgКубик" & k).Picture = CurrentProject.Path & "\cube\" & "k" &

num & ".png"

Next k

Me.txtСчет1.Value = amount1

'ведем учет количества бросков игрока

number_shots_1 = number_shots_1 + 1

Me.txtБросок1.Value = number_shots_1

'если первый игрок выполнил три броска, смотрим, сколько бросков у второго

'игрока

If (number_shots_1 = 3) Then

'если второй игрок сделал три броска определяем победителя игры

If (number_shots_2 = 3) Then

If (amount1 > amount2) Then

Me.txtРезультат1.Value = "Победа"

Me.txtРезультат2.Value = "Поражение"

Else

Me.txtРезультат1.Value = "Поражение"

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Me.txtРезультат2.Value = "Победа"

End If

'отключим системные сообщения о добавлении данных в таблицу

DoCmd.SetWarnings False

DoCmd.OpenQuery "ДобавлениеДанныхИгрок1", acViewNormal, acAdd

DoCmd.OpenQuery "ДобавлениеДанныхИгрок2", acViewNormal, acAdd

Me.cmdНоваяИгра.Enabled = True

End If

'чтобы заблокировать кнопку необходимо убрать с нее фокус

Me.cboВыбор1.SetFocus

Me.cmdКинуть1.Enabled = False

End If

End Sub

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

это для самостоятельного решения.

7.

Кодинг командных кнопок общих элементов управления

Листинг 9. Кодинг командной кнопки Регистрация

Private Sub cmdРегистрация_Click()

DoCmd.OpenForm "Регистрация"

End Sub

Листинг 10. Кодинг командной кнопки Новая игра

Private Sub cmdНоваяИгра_Click()

number_shots_1 = 0

number_shots_2 = 0

amount1 = 0

amount2 = 0

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

Me.cboВыбор1.Value = ""

Me.cboВыбор2.Value = ""

Me.txtСчет1.Value = ""

Me.txtСчет2.Value = ""

Me.txtРезультат1.Value = ""

Me.txtРезультат2.Value = ""

Me.txtБросок1.Value = ""

Me.txtБросок2.Value = ""

Me.imgКубик1.Picture = ""

Me.imgКубик2.Picture = ""

Me.imgКубик3.Picture = ""

Me.imgКубик4.Picture = ""

Me.imgКубик5.Picture = ""

Me.imgКубик6.Picture = ""

Me.imgКубик7.Picture = ""

Me.imgКубик8.Picture = ""

Me.cmdКинуть1.Enabled = False

Me.cmdКинуть2.Enabled = False

Me.cmdОтчет1.Enabled = False

Me.cmdОтчет2.Enabled = False

End Sub

Листинг 11. Кодинг командной кнопки Обновить

Private Sub cmdОбновить_Click()

DoCmd.Requery

End Sub

Листинг 12. Кодинг командной кнопки Закрыть форму

PrivateSubcmdЗакрыть_Click()

DoCmd.Close

Государственное профессиональное образовательное учреждение "Печорский промышленно-экономический техникум"

Специальность: 09.02.07 Информационные системы и программирование

Дисциплина: ОП.05 Основы алгоритмизации и программирования

ОП.08 Основы проектирования баз данных

Преподаватель: Кулик Е.В.

End Sub

Провести тестирование и работоспособность программы. Провести необходимую отладку,

исправление возможных ошибок и опечаток программного кода.

8.

Заключение

Результатом выполнения практической работы стала игра Кости написанная для двух

игроков, позволяющая сохранять и просматривать историю игр каждого зарегистрированного

игрока.

В методических рекомендациях по выполнению практической части работы поставлены и

решены следующие задачи:

совершенствованы умения, систематизированы и углублены знания проектирования

приложений;

расширены знания практического применения баз данных;

приобретены практические навыки программирования классических задач;

разработан пользовательский интерфейс программы;

написан кодинг программы настольной игры Кости.

Созданное приложение как в области логики работы, так и в области программного

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

В качестве основных шагов развития приложения можно предложить:

1.

дать пользователю возможность редактировать/удалять данные игрока;

2.

написать логику определения ничейного результата игры;

3.

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

как: количество кубиков, количество бросков.

4.

развивая п.2 можно разработать таблицу для хранения настроек параметров

игры.Спомощью данной таблицы предоставить игрокам возможность динамически

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

5.

развивая п.п.2,3 при наличии должного уровня подготовки студентов можно добавить

параметр – количество игроков;

6.

расширить собираемую статистику игры. Выводить максимально/минимально набираемое

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

7.

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

студентов игра может быть реализована в базе данных как версии файл-сервер, так и в

клиент-серверном исполнени.



В раздел образования