首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >乒乓游戏: Paddle不会移动输入(Python)

乒乓游戏: Paddle不会移动输入(Python)
EN

Stack Overflow用户
提问于 2022-11-10 03:10:26
回答 1查看 21关注 0票数 0

我是Python的新手,试着制作游戏乒乓。我已经用模块创建了一个Paddle类,但是我无法让paddle移动。我只想从一个方向开始,然后向下应该不会太难。有人能看出我的方法出了什么问题吗?

代码语言:javascript
复制
from turtle import Turtle

COORDINATES = [(350, 20), (350, 0), (350, -20)]
X_COORDINATES = [350, 350, 350]
Y_COORDINATES = [20, 0, -20]


class Paddle(Turtle):

    def __init__(self):
        super().__init__()
        self.paddle = []
        self.create_paddles()
        self.coordinate_number = 0

    def create_paddles(self):
        for coordinates in COORDINATES:
            self.paddle_block = Turtle(shape='square')
            self.paddle_block.goto(coordinates)
            self.paddle_block.color('white')
            self.paddle.append(self.paddle_block)

    def w(self):
        global Y_COORDINATES
        Y_COORDINATES = [coordinate + 100 for coordinate in Y_COORDINATES]

        for self.paddle_block in self.paddle:
            self.paddle_block.goto(X_COORDINATES[self.coordinate_number], Y_COORDINATES[self.coordinate_number])
            self.coordinate_number += 1
        self.coordinate_number = 0

我试着迭代y坐标,然后用我的函数添加到每个坐标中。从那里开始,我尝试迭代每个paddle块,并将它的当前位置移动到一个新的位置,并接受新更新的y坐标。我期待运动,但我没有看到任何运动。

EN

回答 1

Stack Overflow用户

发布于 2022-11-10 18:48:37

这不是解决这个问题的通常方法,但我明白为什么它可能是有利的。您的主要问题似乎是无法确定什么应该是全局的,什么应该是本地的,什么应该是属性。让我们来展示这三种方法的用法:

代码语言:javascript
复制
from turtle import Screen, Turtle

COORDINATES = [(350, 20), (350, 0), (350, -20)]

class Paddle(Turtle):

    def __init__(self):
        super().__init__()

        self.paddle = []
        self.coordinates = list(COORDINATES)  # make copy

        self.create_paddles()

    def create_paddles(self):
        for coordinate in self.coordinates:
            paddle_block = Turtle(shape='square', visible=False)
            paddle_block.penup()
            paddle_block.color('white')
            paddle_block.goto(coordinate)
            paddle_block.showturtle()

            self.paddle.append(paddle_block)

    def move_up(self):
        self.coordinates = [(x, y + 10) for x, y in self.coordinates]

        for coordinate_number, paddle_block in enumerate(self.paddle):
            paddle_block.goto(self.coordinates[coordinate_number])

    def move_down(self):
        self.coordinates = [(x, y - 10) for x, y in self.coordinates]

        for coordinate_number, paddle_block in enumerate(self.paddle):
            paddle_block.goto(self.coordinates[coordinate_number])

screen = Screen()
screen.bgcolor('black')

paddle_1 = Paddle()

screen.onkey(paddle_1.move_up, 'w')
screen.onkey(paddle_1.move_down, 's')

screen.listen()
screen.mainloop()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74383734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档