Рубрики
Без рубрики

Научите своих детей построить собственную игру с Python – 1

Как научить своих детей построить собственную игру с Python

Автор оригинала: Mustafa Anas.

Раньше я был тренером кодирования несколько месяцев назад. Наши студенты были бывшие уличные дети, исходящие из-под привилегированных обществ. Вы можете себе представить отсутствие образования. Как учитель там, мне пришлось забавиться свои уроки и легко понять, поэтому я бы часто пользуюсь играми, чтобы сделать это. Я проходил через мои старые файлы, и я нашел этот план урока, я написал, чтобы научить детей, как построить знаменитую игру Космические захватчики Отказ Вначале казалось невозможной миссией, но на самом деле они любили его и полюбили кодировку из-за этого! В любое другое, без более подробной информации, я собираюсь поделиться этим уроком в трех сообщениях здесь. Сегодня первое, надеясь, что любой новичок или родителей найдет его полезным.

Чтобы следить за этим руководством, вам нужно будет установить Python и текстовый редактор. Или , вы могли бы использовать это Онлайн текстовый редактор И создайте проект, который также использует черепаху (мы будем говорить больше об этом немного).

Использование черепахи для графики

Сам Python – это просто язык программирования. Он может пойти достаточно глубоко в том, чтобы заказать компьютер, что делать, но он не имеет графики самостоятельно! ( Подумайте об этом как JavaScript, он все еще нуждается в HTML для отображения чего-либо ). По этой причине мы будем использовать Python GUI ( графический интерфейс пользователя ) библиотека под названием Turtle. Черепаха – это ручка, которую вы надеваете на экран и переместите его, однако, что вы хотите в конечном итоге иметь что-то нарисованное на экране.

Чтобы заказать Python, чтобы принести ручку, которую мы будем использовать для рисования, мы можем ввести эту строку:

Pen = turtle.Turtle()

Однако, как мы сказали, черепаха – это то, что не является частью того, кто Python, поэтому нам нужно будет сказать ему, чтобы принести его откуда-то снаружи (делай сейчас беспокоиться, он знает, где найти внешние вещи). Таким образом, мы всегда будем включать эту строку в верхней части нашего файла:

import turtle
Pen = turtle.Turtle()

БОЛЬШОЙ! Теперь, когда у нас есть ручка, нам нужно начать рисовать! Image Ваша рука держит ручку и не питон. Например, чтобы нарисовать прямую прямую справа, вы просто переместите ручку справа, придерживаясь рукой в бумагу и переместив его вправо! Итак, мы знаем, что нам нужно сказать Python сделать две вещи:

  • Положите ручку на бумагу (экран в случае Python!)
  • Переместите ручку X расстояние до направления, которое мы хотим! Так что позвольте сделать это:
import turtle
pen = turtle.Turtle()

pen.pendown() #this line puts the pen on the paper
pen.forward(100) #now move the pen forward 100 steps!

Теперь, если вы запустите свой код, вы увидите немного стрелки, двигаясь на экране! Есть несколько вещей, которые мы должны запомнить сейчас о том, как переместить ручку. Потому что мы не только вперед, но и другие вещи тоже!

  • ручка .forward ()
  • pen.backward ()
  • pen.left ()
  • pen.right ()
  • pen.penup ()

Теперь я хочу, чтобы вы попробовали друг на друга, прежде чем мы продолжим. … … Они кажутся интуитивно понятными правильными? .backward () Перемещает ручку назад. За исключением того, что осталось и правое, на самом деле не двигайте ручку, но вращайте ее определенной степени. Теперь попробуйте скопировать код ниже и вставьте его в текстовый редактор. Что ты видишь?

import turtle
pen = turtle.Turtle()

pen.pendown() #this line puts the pen on the paper
pen.forward(100) #now move the pen forward 100 steps!
pen.right(90)
pen.forward(100)
pen.right(90)
pen.forward(100)
pen.right(90)
pen.forward(100)

это верно! Мы переместили нашу ручку правильно, чтобы нарисовать квадрат, отлично. Теперь давайте увеличить значения в скобках после вперед Потому что мы хотим большую площадь! ( Это то, где наша игра будет происходить ).

. .

Но эй, подожди секунду, заметил, что в нашем коде есть две строки, которые мы повторили три раза! Не думаете, что это безобразно сделать это? Я имею в виду, что должен быть способ сказать питону, чтобы прочитать что-то снова и снова, не пишешь его много раз!

Да, вы догадались правильно! На самом деле мы можем только написать только эти две строки одновременно и сказать Python, чтобы прочитать их три раза! Вот как мы это делаем:

import turtle
pen = turtle.Turtle()

pen.pendown() #this line puts the pen on the paper
for side in range(3): #see number three? its what reminds Python,  THREE times!
  pen.forward(100)
  pen.right(90)
pen.forward(100)

Это называется для петли Отказ Это позволяет делать одно много раз, не повторяя то же самое!

Отлично, теперь у нас есть большая площадь, и мы хотим, чтобы наша игра была внутри нее!

ждать! Знаете ли вы, что вы можете изменить цвет ручки? Просто набрав .color ('name_of_color') Отказ Попытайся! То есть: попробуйте pen.Color («красный») Перед продолжением.

Перед продолжением, давайте убедитесь, что мы знаем, что мы хотим именно в нашей игре:

  • Наш персонаж, который движется и стреляет врагов!
  • Враги персонажей, которые движутся к нам
  • Мы разрушаемся, если враг касается нас
  • Враг умирает, если наша пуля касается этого!

