Классическая игра «Угадай животное» вошла в сборник «BASIC Computer Games» и была распространена как в США и Великобритании, так и в СССР, и в постсоветской России. В той или иной реализации эта игра приводится как пример во многих учебниках по Бейсику. Это реализация из «BASIC Computer Games».
Строчка Объяснение
10[2] PRINT TAB(32);"ANIMAL" Первая строчка программы. Печатает название игры после отступа.
20 TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY" Печатает название и адрес автора (по крайней мере данной версии) после меньшего отступа.
30 PRINT: PRINT: PRINT Три раза печатает перенос строки.
40 PRINT "PLAY `GUESS THE ANIMAL`" Печатает «Сыграем в „Угадай животное“».
50 PRINT "THINK OF AN ANIMAL AND THE COMPUTER WILL TRY TO GUESS IT" Печатает «Задумайте животное, а компьютер постарается угадать».
60 PRINT Печатает перенос строки.
70 DIM A$(200) Создаёт пустой массив данных A$ для 201 строк (поскольку нумерация элементов начинается с нуля).
80 FOR I=0 TO 3 Следующий после этой строчки блок команд будет повторён четыре раза.
90 READ A$(I) Считывает начальные данные для массива A$ (данные расположены в строчке 530).
100 NEXT I Закрывает блок, нуждающийся в повторении.
110 N=VAL(A$(0)) В переменную N записывается числовое значение первого элемента массива — номер следующего пустого элемента масива.
120 REM MAIN CONTROL SECTION Примечание для программиста «Основная часть программы».
130 INPUT "ARE YOU THINKING OF AN ANIMAL";A$ Спрашивает «Вы задумали животное?» и записывает ответ в переменную A$ (не следует путать с массивом A$).
140 IF A$="LIST" THEN 600 Если пользователь ответил «перечень», перейти на строчку 600, где начинается подпрограмма, перечисляющая известных компьютеру животных.
150 IF LEFT$(A$,1)<>"Y" THEN 120 Если пользователь ответил не «перечень» и не «да» (точнее, любое слово на Д), тогда вернуться на строчку 120, чтобы спросить снова.
160 K=1 В переменной K хранится рассматриваемый индекс массива данных. Догадки начинаются индекса № 1.
170 GOSUB 390 Перейти к подпрограмме догадок на строчке 290. Поскольку используется GOSUB, подпрограмма, закончив, сможет вернуться в то самое место, которое её вызвала.
180 IF LEN(A$(K))=0 THEN 999 Когда подпрограмма закончила, если последний рассматриваемый элемент массива пуст, то перейти к 999 (где расположен конец программы).
190 IF LEFT$(A$(K),2)="\Q" THEN 170 Если рассматриваемый элемент массива начинается на «\Q», то это вопрос, и нужно продолжить догадки — перейти к строчке 170, которая запускает подпрограмму догадок.
200 PRINT "IS IT A ";RIGHT$(A$(K),LEN(A$(K))-2); Печатает «Это (предполагаемое животное)?». Название животного берётся как рассматриваемый элемент массива, минус первые два символа («\A»).
Добавлено спустя 1 минуту 4 секунды:
210 INPUT A$
220 A$=LEFT$(A$,1)
230 IF LEFT$(A$,1)="Y" THEN PRINT "WHY NOT TRY ANOTHER ANIMAL?": GOTO 120
240 INPUT "THE ANIMAL YOU WERE THINKING OF WAS A ";V$
250 PRINT "PLEASE TYPE IN A QUESTION THAT WOULD DISTINGUISH A"
260 PRINT V$;" FROM A ";RIGHT$(A$(K),LEN(A$(K))-2)
270 INPUT X$
280 PRINT "FOR A ";V$;" THE ANSWER WOULD BE ";
290 INPUT A$
300 A$=LEFT$(A$,1): IF A$<>"Y" AND A$<>"N" THEN 280
310 IF A$="Y" THEN B$="N"
320 IF A$="N" THEN B$="Y"
330 Z1=VAL(A$(0))
340 A$(0)=STR$(Z1+2)
350 A$(Z1)=A$(K)
360 A$(Z1+1)="\A"+V$
370 A$(K)="\Q"+X$+"\"+A$+STR$(Z1+1)+"\"+B$+STR$(Z1)+"\"
380 GOTO 120
390 REM SUBROUTINE TO PRINT QUESTIONS
400 Q$=A$(K)
410 FOR Z=3 TO LEN(Q$)
415 IF MID$(Q$,Z,1)<>"\" THEN PRINT MID$(Q$,Z,1);: NEXT Z
420 INPUT C$
430 C$=LEFT$(C$,1)
440 IF C$<>"Y" AND C$<>"N" THEN 410
450 T$="\"+C$
455 FOR X=3 TO LEN(Q$)-1
460 IF MID$(Q$,X,2)=T$ THEN 480
470 NEXT X
475 STOP
480 FOR Y=X+1 TO LEN(Q$)
490 IF MID$(Q$,Y,1)="\" THEN 510
500 NEXT Y
505 STOP
510 K=VAL(MID$(Q$,X+2,Y-X-2))
520 RETURN
530 DATA "4","\QDOES IT SWIM\Y2\N3\","\AFISH","\ABIRD"
600 PRINT:PRINT "ANIMALS I ALREADY KNOW ARE:"
605 X=0
610 FOR I=1 TO 200
620 IF LEFT$(A$(I),2)<>"\A" THEN 650
624 PRINT TAB(15*X);
630 FOR Z=3 TO LEN(A$(I))
640 IF MID$(A$(I),Z,1)<>"\" THEN PRINT MID$(A$(I),Z,1);: NEXT Z
645 X=X+1: IF X=4 THEN X=0: PRINT
650 NEXT I
660 PRINT
670 PRINT
680 GOTO 120
999 END
Добавлено спустя 2 минуты 40 секунд:
wonderer писал(а):но изучать-то надо ж блин
сотрудники уже начинают по-тихоньку признаваться, что в работе используют.
а я как начальник даже не понимаю, где.
надо изучать
ИИ первыми начальников и заменяют, впитав их небольшой массив несложных данных из их залитых виски разумов.
Последними ИИ заменит тех кто работает руками и ителлектом.