Python Turtle像素位置输出是指哪个部分?

发布于 2025-01-30 02:43:42 字数 2193 浏览 2 评论 0原文

嘿,如果要复制游戏注释,这是代码,它还不完整。我有一个关于python Turtle“ yourtext.ycor()或yourtext.xcor()”的命令的简短问题。因此,我知道此命令将返回坐标位置,但是我相信它会返回中心位置,但我不确定(也许最左边或最右边的边缘?(我指的是此示例中的右桨) 。

​>

#Simple Pong in Python 3 for Beginners 
# By @TokyoEdTech
# Part 1: Getting Started

import turtle
import os


wn = turtle.Screen()
wn.title("Pong")
wn.bgcolor("orange")
wn.setup(width=800, height=600)
wn.tracer(0)
 
#Paddle A 

paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("black")
paddle_a.shapesize(stretch_wid=5, stretch_len=1)
paddle_a.penup()
paddle_a.goto(-350,0)

#Paddle B 

paddle_b = turtle.Turtle()
paddle_b.speed(0)
paddle_b.shape("square")
paddle_b.color("black")
paddle_b.shapesize(stretch_wid=5, stretch_len=1)  #This means 100 Tall and 20 Wide so 1=20pix and so 5*20=100pix 
paddle_b.penup()
paddle_b.goto(350,0)

#Ball 
ball = turtle.Turtle()
ball.speed(0)
ball.shape("square")
ball.color("black")
ball.penup()
ball.goto(0,0)
ball.dx =  .2
ball.dy = .2 

#Function 
def paddle_a_up():
    y=paddle_a.ycor()
    y += 20
    paddle_a.sety(y)

def paddle_a_down():
    y=paddle_a.ycor()
    y -= 20
    paddle_a.sety(y)

def paddle_b_up():
    y=paddle_b.ycor()
    y += 20
    paddle_b.sety(y)

def paddle_b_down():
    y=paddle_b.ycor()
    y -= 20
    paddle_b.sety(y)

# Keyboard binding 
wn.listen()
wn.onkeypress(paddle_a_up,"w")
wn.onkeypress(paddle_a_down,"s")
wn.onkeypress(paddle_b_up,"Up")
wn.onkeypress(paddle_b_down,"Down")

#Main game Loop 
while True:
    wn.update()

#Move the Ball 
    ball.setx(ball.xcor() + ball.dx)
    ball.sety(ball.ycor() + ball.dy)

#BorderChecking
    if ball.ycor() > 290:
        ball.sety(290)
        ball.dy *= -1


    if ball.ycor() < -290:
        ball.sety(-290)
        ball.dy *= -1

    if ball.xcor() > 390:
        ball.goto(0,0)
        ball.dx*=-1

    if ball.xcor() < -390:
        ball.goto(0,0)
        ball.dx *= -1





#Paddle and Ball Collisions 

    if (ball.xcor() > 340 and ball.xcor() < 350) and (ball.ycor() < paddle_b.ycor() + 40 and ball.ycor() > paddle_b.ycor() -40):
        ball.setx(340)
        ball.dx *=-1

强的文本

Hey all here is the code if you want to reproduce the game note it's not complete. I have a brief question regarding the command in python turtle "yourtext.ycor() or yourtext.xcor()". So, I know that this command will return a coordinate position however I believe that it will return the center position, but I am not sure (maybe the leftmost edge or the rightmost edge? (I am referring to the right paddle in this example). So, in essence what does the returned number refer to in terms of pixel position.

Pong Game Output

#Simple Pong in Python 3 for Beginners 
# By @TokyoEdTech
# Part 1: Getting Started

import turtle
import os


wn = turtle.Screen()
wn.title("Pong")
wn.bgcolor("orange")
wn.setup(width=800, height=600)
wn.tracer(0)
 
#Paddle A 

paddle_a = turtle.Turtle()
paddle_a.speed(0)
paddle_a.shape("square")
paddle_a.color("black")
paddle_a.shapesize(stretch_wid=5, stretch_len=1)
paddle_a.penup()
paddle_a.goto(-350,0)

#Paddle B 

paddle_b = turtle.Turtle()
paddle_b.speed(0)
paddle_b.shape("square")
paddle_b.color("black")
paddle_b.shapesize(stretch_wid=5, stretch_len=1)  #This means 100 Tall and 20 Wide so 1=20pix and so 5*20=100pix 
paddle_b.penup()
paddle_b.goto(350,0)

#Ball 
ball = turtle.Turtle()
ball.speed(0)
ball.shape("square")
ball.color("black")
ball.penup()
ball.goto(0,0)
ball.dx =  .2
ball.dy = .2 

#Function 
def paddle_a_up():
    y=paddle_a.ycor()
    y += 20
    paddle_a.sety(y)

def paddle_a_down():
    y=paddle_a.ycor()
    y -= 20
    paddle_a.sety(y)

def paddle_b_up():
    y=paddle_b.ycor()
    y += 20
    paddle_b.sety(y)

def paddle_b_down():
    y=paddle_b.ycor()
    y -= 20
    paddle_b.sety(y)

# Keyboard binding 
wn.listen()
wn.onkeypress(paddle_a_up,"w")
wn.onkeypress(paddle_a_down,"s")
wn.onkeypress(paddle_b_up,"Up")
wn.onkeypress(paddle_b_down,"Down")

#Main game Loop 
while True:
    wn.update()

#Move the Ball 
    ball.setx(ball.xcor() + ball.dx)
    ball.sety(ball.ycor() + ball.dy)

#BorderChecking
    if ball.ycor() > 290:
        ball.sety(290)
        ball.dy *= -1


    if ball.ycor() < -290:
        ball.sety(-290)
        ball.dy *= -1

    if ball.xcor() > 390:
        ball.goto(0,0)
        ball.dx*=-1

    if ball.xcor() < -390:
        ball.goto(0,0)
        ball.dx *= -1





#Paddle and Ball Collisions 

    if (ball.xcor() > 340 and ball.xcor() < 350) and (ball.ycor() < paddle_b.ycor() + 40 and ball.ycor() > paddle_b.ycor() -40):
        ball.setx(340)
        ball.dx *=-1

strong text

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

一抹苦笑 2025-02-06 02:43:42

我相信它会返回中心位置,但我不确定
(也许最左边或最右边的边缘?... ...
返回的号码是指像素位置。

我同意@jasonharper关于自定义形状(+1)的观点,但就内置形状而言,我认为这是对乌龟本身最好提出的问题:

from turtle import Screen, Turtle

RADIUS = 150
MAGNIFICATION = 4
FONT = ('Arial', 24, 'normal')

screen = Screen()
shapes = screen.getshapes()
angle = 360/len(shapes)

turtle = Turtle()
turtle.hideturtle()
turtle.shapesize(MAGNIFICATION)
turtle.penup()
turtle.sety(-RADIUS)

for shape in shapes:
    turtle.shape(shape)
    turtle.stamp()
    turtle.dot(MAGNIFICATION, 'red')

    turtle.right(90)
    turtle.forward(RADIUS/2)
    turtle.write(shape, align='center', font=FONT)
    turtle.backward(RADIUS/2)
    turtle.left(90)

    turtle.circle(RADIUS, extent=angle)

screen.exitonclick()

答案是内置的 -形状在热点的位置方面有所不同。至于您的桨,基于'Square',热点是中心。

I believe that it will return the center position, but I am not sure
(maybe the leftmost edge or the rightmost edge? ... what does the
returned number refer to in terms of pixel position.

I agree with @jasonharper with respect to custom shapes (+1) but with respect to built-in shapes, I think this is a question best posed to turtle itself:

from turtle import Screen, Turtle

RADIUS = 150
MAGNIFICATION = 4
FONT = ('Arial', 24, 'normal')

screen = Screen()
shapes = screen.getshapes()
angle = 360/len(shapes)

turtle = Turtle()
turtle.hideturtle()
turtle.shapesize(MAGNIFICATION)
turtle.penup()
turtle.sety(-RADIUS)

for shape in shapes:
    turtle.shape(shape)
    turtle.stamp()
    turtle.dot(MAGNIFICATION, 'red')

    turtle.right(90)
    turtle.forward(RADIUS/2)
    turtle.write(shape, align='center', font=FONT)
    turtle.backward(RADIUS/2)
    turtle.left(90)

    turtle.circle(RADIUS, extent=angle)

screen.exitonclick()

enter image description here

The answer is that the built-in shapes vary with respect to the location of the hot spot. As far as your paddles, which are based on 'square', the hot spot is the center.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文