Большой! Теперь мы можем закончить их за другим! Во-первых, давайте создадим нас. Мы просто ручка, которая движется внутри площади. Но подожди, мы будем рисовать, если мы сделаем это? Вы правы, но помните, когда мы сказали, что мы можем сказать Питону, чтобы поставить ручку от бумаги? Что происходит, ручка все еще показывает на экране, но он не оставляет следов позади него, когда он движется. Так что давайте сделаем это!

Мы создаем новую ручку под названием Игрок ( Мы ), и отложите его от бумаги.

import turtle
pen = turtle.Turtle()

pen.pendown() #this line puts the pen on the paper
for side in range(3): #see number three? its what reminds Python,  THREE times!
  pen.forward(100)
  pen.right(90)
pen.forward(100)

player = turtle.Turtle()
player.penup()

Теперь, если мы попытаемся переместить плеер ( Player. Forward (100) ) Это не будет двигаться, ничего не оставило. В любом случае, мы не хотим писать ценность каждый раз, когда мы двигаемся! Вместо этого мы скажем Python, чтобы переместить его только один шаг каждый раз, когда мы нажимаем ключ!

Позволяет сначала сказать питону, чтобы внимательно слушать, потому что, когда я нажимаю письмо D На моей клавиатуре я хочу, чтобы игрок переместил один шаг вперед!

wn = turtle.Screen() #initiate the window
wn.listen()
wn.onkey(myFunction, `d`) #this waits until you press D

Но подождите, что такое Myфункция ?? Это важный вопрос. В Python функция – это набор заказов, которые мы даем компьютерам. Что такое заказ? Каждая строка кода, написанная на Python или любой другой язык, является заказа! Итак, мы могли бы написать функцию, которая просто говорит привет! Или собирать строки кода, мы просто написали и нарисовали квадрат! Одна особая вещь о функциях, состоит в том, что они не происходят, пока мы их не позвоним! Также нравится, как твоя мама звонит папу, чтобы попросить его получить немного для дома? Вы называете функцию, чтобы сделать что-то. Так вот вот, нам нужно сказать Myфункция Чтобы переместить наш игрок только один шаг вправо! Так что каждый раз, когда мы нажимаем D Наш игрок движется вперед. Вот как мы делаем эту функцию:

def moveRight():
 x = player.xcor()
 x += 10
 player.setx(x)

Позволяет воспользоваться здесь, чтобы объяснить этот код; def Слово – это просто способ узнать, что то, что после этого – это имя функции (да, потому что вы можете назвать вашу функцию, что бы вы ни захотите ). Теперь мы знаем, что Moveright () это название функции. Теперь два точка после функции просто указывают, что здесь начинается функция. Если мы пишем их, то мы нажимаем Enter , мы заметим, что редактор немедленно заставит нас запускать следующую строку с небольшим количеством пространства. Почему? Вот как Python знает, что эта строка является частью этой функции

Отлично, теперь давайте посмотрим, что является частью этой функции.

x.xcor () Это предложение имеет немного странной математики. (Если вы знаете, что такое ортонормальная система, вы узнаете, что это такое). Но все, что вам действительно нужно знать, это то, что этот X теперь имеет текущую позицию нашего Игрок ( Обратите внимание, что код говорит Player.xcor () ). Теперь мы сказали, что хотели переместить шаг вправо. Поэтому нам нужно увеличивать х на шаг! Это то, что эта строка делает х Отказ Вы можете попробовать номер, кроме 10 и посмотреть, как быстро/медленно ваше движение. Теперь после увеличения значения X (где наш плеер использовал быть), нам нужно снова назначить X нашего игрока. И это то, что делает последнюю строчку: Player.Setx (X)

Попробуйте запустить код и перемещение игрока. Теперь вы должны быть в состоянии перейти к справа после нажатия D .

Легко справа? Теперь давайте использовать ту же логику, чтобы сделать влево. Держите одно уведомление, когда мы переехали вправо, мы увеличили X, но когда мы переходим к противоположному направлению, что мы должны делать ??

def moveLeft():
 x = player.xcor()
 x -= 10
 player.setx(x)

Но для запуска этой функции нам нужно попросить Python запустить его, когда мы нажимаем букву A на клавиатуре! Итак, давайте сделаем Python послушать букву a .

wn.onkey(moveLeft, 'a')

Большой! Единственное, что скучает сейчас, движется вперед и назад! Для этого мы можем использовать ту же логику, но, математика играет немного здесь. Когда мы двигались вправо и слева, мы использовали xcor () Отказ Но теперь мы будем двигаться вперед и назад, поэтому мы будем использовать ycor () вместо.

wn.onkey(moveForward, 'w')
wn.onkey(moveBackward, 's')

def moveForward():
 y = player.ycor()
 y += 10
 player.sety(y)

def moveBackward():
 y = player.ycor()
 y -= 10
 player.sety(y)

Теперь запустите свой код и двигайтесь !!! Yayy !! Мы свободны двигаться сейчас! Так выглядит наш последний код:

import turtle
pen = turtle.Turtle()

pen.pendown() #this line puts the pen on the paper
for side in range(3): #see number three? its what reminds Python,  THREE times!
  pen.forward(100)
  pen.right(90)
pen.forward(100)

player = turtle.Turtle()
player.penup()

def moveRight():
  x = player.xcor()
  x += 10
  player.setx(x)

def moveLeft():
  x = player.xcor()
  x -= 10
  player.setx(x)	

def moveForward():
  print('something')
  y = player.ycor()
  y += 10
  player.sety(y)

def moveBackward():
  y = player.ycor()
  y -= 10
  player.sety(y)

wn = turtle.Screen()
wn.listen()

wn.onkey(moveRight, 'd')
wn.onkey(moveLeft, 'a')
wn.onkey(moveForward, 'w')
wn.onkey(moveBackward, 's')

Вы прошли долгий путь! Следующий учебник, мы получим наши враги в игре, а затем начнем драку!