ZX-Ревю 1993 №7-8 1992 г.

Читатель - читателю - своими успехами в области программирования на Бейсике делится с нами т. Дронов из Читы. Его опыт пригодится начинающим программистам.


ЧИТАТЕЛЬ ЧИТАТЕЛЮ

Своими успехами в области программирования на Бейсике делится с нами т. Дронов из Читы. Его опыт пригодится начинающим программистам.

"Высылаю Вам на суд свою первую программу и хочу сказать Вам большое спасибо за "ZX-РЕВЮ". Благодаря Вам я, изучив за месяц два годовых комплекта "ZX-РЕВЮ", узнал очень много хитростей и секретов Бейсика. Подтверждением этого является эта программа, написанная за один вечер. Я знаю, Бейсик - легкий язык, но без хорошей книги его не ПРОСТО освоить. А Ваша литература лучшая из всех, которую я видел. Информация излагается очень понятно и доступно. "Сейчас я, с помощью Вашей книги, приступаю к изучению Ассемблера. Надеюсь овладеть и этим языком, хотя он намного сложнее.

Теперь несколько слов о программе. Это аналог широко известной настольной игры "Морской бой", в которую мы частенько играли в детстве. Маленькое отличие заключается в том, что в моей игре корабли можно располагать как угодно и где угодно в пределах своего квадрата. Так же делает и компьютер."

ИФК: Спасибо за теплые слова. От себя хотим добавить несколько слов. Корабли в этой игре - только одноклеточные, их можно ставить и поодиночке, и вплотную друг к другу как угодно. После попадания корабль сразу же считается потопленным. Всего их 20 у Вас и столько же у компьютера. Посмотрите на листинг программы: действительно, это занятие на один вечер. Если организовать в программе ограничения на расположение кораблей, на их конфигурацию (одно- или многоклеточные и т.д.), программа получилась бы как минимум, раз в пять длиннее. Но можем Вас уверить, что набрав самостоятельно эту программу, Вы с не меньшим азартом будете вести сражения с компьютером. А может быть, вскоре у Вас появится желание внести в программу ограничения на конфигурацию и расположение кораблей - что же, пробуйте смело. Лучшее обучение программированию - это обучение "в бою".

Автор предлагает русифицировать программу при помощи символов UDG-графики. Однако, поскольку мы уже привыкли к постоянно используемому нами методу русификации, мы приводим, как обычно, вариант для загружаемого русско-латинского символьного набора. Думаем, что автор простит нам такое вторжение в его программу и еще несколько непринципиальных штрихов. Итак, предлагаем программу всем читателям.

DROHuU *

TCHITfl * 1993

МОРСКОЙ

БОЙ

8123456789

О 123456789

P

+

F

■ ■

E

в

■ +

С

+

с

E

E

+ + X

E

F

F

■ ■

G

G

H I

s

J

J

1 9

1 9

ВВЕДИТЕ КООРДИНАТЫ

"H"

Рис. 1

1 GO TO 10

2 BORDER 7: PAPER 7: INK 0: CLEAR : LOAD "chr" CODE 64600

4 GO TO 0

5 SAVE "SEA" LINE 2: SAVE "chr"CODE 64600,768: STOP

8 POKE 23606,88: POKE 23607,251: RETURN

9 POKE 23606,0: POKE 23607,60: RETURN

10 BORDER 5: PAPER 7: INK 0: CLS : POKE 23658,8: GO SUB 8 15 REM РИСУЕМ ИГРОВОЕ ПОЛЕ ===

20 FOR N=0 TO 9 30 LET Z$=CHR$ (N+65)

40 PRINT AT 7,N+4;N;AT 7,N+19;N;AT N+8,3;Z$;TAB 18; Z$ 50 NEXT N

60 PRINT AT 0,1; PAPER 4;" DRONOV * TCHITA * 1993 " 70 PRINT AT 3,10; PAPER 7; INK 1; " МОРСКОЙ БОЙ " 80 DRAW 255,0: DRAW 0,175: DRAW -255,0: DRAW 0,-175 90 PLOT 112,112: GO SUB 630: PLOT 232,112: GO SUB 630 100 REM ФОРМИРУЕМ КООРДИНАТЫ КОРАБЛЕЙ КОМПЬЮТЕРА ============

110 PRINT #0;"ПОДОЖДИТЕ МИНУТОЧКУ, ПОЖАЛУЙСТА." 120 DIM A$(20,4): DIM B$(20,4) 130 FOR N=1 TO 10

140 LET Y=8+INT (RND*10): LET X=4+INT (RND*10)

150 LET A$(N)=CHR$ 22+CHR$ Y+CHR$ X

160 IF N=1 THEN GO TO 200

170 FOR M=1 TO N-1

180 IF A$(N)=A$(M) THEN GO TO 140

190 NEXT M

200 NEXT N

210 INPUT ;: PRINT #0;"Я ГОТОВ! РАСПОЛОЖИМ ВАШИ КОРАБЛИ": BEEP .5,40: PAUSE 50 220 REM РИСУЕМ КОРАБЛИ =========

