Региональный семинар «Обучение программированию на уроках информатики в 5-6 классах с помощью операторов графики Basic»
Мастер-класс
Проект «Праздничный пирог»
Горбунова Л.А.
Учитель информатики
Гимназия №11
г.Дубна
Московская область
Несложные компьютерные игры могут быть предметом проектов для учащихся 4-6 классов. Надо только выбрать игры с несложной логикой и простыми правилами.
Технология создания компьютерных игр
В процессе создания компьютерных игр решаются три основные задачи:
-
Создание игрового поля. Средствами Free Basic создаются несложные игровые поля графического типа с использованием несложных объектов, текстовых фрагментов.
-
Ходы игроков. При создании игр выделяют два варианта ходов игроков: человек→человек, человек→компьютер. К играм первого типа относятся «Праздничный пирог», «Крестики-нолики», «Баше», «66» и игры, где ход одного человека, а анализ выигрыша осуществляется компьютером - «Быки и коровы», «Таблица умножения», «Кто хочет стать миллионером».
-
Оценка выигрышной ситуации. Существует два варианта оценки выигрыша: за одну игру или за серию игр
Обычно задачи решаются последовательно, составляя этапы программирования игры.
Особенности программирования
Элементы программирования, которые можно использовать при создании компьютерных игр на языке программирования
Free Basic.
-
Датчик случайных чисел
Датчик случайных чисел – программа, выдающая случайное число из интервала 0 – 1. Он применяется во многих играх («Пирог», «Таблица умножения», «Кто хочет стать миллионером», «Быки и коровы») для выбора случайной ситуации.
-
Ветвление (проверка правильности ответа, организация движения, проверка выигрышной ситуации).
-
Циклические структуры (чередование ходов игроков, рисование одинаковых объектов на игровом поле).
-
Подпрограммы (движущиеся объекты).
-
Работа с текстом (во Free Basic'е нет возможности изменять размер шрифта текста).
-
Операторы графики:
-
Синтаксис операторов
|
Значение
|
LINE(x,y)-(x1,y1),c
|
Рисование линий
|
LINE(x,y)-(x1,y1),c,b
|
Рисование незакрашенных прямоугольников
|
LINE(x,y)-(x1,y1),c,bf
|
Рисование закрашенных прямоугольников
|
CIRCLE(x,y),r,c
|
Рисование незакрашенных окружностей
|
CIRCLE(x,y),r,c,,,1,f
|
Рисование закрашенных окружностей
|
CIRCLE(x,y),r,c,,,s
|
Рисование сжатых незакрашенных окружностей
|
CIRCLE(x,y),r,c,,,s,f
|
Рисование сжатых закрашенных окружностей
|
CIRCLE(x,y),r,c,d1/57,d2/57
|
Рисование дуг
|
PAINT(x,y),c
|
Заливка области
|
PSET(x,y),c
|
Рисование точек
|
-
Внешние файлы (в играх, где необходима большая текстовая информация, например вопросы в игре «Кто хочет стать миллионером»)
-
Использование массивов (ограничение по количеству ввода одного и того же номера клетки в играх «Пирог», «Крестики-нолики»).
Игра «Праздничный пирог»
Играют два человека. Им предлагается 12 кусков пирога, в одном из которых спрятан сюрприз. Игроки по очереди пытаются отгадать номер этого пирога. Если введён невозможный вариант (например «14», так как это число больше возможного диапазона), то игрок должен заново ввести номер куска. Если игрок отгадал номер куска с сюрпризом, то:
-
появляется сюрприз (например, конфетка);
-
количество очков по партиям у него увеличивается.
Игру можно вести до заданного количества партий, кто первым доберётся до этой отметки, тот и объявляется победителем, т.е побеждает тот кто выиграл заданное количество сюрпризов.
В каждой новой игре сюрприз располагается случайным образом (используется датчик случайных чисел), это придает игре каждый раз азарт и новизну.
Управление: Номер куска пирога определяется вводом номера с клавиатуры и нажатием клавиши «Enter».
Первый вариант программы является упрошенным проектом данной игры. Он может быть применен для начинающих изучать программирование. В нем нет:
-
возможности сыграть несколько партий;
-
контроля повторного ввода номера пирога,
-
не исчезают «съеденные» куски пирога.
Второй вариант предназначен для продвинутых учащихся, в нем проработаны все нюансы игры, для этого необходимо знание одномерных массивов.
При выполнении этого проекта ребята могут проявить фантазию и юмор при создании сюрприза этой игры.
На нашем мастер-классе реализуем упрошенный вариант игры, на основе предложенного шаблона, в котором игровое поле и подпрограммы проработаны, нужно будет добавить ходы игроков.
Алгоритм игры «Праздничный пирог»
CLS
SCREEN 12
RANDOMIZE TIMER
‘Игрое поле
‘Задание № съеденного кусочка с СЮРПРИЗОМ
s = FIX(RND * 12)
‘Начало игры
COLOR (14)
FOR n = 1 TO 12 STEP 2
' Ход первого игрока
‘ Ход второго игрока
NEXT n
1 END
‘Подпрограмма СЮРПРИЗ
surpriz:
………….
RETURN
‘Подпрограмма закрашивания съеденного кусочка
d:
……………..
RETURN
Элементы игры:
Игровое поле
|
LOCATE 2, 30:COLOR (10):PRINT " P I R O G "
LINE (100, 100)-(500, 400), 12, BF
LINE (100, 200)-(500, 200), 0
LINE (100, 300)-(500, 300), 0
LINE (200, 100)-(200, 400), 0
LINE (300, 100)-(300, 400), 0
LINE (400, 100)-(400, 400), 0
LOCATE 8, 24: PRINT "1"
LOCATE 8, 36: PRINT "2"
LOCATE 8, 48: PRINT "3"
LOCATE 8, 60: PRINT "4"
LOCATE 14, 24: PRINT "5"
LOCATE 14, 36: PRINT "6"
LOCATE 14, 48: PRINT "7"
LOCATE 14, 60: PRINT "8"
LOCATE 20, 24: PRINT "9"
LOCATE 20, 36: PRINT "10"
LOCATE 20, 48: PRINT "11"
LOCATE 20, 60: PRINT "12"
|
Подпрограмма «Удаление съеденного кусочка»
|
D:
IF h = 1 THEN LINE (100, 100)-(200, 200), 0, BF
IF h = 2 THEN LINE (200, 100)-(300, 200), 0, BF
IF h = 3 THEN LINE (300, 100)-(400, 200), 0, BF
IF h = 4 THEN LINE (400, 100)-(500, 200), 0, BF
IF h = 5 THEN LINE (100, 200)-(200, 300), 0, BF
IF h = 6 THEN LINE (200, 200)-(300, 300), 0, BF
IF h = 7 THEN LINE (300, 200)-(400, 300), 0, BF
IF h = 8 THEN LINE (400, 200)-(500, 300), 0, BF
IF h = 9 THEN LINE (100, 300)-(200, 400), 0, BF
IF h = 10 THEN LINE (200, 300)-(300, 400), 0, BF
IF h = 11 THEN LINE (300, 300)-(400, 400), 0, BF
IF h = 12 THEN LINE (400, 300)-(500, 400), 0, BF
RETURN
|
Подпрограмма СЮРПРИЗ
|
Surpriz:
FOR i = 1 TO 500
LINE (320, 240)-(RND * 640, RND * 480), RND * 15
NEXT I
RETURN
|
Алгоритм хода игрока
Действие
|
Ход 1 игрока
|
-
Приглашение к ходу
|
LOCATE 27, 10: PRINT "1 IGROK"
|
-
Ход (ввод № клетки)
|
LOCATE 28, 15: INPUT h
|
-
Стирание взятого кусочка
|
GOSUB d
|
-
Проверка на наличие сюрприза в кусочке
|
LOCATE 27, 30
IF h = s THEN GOSUB surpriz: COLOR (13):
PRINT "WIN 1 IGROKA": SLEEP:GOTO 1:
|
-
Стирание приглашения и № хода
|
LOCATE 27, 10: PRINT " ": LOCATE 28, 15: PRINT " "
|
Для второго игрока выделенные координаты можно изменить на 50, 55 соответственно.
Итоговый листинг выглядит следующим образом:
Программа «Пирог»
CLS
SCREEN 12
RANDOMIZE TIMER
LOCATE 2, 30
COLOR (10)
PRINT " P I R O G "
LINE (100, 100)-(500, 400), 12, BF
LINE (100, 200)-(500, 200), 0
LINE (100, 300)-(500, 300), 0
LINE (200, 100)-(200, 400), 0
LINE (300, 100)-(300, 400), 0
LINE (400, 100)-(400, 400), 0
LOCATE 8, 24: PRINT "1"
LOCATE 8, 36: PRINT "2"
LOCATE 8, 48: PRINT "3"
LOCATE 8, 60: PRINT "4"
LOCATE 14, 24: PRINT "5"
LOCATE 14, 36: PRINT "6"
LOCATE 14, 48: PRINT "7"
LOCATE 14, 60: PRINT "8"
LOCATE 20, 24: PRINT "9"
LOCATE 20, 36: PRINT "10"
LOCATE 20, 48: PRINT "11"
LOCATE 20, 60: PRINT "12"
s = FIX(RND * 12)
n = 0
COLOR (14)
FOR n = 1 TO 12 STEP 2
LOCATE 27, 10: PRINT "1 IGROK"
INPUT h
GOSUB d
LOCATE 27, 30
IF h = s THEN GOSUB surpriz: COLOR (13): PRINT "WIN 1 IGROKA": SLEEP:GOTO 1:
LOCATE 27, 10: PRINT " "
LOCATE 27, 50: PRINT "2 IGROK"
INPUT h
GOSUB d
LOCATE 27, 30
IF h = s THEN GOSUB surpriz: COLOR (13): PRINT "WIN 2 IGROKA": SLEEP:GOTO 1:
LOCATE 27, 50: PRINT " "
NEXT n
1 END
surpriz:
FOR i = 1 TO 500
LINE (320, 240)-(RND * 640, RND * 480), RND * 15
NEXT i
RETURN
d:
IF h = 1 THEN LINE (100, 100)-(200, 200), 0, BF
IF h = 2 THEN LINE (200, 100)-(300, 200), 0, BF
IF h = 3 THEN LINE (300, 100)-(400, 200), 0, BF
IF h = 4 THEN LINE (400, 100)-(500, 200), 0, BF
IF h = 5 THEN LINE (100, 200)-(200, 300), 0, BF
IF h = 6 THEN LINE (200, 200)-(300, 300), 0, BF
IF h = 7 THEN LINE (300, 200)-(400, 300), 0, BF
IF h = 8 THEN LINE (400, 200)-(500, 300), 0, BF
IF h = 9 THEN LINE (100, 300)-(200, 400), 0, BF
IF h = 10 THEN LINE (200, 300)-(300, 400), 0, BF
IF h = 11 THEN LINE (300, 300)-(400, 400), 0, BF
IF h = 12 THEN LINE (400, 300)-(500, 400), 0, BF
RETURN
Доработка программы «Праздничный пирог»
Участникам мастер-класса можно предложить доработку программы.
-
Контроль повторного ввода № клетки (использование массива игрового поля)
-
Организация игры в несколько партий (организация цикла игры)
Заключение
При работе играми сухие и скучные операторы языка оживают, становятся понятны конструкции языка. Становится ясно, что без условного оператора не проверить правильность ответа, без цикла нельзя организовать очередность ходов игроков. Создание проектов заставляет задуматься о наглядности оформления проекта, один и тот же проект может выполниться по-разному.
Реализация подобных проектов помогает изучить принципы программирования, прививает любовь к творчеству, показывает взаимосвязь предметов школьного курса, чего не всегда удается добиться при решении классических задач.