Про матеріал
Мета: Використовуючи модуль Turtle, розробити поетапно гру настільний теніс.
Керування ракетками відбувається користувачем А та користувачем В. Взявши за основу код програми, учні можуть самостійно вдосконалити алгоритм та запрограмувати керування ракеткою комп'ютером. Звукові файли (удари м'яча) можна взяти з системних Windows або не під'єднувати зовсім.
Зміст слайдів
Номер слайду 1
Теніс(Гра на Python)
Номер слайду 2
import turtleimport winsound. Підключення модуів
Номер слайду 3
win = turtle. Screen()win.title('Pong')win.bgcolor('green')win.setup(width=800, height=600)win.tracer(0)Властивсті вікна
Номер слайду 4
def draw. Field(): draw = turtle. Turtle() draw.penup() draw.speed(0) draw.color('white') draw.hideturtle() draw.goto(-390,295) draw.pendown() for i in range(2): draw.forward(770) draw.right(90) draw.forward(580) draw.right(90) draw.goto(0,295) draw.right(90) draw.goto(0,-285) draw.penup() draw.goto(-50,0) draw.pendown() draw.circle(50)draw. Field()Малювання поля
Номер слайду 5
Загальний вигляд поля
Номер слайду 6
score. A = 0score. B = 0 Рахунок гри
Номер слайду 7
# Paкетка Apad. A = turtle. Turtle()pad. A.speed(0)pad. A.shape('square')pad. A.shapesize(stretch_wid=6,stretch_len=1)pad. A.color('white')pad. A.penup()pad. A.goto(-350,0)# Paкетка Bpad. B = turtle. Turtle()pad. B.speed(0)pad. B.shape('square')pad. B.shapesize(stretch_wid=6,stretch_len=1)pad. B.color('white')pad. B.penup()pad. B.goto(350,0)Ракетки
Номер слайду 8
ball = turtle. Turtle()ball.speed(0)ball.shape('circle')ball.color('white')ball.penup()ball.goto(0,0)ball.dx = 1.0ball.dy = 1.0 М'яч
Номер слайду 9
pen = turtle. Turtle()pen.speed(0)pen.color('white')pen.penup()pen.hideturtle()pen.goto(0,250)Олівець
Номер слайду 10
def pad. A_up(): y = pad. A.ycor() y += 25 pad. A.sety(y)def pad. A_down(): y = pad. A.ycor() y -= 25 pad. A.sety(y)def pad. B_up(): y = pad. B.ycor() y += 25 pad. B.sety(y)def pad. B_down(): y = pad. B.ycor() y -= 25 pad. B.sety(y)Функції
Номер слайду 11
def write(): pen.write(f"Гравець A : {score. A} Гравець B : {score. B}", align='center’, font=('Courier',24,'normal'))def play. Music(music): try: winsound. Play. Sound(music, winsound. SND_ASYNC) except File. Not. Found. Error: print('The required music file does not exist.') except: print('winsound module only works on windows.') print('try playing the sound with os module')Виведення рахунку гри та підключення звуків
Номер слайду 12
Рахунок гри
Номер слайду 13
win.listen()win.onkeypress(pad. A_up,'w')win.onkeypress(pad. A_down,'s')win.onkeypress(pad. B_up,'Up')win.onkeypress(pad. B_down,'Down')write()Kлавіші керування
Номер слайду 14
try: while True: win.update() # Рух м'яча ball.setx(ball.xcor() + ball.dx) ball.sety(ball.ycor() + ball.dy) # Bзаємодія з межею поля if ball.ycor() > 290: ball.dy *= -1 play. Music('assets/hit1.wav') if ball.ycor() < -290: ball.dy *= -1 play. Music('assets/hit1.wav')Головний цикл гри
Номер слайду 15
if ball.xcor() > 390: ball.setx(-100) ball.dx *= -1 score. A += 1 pen.clear() write() if ball.xcor() < -390: ball.setx(-100) ball.dx *= -1 score. B += 1 pen.clear() write()Головний цикл гри (продовження)
Номер слайду 16
if (ball.xcor() > 340 and ball.xcor() < 350) and (ball.ycor() < pad. B.ycor() + 50 and ball.ycor() > pad. B.ycor() - 50): play. Music('assets/hit2.wav') ball.setx(340) ball.dx *= -1if (ball.xcor() < -340 and ball.xcor() >-350) and (ball.ycor() < pad. A.ycor() + 50 and ball.ycor() > pad. A.ycor() - 50): play. Music('assets/hit2.wav') ball.setx(-340) ball.dx *= -1 Взаємодія рaкетки і м'яча
Номер слайду 17
except Exception as e: pass. Вихід з гри
Номер слайду 18
Загальний вигляд гри
Номер слайду 19
Тека зі звуковими файлами