PyGame 中的 Pong 在我运行程序时没有弹出任何图像



当我运行程序时,它实际上运行了大约 1 秒然后停止,但当我运行它时没有任何弹出。我昨天问了一个关于这个问题的问题,人们告诉我只为每个对象创建类,所以我正在尝试这样做,但现在什么都没有弹出。有人可能知道这里的问题是什么?

import sys
import pygame
import math
import random

class Paddle():
    def __init__(self, background, x_axis, height):
        self.screen = screen
        (sw, sh) = screen.get_size()
        self.x = x - 25
        self.y = sh / 2 - self.h / 2
        self.h = h
        self.w = 20
        self.max_y = sh - height
        self.min_y = 0
        self.speed = 0
    def moving(self, amount):
        self.speed = amount
        self.y = self.y + amount
        if self.y > self.max_y:
            self.y = self.max_y
        elif self.y < self.min_y:
            self.y = self.min_y
    def draw(self):
        pygame.draw.rect(self.screen, (255, 255, 255), (self.x, self.y, self.w, self.h))

class Ball():
    def __init__(self, screen):
        self.screen = screen
        self.w = 50
        self.h = 50
        self.playClick = False
        self.reset()
    def reset(self):
        (sw, sh) = self.screen.get_size()
        self.x = sw / 2 - 25
        self.y = sh / 2 - 25
        angle = random() * math.radians(20)
        speed = 10
        self.dir_x = speed * math.cos(ball_angle)
        self.dir_y = speed * math.sin(ball_angle)
        if random() > 0.5:
            self.dir_x = -self.dir_x
        elif random() > 0.5:
            self.dir_y = -self.dir_y
        self.timer = 2
    def updating(self, time, p1, p2):
        if self.timer > 0:
            self.timer -= time
        else:
            self.x += self.dir_x
            self.y += self.dir_y
        (sw, sh) = self.screen.get_size()
        if self.x_axis + 50 < 0:
            self.reset()
        elif self.x_axis > side_width:
            self.reset()
        else:
            if (self.y < 0 and self.dir_y < 0) or (self.y + self.h > sh and self.dir_y > 0):
                self.dir_y = -self.dir_y
                self.playClick = True
            selfrect = pygame.Rect(self.x_axis, self.y_axis, self.width, self.height)
            p1rect = pygame.Rect(p1.x, p1.y, p1.w, p1.h)
            p2rect = pygame.Rect(p2.x, p2.y, p2.w, p2.h)
            if selfrect.colliderect(p1rect) and self.dir_x < 0:
                self.dir_x = -self.dir_x
                self.dir_y += p1.speed
                self.playClick = True
            if selfrect.colliderect(p2rect) and self.dir_x > 0:
                self.dir_x = -self.dir_x
                self.dir_y += p2.speed
                self.playClick = True
            if self.dir_y > 15:
                self.dir_y = 15
            elif self.dir_y < -15:
                self.dir_y = -15
    def draw(self, click):
        pygame.draw.rect(self.screen, (255, 255, 255), (self.x, self.y, self.w, self.h))
        if self.playclick:
            click.play()
            self.playClick = False

def main():
    pygame.init()
    screen = pygame.display.set_mode((1000, 800))
    clock = pygame.time.Clock()
    p1 = Paddle(screen, 100, 150)
    p2 = Paddle(screen, 900, 150)
    ball = Ball(screen)
    background_image = pygame.image.load("RPGMAP.png").convert()
    while True:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                sys.exit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_w:
                p1.moving(-10)
            if event.key == pygame.K_s:
                p1.moving(10)
            if event.key == pygame.K_UP:
                p2.moving(-10)
            if event.key == pygame.K_DOWN:
                p2.moving(10)
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_w:
                p1.moving(0)
            if event.key == pygame.K_s:
                p1.moving(0)
            if event.key == pygame.K_UP:
                p2.moving(0)
            if event.key == pygame.K_DOWN:
                p2.moving(0)
        ball.update(1/60, p1, p2)
        screen.blit(background_image, [0, 0])
        p1.draw()
        p2.draw()
        pygame.display.flip()
        clock.tick(60)
        main()

你不会在任何地方声明screen

self.screen = screen <- NameError

你也不传递 x 或 h:

 self.x = x - 25 <- NameError
 self.h = h <- NameError
您还有许多其他变量和属性,您

正在尝试使用,这些变量和属性未在任何地方声明。

相关内容

  • 没有找到相关文章

最新更新