Условный переход
126. А сейчас мы попробуем сделать пока не очень красивый, но очень простой вариант телевизионной игры "О, счастливчик!". Придумайте пять любых вопросов, и к каждому из них четыре варианта ответов. Теперь я попробую словесно описать алгоритм, а вы – перевести его на Бейсик. Итак, запрашиваем у игрока имя, и узнаем, желает ли он играть. Если не желает, прощаемся, если желает – приветствуем и предлагаем первый вопрос с вариантами ответов. Запрашиваем у игрока с клавиатуры, какой вариант он выбирает.
В случае правильного ответа начисляем ему сто очков и переходим ко второму вопросу. Если ответ неверен, то отправляемся на самое начало – снова регистрация и т. д. Первый вопрос – 100 очков, второй – 200, третий – 300, четвертый – 500, пятый – 1000. Если игрок правильно отвечает на все пять вопросов, то поздравляем его и заканчиваем программу.
127. Каждую пятницу члены Клуба толстяков выстраиваются в определенном порядке и взвешиваются. Напишите программу, которая хранит данные взвешивания 10-ти членов Клуба за прошлую неделю. Затем программа запрашивает новые данные взвешивания и для каждого члена Клуба либо выводит поздравление в случае похудения, либо величину прибавки веса с сожалением.
В рамках изучения условного оператора мы можем проанализировать основные принципы движения геометрических объектов по экрану.
CLS S=0 Rem S – переменная, в которую Rem будет заноситься накапливаемая сумма. Rem Естественно, пока мы еще не ввели Rem ни одного числа, она должна быть обнулена 1: INPUT "Введите любое число"; N S=S+N ?"Сумма стала равна"; S INPUT "Еще число? (1 – да, 0 – нет"; R IF R=l THEN GOTO 1 ELSE?"Спасибо за работу!"
Выполните упражнение.
128. Попробуйте сами написать программу, вычисляющую произведение последовательно вводимых с клавиатуры, отличных от нуля, чисел. Что изменится по сравнению с предыдущей программой?
Движение геометрических объектов по экрану
Так как интерпретатор Бейсика достаточно медлителен, то очень красивых программ с движением нам не сделать, но зная принципы, легко потом добиться большего на других языках.
Итак, движение. На самом деле, конечно, ничего там не перемещается, а создается иллюзия движения за счет того, что сначала рисуется изображение, потом оно стирается (т. е. рисуется на том же месте цветом фона), а затем вновь выводится в новом месте экрана. Компьютер достаточно быстро проделывает это, и нам кажется, что шарик, например, двигается. Начнем мы с точки, которая смещается по горизонтали, отражаясь от вертикальных сторон экрана.
SCREEN 9 X=300: Y=175 ' начальные координаты точки DX=1 ' приращение координаты X.
Так как мы его сделали положительным, координата X будет увеличиваться, а, следовательно, точка сначала будет двигаться вправо 1: PSET (X, Y), 14 вывод точки на экран PSET (X, Y), 0 стирание точки цветом фона IF X=0 OR X=640 THEN DX=-DX в случае достижения точкой вертикальных сторон экрана, приращение по X меняется на противоположное, а значит точка 1 начнет двигаться в обратную сторону X=X+DX изменение координаты точки GOTO 1 переход на метку 1, где происходит рисование точки.
Программа, как вы видите, получилась зацикленной, т. е. точка будет двигаться бесконечно, пока мы не нажмем клавиши CTRL + Break.
Предупреждение
Если у вас уже очень хороший компьютер, то точка может двигаться достаточно быстро, и вы не сможете насладиться процессом ее перемещения. В таком случае мы искусственно замедлим программу.
Для этого между двумя операторами pset надо вставить два оператора:
FOR 1=1 to 100: NEXT I
Это оператор цикла, о котором мы поговорим позже; пока просто поймите, что в данном месте компьютер посчитает до 100 в своем уме, и на это время в программе возникнет пауза. Подставляя вместо числа 100 другие значения, вы сможете управлять величиной паузы.
129. Напишите программу, которая заставит точку двигаться по вертикали. Потом замените точку на закрашенную окружность, а затем – на закрашенный прямоугольник.