Охота на лис


Главная / ЭКВМ / Программы для ЭКВМ / Игры

За основу взята программа Ю.Иванова и П.Иртюга из журнала "Наука и жизнь" N10 за 1990 г. Основные изменения: добавлен графический интерфейс и переделан алгоритм генерации поля.

Правила игры (кратко)

Охота на лис

На поле 10х10 клеток спрятаны от 1 до 9 "лис" (по выбору игрока).

Игрок может проверить любую клетку. Результатом будет или число "лис", пеленгуемых по горизонтали, вертикали и диагонали из этой клетки, или отметка об обнаружении в этой клетке "лисы".

Цель: Отыскать всех "лис" за наименьшее кол-во ходов.

Особенности реализации:

  • не более одной "лисы" в одной клетке;
  • повторные проверки увеличивают счётчик ходов;
  • найденные "лисы" пеленгуются.
Охота на лис - поле игры

Управление:

  • 5 - проверка;
  • 0 - установка/сброс отметки;
  • 1 - перемещение влево-вниз;
  • 2 - перемещение вниз;
  • 3 - перемещение вправо-вниз;
  • 4 - перемещение влево;
  • 6 - перемещение вправо;
  • 7 - перемещение влево-вверх;
  • 8 - перемещение вверх;
  • 9 - перемещение вправо-вверх.

Автор программы: Pavabor

Опубликовано: mk_152.livejournal.com/34136.html


Программа "Охота на лис"

Файл FoxHuntURI.mkp от 30.11.2010 (КС 42928/114)

  0 1 2 3 4 5 6 7 8 9
000 Cx П 6 П A П B 2 4 П 8 П 0 2 PP П
010 90 10 1 PP П 90 03 0 4 7 7
020 PP П 90 21 P ПП 04 60 2 6 B↑ PP П
030 90 00 0 PP П 90 03 0 4 9 2
040 PP П 90 21 K ГРФ 2 P ПП 04 23 P ПП 04
050 40 F x≠0 44 П 9 PP П 90 23 K ГРФ 4 P ПП
060 04 23 1 П 5 ИП 9 1 - П 2 ИП 8 П 0
070 P ПП 04 13 K П 0 P ПП 04 13 П 4 ИП 8 П 0
080 ИП 5 П 1 ИП 4 K ИП 0 - F x≠0 74 F L1 82 ИП 4
090 K П 0 K ИП 5 F L2 78 2 PP П 90 10 6 3
100 B↑ PP П 90 14 1 1 П 2 П 1 1 ИП 2
110 П 0 1 PP П 90 11 6 + F L0 13
120 6 + F L1 09 0 B↑ 8 2 PP П
130 90 00 0 5 0 6 PP П 90 21 3
140 2 B↑ 7 8 PP П 90 00 0 5 1
150 3 PP П 90 21 Cx П 4 П 5 П 6 1 PP П
160 90 03 ИП 5 1 K max F lg K [x] 4 × 9
170 2 - 1 0 PP П 90 00 ИП 5
180 PP П 90 23 4 2 B↑ 8 4 PP П 90
190 00 ИП 6 PP П 90 23 4 7 PP П 90 20
200 ИП 9 PP П 90 23 ИП 6 - F x=0 30 K ГРФ 5
210 П 0 PP ИП 90 52 F x=0 11 ИП 0 2 F xy P ПП
220 04 23 F L0 11 P ПП 04 32 P БП 00 00
230 3 PP П 90 01 ИП B 6 × 1 + ИП A
240 6 × 1 + PP П 90 00 7 B↑ PP П
250 90 13 P ПП 04 49 K ГРФ 7 B↑ PP П 90
260 13 P ПП 04 40 F x=0 75 1 1 П 4 P ПП
270 03 88 P БП 02 34 5 - P x≠0 03 16
280 4 + П D 3 ÷ K [x] П C 1 - /-/
290 ИП B P ПП 03 09 П B ИП D ИП C 3 × -
300 1 - ИП A ПП 09 П A P БП 02 34 +
310 0 K max 9 K max В/О Cx П 4 ИП B 1
320 + ИП A 1 0 ÷ + П 3 ИП 8 П 0 ИП 9
330 П 1 ИП 3 K ИП 0 K |x| - F x=0 55 ИП 0 П 7 K ИП 7
340 P x≥0 02 61 /-/ K П 7 K ИП 6 1 0 П 4 8
350 P ПП 04 23 БП 78 F Bx K [x] ИП 3 K [x] -
360 F x≠0 75 + F x≠0 75 B↑ ВП 1 F Bx ÷
370 K |x| 1 - F x=0 76 K ИП 4 F L1 31 K ИП 5 0
380 PP П 90 01 ПП 88 P БП 01 62 ИП B 6
390 × 2 + ИП A 6 × 3 + PP П 90
400 00 0 5 2 2 ИП 4 5 × + PP П
410 90 15 В/О K СЧ ВП 2 K [x] 1 0 ÷
420 1 + В/О ВП 2 B↑ 2 0 PP П 90
430 52 В/О PP ИП 90 29 K NOT F x≠0 32 K NOT В/О
440 ПП 32 9 - F x≥0 40 F Bx В/О 1
450 5 PP П 90 50 PP ИП 90 50 F x≠0 54 В/О
460 5 6 B↑ 1 2 0 PP П 90 00 0
470 5 8 2 PP П 90 15 В/О 8Eh E5h AEh
480 E2h A0h 20h ADh A0h 20h 3Ch ABh A8h E1h
490 3Eh 00h AAh AEh ABh 2Dh A2h AEh 20h 28h
500 31h 2Dh 39h 29h 3Ah 00h 95h AEh A4h AEh
510 A2h 3Ah 00h 8Dh A0h A9h A4h A5h ADh AEh
520 3Ah 00h 03h 05h 1Eh 11h 0Fh 03h 05h 12h
530 1Fh 10h 03h 05h 19h 15h 17h 03h 05h 11h
540 15h 1Fh 03h 05h 07h 04h 1Fh 03h 05h 17h
550 15h 1Dh 03h 05h 1Eh 15h 1Dh 03h 05h 01h
560 19h 07h 03h 05h 1Fh 15h 1Fh 03h 05h 17h
570 15h 0Fh 03h 05h 0Fh 1Eh 0Fh 03h 05h 0Ah
580 00h 0Ah 07h 08h 7Fh 40h 5Fh 41h 7Dh 00h
590 7Dh                  

Исходный текст для кросс-компилятора

Файл FoxHuntURI.mkl от 30.11.2010

.CHARSET 1251

; Файл FoxHuntURI
.ORG 0

A0:	 ; с адреса 227
	CX
	M 6
	M A
	M B
	24
	M 8
	M 0
	2
	PP M 9010	; Инициализация экрана (Графический экран)
	1
	PP M 9003	; Номер шрифта (Графический экран)
	0477
	PP M 9021	; Вывод строки из памяти программ (Графический экран)
	P GSB A460
	26
	ENT
	PP M 9000	; Начальные координаты объекта (Графический экран)
	0
	PP M 9003	; Номер шрифта (Графический экран)
	0492
	PP M 9021	; Вывод строки из памяти программ (Графический экран)
	K GRPH

A44:	 ; с адреса 51
	2
	P GSB A423
	P GSB A440
	F X!=0 A44
	M 9
	PP M 9023	; Вывод числа (Графический экран)
	K GRPH
	4
	P GSB A423
	1
	M 5
	RM 9
	1 -
	M 2
	RM 8
	M 0
	P GSB A413
	K M 0

A74:	 ; с адреса 85
	P GSB A413
	M 4

A78:	 ; с адреса 92
	RM 8
	M 0
	RM 5
	M 1

A82:	 ; с адреса 87
	RM 4
	K RM 0
	-
	F X!=0 A74
	F L1 A82
	RM 4
	K M 0
	K RM 5
	F L2 A78
	2
	PP M 9010	; Инициализация экрана (Графический экран)
	63
	ENT
	PP M 9014	; Вывод рамки (Графический экран)
	11
	M 2
	M 1
	1

A109:	 ; с адреса 123
	RM 2
	M 0
	<->
	1

A113:	 ; с адреса 118
	PP M 9011	; Вывод точки (Графический экран)
	6 +
	F L0 A113
	<->
	6 +
	F L1 A109
	0
	ENT
	82
	PP M 9000	; Начальные координаты объекта (Графический экран)
	0506
	PP M 9021	; Вывод строки из памяти программ (Графический экран)
	32
	ENT
	78
	PP M 9000	; Начальные координаты объекта (Графический экран)
	0513
	PP M 9021	; Вывод строки из памяти программ (Графический экран)
	CX
	M 4
	M 5
	M 6
	1
	PP M 9003	; Номер шрифта (Графический экран)

A162:	 ; с адреса 385
	RM 5
	1
	K MAX
	F LG
	K INT
	4 *
	92
	<->
	-
	10
	<->
	PP M 9000	; Начальные координаты объекта (Графический экран)
	RM 5
	PP M 9023	; Вывод числа (Графический экран)
	42
	ENT
	84
	PP M 9000	; Начальные координаты объекта (Графический экран)
	RM 6
	PP M 9023	; Вывод числа (Графический экран)
	47
	PP M 9020	; Вывод символа (Графический экран)
	RM 9
	PP M 9023	; Вывод числа (Графический экран)
	RM 6
	-
	F X=0 A230
	K GRPH
	5
	M 0

A211:	 ; с адреса 214, 222
	PP RM 9052	; Звуковой сигнал (Функции реального времени)
	F X=0 A211
	RM 0
	2 
	F X^Y
	P GSB A423
	F L0 A211
	P GSB A432
	P GOTO A0

A230:	 ; с адреса 206
	3
	PP M 9001	; Атрибуты вывода (Графический экран)