230 FOR N=1 TO 20

240 GO SUB 690: LET Y=Y-57: LET X=X-29 250 LET G$=CHR$ 22+CHR$ Y+CHR$ X: LET B$(N)=G$ 260 IF N=1 THEN GO TO 300 270 FOR M=1 TO N-1

280 IF B$(N)=B$(M) THEN GO SUB 740: GO TO 240 290 NEXT M

300 PRINT INK 1; G$+CHR$ 143 310 NEXT N

320 REM НАЧАЛО ИГРЫ ===========

330 LET W=0: LET Q=0: BEEP .5,20 340 PRINT AT 20,4;20;TAB 19;20

350 LET N=INT (RND*2): REM РОЗЫГРЫШ ПЕРВОГО ХОДА ==========

360 IF N THEN GO TO 520

370 PRINT #0;TAB 10;"ВАШ ВЫСТРЕЛ"

380 PAUSE 40

390 IF Q=20 THEN INPUT ;: PRINT #0;TAB 4;"ПОЗДРАВЛЯЮ! ВЫ ПОБЕДИЛИ": FOR K=10 TO 15: BEEP

.1,K: NEXT K: GO TO 790 400 GO SUB 690: LET Y=Y-57: LET X=X-44 410 IF SCREEN$ (Y,X)="+" THEN GO TO 620 420 IF SCREEN$ (Y,X)="X" THEN GO TO 620 430 GO SUB 680 440 FOR N=1 TO 20

450 IF F$=A$(N) THEN PRINT #0; TAB 4;"БРАВО! ПРЯМОЕ ПОПАДАНИЕ": LET A$(N)=C$+"X": PRINT

PAPER 2;A$(N): LET Q=Q+1: PRINT AT 20,4;20-Q;" ": BEEP .5,1: PAUSE 20:GO TO 390 460 NEXT N

470 PRINT C$+"+": BEEP .1,40 480 PRINT #0;TAB 14;"МИМО!" 490 REM ПЕРЕХОД ХОДА ==========

500 PAUSE 40: INPUT ;

510 IF W=20 THEN PRINT #0;TAB 6; "ВАША ФЛОТИЛИЯ РАЗБИТА": BEEP .8,2: BEEP .6,2: BEEP .2,2:

BEEP .8,2: GO TO 760 520 PRINT #0;TAB 10; "МОЙ ВЫСТРЕЛ": PAUSE 20 530 LET Y=8+INT (RND*10): LET X=19+INT (RND*10) 540 IF SCREEN$ (Y,X)="+" THEN GO TO 530 550 IF SCREEN$ (Y,X)="X" THEN GO TO 530 560 GO SUB 680 570 FOR N=1 TO 20

580 IF F$=B$(N) THEN LET B$(N)=C$+"X": INPUT ;: PRINT #0; TAB 6;"ВАШ КОРАБЛЬ ПОТОПЛЕН":

PRINT INK 1;B$(N): LET W=W+1: PRINT AT 20,19;20-W;" ": BEEP .5,1: GO TO 500 590 NEXT N

600 INPUT ;: PRINT #0;TAB 5;"BAM ПОВЕЗЛО, Я НЕ ПОПАЛ": PRINT C$+"+" 610 BEEP .1,40: GO TO 380

620 PRINT #0; "ВЫ СЮДА УЖЕ СТРЕЛЯЛИ": GO TO 380

630 RESTORE

640 FOR N=0 TO 8

650 READ Y,X: DRAW Y,X 660 NEXT N 670 RETURN

680 LET C$=CHR$ 22+CHR$ Y+CHR$ X: LET F$=C$+" ": RETURN

690 INPUT "ВВЕДИТЕ КООРДИНАТЫ " ;D$

700 IF LEN D$<2 THEN GO SUB 740: GO TO 690

710 LET Y=CODE D$(1): LET X=CODE D$(2)

720 IF Y<65 OR Y>74 OR X<48 OR X>57 THEN GO SUB 740: GO TO 690 730 RETURN

740 PRINT #0;TAB 12; "ОШИБКА! " 750 BEEP .5,20: PAUSE 40: RETURN 760 FOR N=1 TO 20

770 IF A$(N,4)=" " THEN PRINT PAPER 2;A$(N) 780 NEXT N

790 PAUSE 70: INPUT ;: PRINT #0;TAB 4;"ХОТИТЕ ЕЩЕ РАЗОК? (Y/N)": PAUSE 0 800 IF INKEY$="N" THEN GO SUB 9: STOP 810 RUN

820 DATA 0,-81,-81,0,0,81,81,0,0,-2,2,0,0,-81,-81,0,0,2




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Письма - Письма в редакцию: Prog Master, Kristoph.
Список BBS - Сетевой гейт. Список BBS.
От редакции - вышел пеpвый номеp саpанской компьютеpной газеты для ZX Spectrum "CITY".
Сafe 2k2 - обсуждение демок для спектрума с Cafe 2002.
Экспертиза - О прохождении игры Technodrome.

В этот день...   28 апреля