Сайт А.В. Сарикова
Разделы
Главная
Новости
Программы
Статьи
Web-разработки
Отзывы
Контакты
 
Новости
 
Посетите
Стальные двери по ценам завода - двери romanio. . iMac: характеристики iMac, найти. . glofiish battery htc magic battery toshiba battery . htc battery hero battery pda battery . battery for htc hero . extended battery hp data messenger . программы обучения бесплатно, обучение бизнесу бесплатно . Разработка и создание сайтов: продвижение сайта. . МК-Безопасность - установка домофонов, видеодомофоны, СКД. . купить детские развивающие коврики taf toys
 
Статьи
Структура файлов .pmn
В файлах с расширением .pmn игра Пентамино для Windows 95 сохраняет игровую ситуацию. В изложении используются термины, вводимые в файле помощи игры Пентамино winpenta.hlp. Все участки кода записаны по правилам языка программирования Visual Basic.

Файл .pmn имеет следующую структуру:

Type tsave
 sq(1 To Q_NET_X, 1 To Q_NET_Y) As Byte
 penta(1 To 12) As tpentasave
 marked As Integer
 name As String * 20
End Type


Ниже объясняется назначение каждого поля этой структуры.

Игровое поле разбито на поля-клетки, причем по горизонтали в нем 27 полей, а по вертикали - 24 поля. Константы Q_NET_X и Q_NET_Y как раз и содержат эти значения:

Global Const Q_NET_X = 27
Global Const Q_NET_Y = 24


Массив sq(1 To Q_NET_X, 1 To Q_NET_Y) As Byte описывает состояние каждого поля игрового окна. Переменная sq(i, j) принимает следующие значения:

sq(i, j)=0 - если в поле нет элемента фигуры и поле не выделено;

sq(i, j)=255 - если поле выделено (помечено темно-серым квадратом при включенном режиме Выделить) и в нем нет элемента фигуры;

sq(i, j)=1..12 - если в поле имеется элемент фигуры с соответствующим номером. Номера фигур аналогичны их номерам в окне фигур и имеют значения от 1 до 12.

Массив penta описывает состояние всех фигур пентамино. Переменная penta(i) имеет следующую структуру:

Type tpentasave
 Index(1 To 5) As tcoord
 curcomb As Byte
 status As Byte
End Type


Переменная Index(i) содержит координаты i-го элемента фигуры пентамино и описывается структурой:

Type tcoord
 x As Integer
 y As Integer
End Type


Index(i).x, Index(i).y - номера поля соответственно по горизонтали и вертикали в игровом окне, где расположен i-й элемент фигуры.

1 <= Index(i).x <= Q_NET_X
1 <= Index(i).y <= Q_NET_Y


Знак <= означает "меньше или равно".

Этот массив действителен для фигуры, стоящей в игровом окне (имеющей статус, равный 2). Для фигуры со статусом 1 этот массив недействителен и при записи файла .pmn не заполняется. При последующем чтении файла .pmn координаты фигуры вычисляются на основании внутрипрограммной информации, а не информации из файла.

curcomb - текущая позиция фигуры (также учитывается только если фигура имеет статус, равный 2).

1 <= curcomb <= максимальное число позиций фигуры


В окне фигур curcomb=1 всегда.

status - статус фигуры. Может принимать значения 1 (фигура в окне фигур) и 2 (фигура в игровом окне).

Возвращаемся к рассмотрению структуры tsave.

marked - переменная, указывающая, включен (marked=-1) или выключен (marked=0) режим Выделить.

name - имя поля (отображается в нижней части информационного окна).

Размер получившейся структуры равен

Q_NET_X*Q_NET_Y*Len(Byte)+12*(5*(Len(Integer)+Len(Integer))+Len(Byte)+
+Len(Byte))+Len(Integer)+Len(String*20)=27*24*1+12*(5*(2+2)+1+1)+2+20=
=934 байта
© O. Sarikov, 2008 - 2010