A234:	 ; с адреса 272, 306
	RM B
	6 *
	1 +
	RM A
	6 *
	1 +
	PP M 9000	; Начальные координаты объекта (Графический экран)
	7
	ENT
	PP M 9013	; Вывод прямоугольника (Графический экран)
	P GSB A449
	K GRPH
	7
	ENT
	PP M 9013	; Вывод прямоугольника (Графический экран)

A261:	 ; с адреса 340
	P GSB A440
	F X=0 A275
	11
	M 4
	P GSB A388
	P GOTO A234

A275:	 ; с адреса 264
	5 -
	P X!=0 A316
	4 +
	M D
	3 /
	K INT
	M C
	1 -
	+/-
	RM B
	P GSB A309
	M B
	RM D
	RM C
	3 *
	-
	1 -
	RM A
	GSB A309
	M A
	P GOTO A234

A309:	 ; с адреса 291, 303
	+
	0
	K MAX
	9
	K MAX
	<->
	RTN

A316:	 ; с адреса 277
	CX
	M 4
	RM B
	1 +
	RM A
	10 /
	+
	M 3
	RM 8
	M 0
	RM 9
	M 1

A331:	 ; с адреса 376
	RM 3
	K RM 0
	K ABS
	-
	F X=0 A355
	RM 0
	M 7
	K RM 7
	P X>=0 A261
	+/-
	K M 7
	K RM 6
	10
	M 4
	8
	P GSB A423
	GOTO A378


A355:	 ; с адреса 335
	F ANS
	K INT
	RM 3
	K INT
	-
	F X!=0 A375
	+
	F X!=0 A375
	ENT
	EE 1
	F ANS
	/
	K ABS
	1 -
	F X=0 A376

A375:	 ; с адреса 360, 363
	K RM 4

A376:	 ; с адреса 373
	F L1 A331

A378:	 ; с адреса 353
	K RM 5
	0
	PP M 9001	; Атрибуты вывода (Графический экран)
	GSB A388
	P GOTO A162

A388:	 ; с адреса 269, 383
	RM B
	6 *
	2 +
	RM A
	6 *
	3 +
	PP M 9000	; Начальные координаты объекта (Графический экран)
	0522
	RM 4
	5 *
	+
	PP M 9015	; Вывод образа из памяти программ (Графический экран)
	RTN

A413:	 ; с адреса 70, 74
	K RAN
	EE 2
	K INT
	10 /
	1 +
	RTN


A423:	 ; с адреса 45, 59, 219, 350
	EE
	2 
	ENT 
	20
	PP M 9052	; Звуковой сигнал (Функции реального времени)
	RTN

A432:	 ; с адреса 224, 436, 440
	PP RM 9029	; Чтение кода клавиши и очистка буфера (Буфер клавиатуры)
	K NOT
	F X!=0 A432
	K NOT
	RTN

A440:	 ; с адреса 48, 261, 445
	GSB A432
	9
	<->
	-
	F X>=0 A440
	F ANS
	RTN

A449:	 ; с адреса 252
	15
	PP M 9050	; Формирование интервалов (таймер 0) (Функции реального времени)

A454:	 ; с адреса 457
	PP RM 9050	; Формирование интервалов (таймер 0) (Функции реального времени)
	F X!=0 A454
	RTN

A460:	 ; с адреса 23
	56
	ENT
	120
	PP M 9000	; Начальные координаты объекта (Графический экран)
	0582
	PP M 9015	; Вывод образа из памяти программ (Графический экран)
	RTN
	.DB 8Eh, 0E5h, 0AEh, 0E2h, 0A0h, 20h, 0ADh, 0A0h, 20h, 3Ch, 0ABh
	.DB 0A8h, 0E1h, 3Eh, 0h, 0AAh, 0AEh, 0ABh, 2Dh, 0A2h, 0AEh, 20h
	.DB 28h, 31h, 2Dh, 39h, 29h, 3Ah, 0h, 95h, 0AEh, 0A4h, 0AEh
	.DB 0A2h, 3Ah, 0h, 8Dh, 0A0h, 0A9h, 0A4h, 0A5h, 0ADh, 0AEh, 3Ah
	.DB 0h, 03h, 05h, 1Eh, 11h, 0Fh, 03h, 05h, 12h, 1Fh, 10h
	.DB 03h, 05h, 19h, 15h, 17h, 03h, 05h, 11h, 15h, 1Fh, 03h
	.DB 05h, 07h, 04h, 1Fh, 03h, 05h, 17h, 15h, 1Dh, 03h, 05h
	.DB 1Eh, 15h, 1Dh, 03h, 05h, 01h, 19h, 07h, 03h, 05h, 1Fh
	.DB 15h, 1Fh, 03h, 05h, 17h, 15h, 0Fh, 03h, 05h, 0Fh, 1Eh
	.DB 0Fh, 03h, 05h, 0Ah, 0h, 0Ah, 07h, 08h, 7Fh, 40h, 5Fh
	.DB 41h, 7Dh, 0h, 7Dh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh, 0FFh
	.DB 0FFh, 0FFh
.END 


НПП "СЕМИКО" (383) 271-01-25 (многоканальный)