Пасьянс

Содержание

1. Задание

2. Постановка задачи и уточнение

3.Спецификация программ

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

3.1.1. Инструкция по работе с Windows - приложением

3.1.2. Инструкция по работе с DOS - утилитой

3.2. Внутреннее представление программ

(Взаимодействие программ с ОС)

3.2.1. Windows приложение

3.2.1. Приложение под DOS 7.0.

4. Отладка

5. Используемая литература

6. Приложение .

1. Задание

Разработать две программы.

Первая программа - приложение под Windows 9x, созданное в среде VC++ 6.0, написанное с использованием API, которое должна содержать работу с:

1. графическими примитивами,

2. таймером,

3. стандартным диалогами,

4. файлами (создание - открытие, чтение -запись ),

5. диалоговыми окнами

6. реестром (создание - открытие разделов, чтение - запись параметров)

Вторая программа - приложение под DOS 7.0. (поддержка длинных имен) на ассемблере, которое осуществляет обработку файлов созданных первым приложением.

2. Постановка задачи и уточнение

1. В среде VC ++ 6.0 разработать программу-игру. Это Windows 9x - приложение, в главном окне которого отображается каждый раз новый карточный расклад . Согласно правилам игры можно открывать следующую карту только если она совпадает с предыдущей изображением. Если не совпадает, то предыдущая карта закрывается. Всего 8 разновидностей карт. Игра закончена когда открыты все карты. Таймер фиксирует (в секундах ) за сколько времени пройдена игра. Графика прокручивается бегунком.

Главное окно также включает в себя меню: New - создание нового текстового файла для сохранения информации об игре; "Load" - вызов стандартного диалога открытия файла - загрузка данных об игре из текстового файла в панель редактирования Edit box, которая также расположена в главном окне, "Save" - вызов стандартного диалога сохранения файла - сохранение данных об игре в файле в формате :

Матрица открытых-закрытых карт;

Количество секунд, за которые пройдена игра;

Exit - выход из программы с сохранением.

2. Разработать программу (утилиту) на ассемблере (компиляторы TASM или MASM) под DOS 7.0., которое читает данные из файлов (имя файла вводится с командной строки), которые созданны вышеуказанным приложением под Windows 9x и выводит их на экран в следующем формате:

Количество открытых карт: N

Открыты следующие карты:

Красный квадрат

Синий треугольник

Красный квадрат

Зеленый прямоугольник и т.д……

Игра пройдена за : N секунд

3.Спецификация программ

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

3.1.1. Инструкция по работе с Windows - приложением

Описание меню (всех пунктов), всех элементов управления, горячих клавиш, нажатий на клавиши мыши, диалогов (включая стандартные), скриншоты всех окон (включая стандартные диалоги).

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

Главное окно содержит:

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

2)Панель редактирования Edit box, в которую выводится содержимое текстового файла с информацией об игрe

3) меню из 4х пунктов:

New

Load

Save

Exit

При нажатии на один из этих пунктов появлются стандартные диалоги:

New начинает новую игру

Load загружает уже созданный файл:

Save записывает информацию в указанный файл:

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

Exit завершает работу приложения, предварительно выводя сообщение :

Если нажато Да то выводится стандартый диалог сохранения, после чего программа завершается.

5)Бегунок, реагирует на события: перетаскивание бегунка вручную, нажатие над\под бегунком, нажатие стрелки вниз\вверх.

3.1.2. Инструкция по работе с DOS - утилитой

Запуск утилиты.

Запуск программы (файл viewer.exe) можно выполнить либо из программы Far либо из командной строки MS DOS, введя

viewer.exe my_file.sav

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

Входные данные

Входные данные программы находятся в файле “my_file.sav”. Файл содержит строку пойманных карт (16 символов (0 если не поймана 1- поймана)), строку открытых\закрытых карт (16 символов (0-если закрыта, 1-открыта)), номера соответствующих каждой карте рисунков (16 символов от 1 до 8) , количество секунд, за кот. пройдена игра (30 символов) , (1 символ + символ перехода на новую строку и символ возврата каретки = 3 символа)., итого длина файла =81

010101100100000101010110110000013670165210274435your time is: 6 seconds

| 16 | 16 | 16 | 30 |3 |

Выходныеданные

=================================================================

** Kol-vo poymannih kart: 02

** Kol-vo otkritih kart: 02

** OTKRITIE KARTI:

ZELENIJ KVADRAT

ZELENIJ KVADRAT

** IGRAPROYDENAZA (SEC): 9

===============================================

3.2. Внутреннее представление программ

(Взаимодействие программ с ОС)

3.2.1. Windows приложение

3.2.1.1. Общий алгоритм работы программы

Данные об игре хранятся в 8 массивах: х1,х0,у0,у1,opened,n,names,catched

Рабочее поле поделено на 16 прямоугольных областей, если мышка попадает и щелкает 1 раз в одну из этих областей, то карта открыта, 2 раза - карта снова закрывается.

x0 , y0 –координаты верхних левых углов карт

x1, y1 – координаты нижних правых углов карт

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

Чтобы расклад карт каждый раз был случайным есть массив n, в каждую ячейку которого случайным образом записывается число от 0 до 4 (каждое из чисел четыре раза записывается в случайный номер ячейки, если эта ячейка уже что-то содержит, то снова генерируется случ. число пока не заполнится весь массив n). В массиве names (массив строк) хранятся имена загружаемых изображений. Номера ячеек, в которых хранятся изображения, соответствуют числам, которые хранятся в массиве n, поэтому чтобы посмотреть, совпадают ли изображения , мы обращаемся к изображению так: names[n[i]].

Согласно правилам игры можно открывать следующую карту только если она совпадает с предыдущей изображением. Если не совпадает, то предыдущая карта закрывается. Этот механизм проверяется следующим условием: происходит обращение по индексу двух сравниваемых карт, и если в массиве opened по этим индексам стоят единички, а в массиве n по этим индексам стоят одинаковые числа, то в массив catched в эти индексы записывается единичка, изображения становятся «пойманными» и не реагируют на нажатие мыши.


Страница: