Скорость обработки меняет скорость анимации черепахиPython

Программы на Python
Ответить
Anonymous
 Скорость обработки меняет скорость анимации черепахи

Сообщение Anonymous »

Я изучал модуль черепахи Python.
И я пытался создать простую игру в понг.
Вот код:

Код: Выделить всё

import turtle
import win32api

wind = turtle.Screen()
wind.title("Pong game")
wind.bgcolor("black")
wind.setup(width=800, height=500)
wind.tracer(0) # stops window from updating automaticly

# racket1
racket1 = turtle.Turtle()
racket1.speed(0)
racket1.penup()
racket1.color("blue")
racket1.shape("square")
racket1.goto(-370, 0)
racket1.shapesize(stretch_wid=5, stretch_len=1)

# racket2
racket2 = turtle.Turtle()
racket2.speed(0)
racket2.penup()
racket2.color("red")
racket2.shape("square")
racket2.goto(370, 0)
racket2.shapesize(stretch_wid=5, stretch_len=1)

# ball
ball = turtle.Turtle()
ball.speed(0)
ball.penup()
ball.color("white")
ball.shape("circle")
ball.goto(0, 0)
ball.dx = 0.2
ball.dy = 0.2

# score writer
scw = turtle.Turtle()
scw.penup()
scw.speed(0)
scw.hideturtle()
scw.goto(0, 210)
scw.color("white")
scw.write("Blue: 0                  Red: 0", font=("Arial", 24, "bold"), align="center")

# racket 1 functions
def racket1_up():
y = racket1.ycor()
if y < 200:
y += 0.3
racket1.sety(y)

def racket1_down():
y = racket1.ycor()
if y > -200:
y -= 0.3
racket1.sety(y)

# racket 2 functions
def racket2_up():
y = racket2.ycor()
if y < 200:
y += 0.3
racket2.sety(y)

def racket2_down():
y = racket2.ycor()
if y > -200:
y -= 0.3
racket2.sety(y)

# scores
p1 = 0
p2 = 0

while True:
wind.update()

# ball move
ball.setx(ball.xcor() + ball.dx)
ball.sety(ball.ycor() + ball.dy)

# border check
if ball.ycor() > 239: #240
ball.dy *= -1

if ball.ycor() < -239: #-240
ball.dy *= -1

if ball.xcor() > 389: #390
ball.goto(0, 0)
p1 += 1
ball.dx *= -1
scw.clear()
scw.write(f"Blue: {p1}                  Red: {p2}", font=("Arial", 24, "bold"), align="center")

if ball.xcor() < -389: #-390
ball.goto(0, 0)
p2 += 1
ball.dx *= -1
scw.clear()
scw.write(f"Blue: {p1}                  Red: {p2}", font=("Arial", 24, "bold"), align="center")

# ball and madareb collision
if ball.xcor() > 350 and ball.ycor() < racket2.ycor()+60 and ball.ycor() > racket2.ycor()-60:
ball.dx *= -1

if ball.xcor() < -350 and ball.ycor() < racket1.ycor()+60 and ball.ycor() > racket1.ycor()-60:
ball.dx *= -1

# racket 1 movement
w = win32api.GetKeyState(0x57)
s = win32api.GetKeyState(0x53)

if w < 0:
racket1_up()
if s < 0:
racket1_down()

# racket 2 movement
u = win32api.GetKeyState(0x26)
d = win32api.GetKeyState(0x28)

if u < 0:
racket2_up()
if d < 0:
racket2_down()
Игра работала нормально, но скорость мяча меняется, я думаю, что это связано с изменением скорости обработки.
Так можно ли сделать так, чтобы скорость не менялась при изменении скорости обработки?>

Подробнее здесь: https://stackoverflow.com/questions/750 ... tion-speed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»