Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 要让黑洞运转,就必须和球碰撞 我需要让中间的黑洞能够与球碰撞并结束比赛,但是我不确定如何做到这一点。_Python_Pygame_Pong - Fatal编程技术网

Python 要让黑洞运转,就必须和球碰撞 我需要让中间的黑洞能够与球碰撞并结束比赛,但是我不确定如何做到这一点。

Python 要让黑洞运转,就必须和球碰撞 我需要让中间的黑洞能够与球碰撞并结束比赛,但是我不确定如何做到这一点。,python,pygame,pong,Python,Pygame,Pong,在过去尝试过一些事情,但我已经忘记了该做什么,我将在年底回到这项任务 我期待着球与球洞相撞,结束或冻结比赛,以表示比赛已经结束 几个月前我尝试了一些事情,但我将在今年年底回到这项任务,需要一些帮助来完成它 import random import sys import pygame hole = pygame.image.load('hole.png') class Paddle(pygame.Rect): def __init__(self, velocity, up_key,

在过去尝试过一些事情,但我已经忘记了该做什么,我将在年底回到这项任务

我期待着球与球洞相撞,结束或冻结比赛,以表示比赛已经结束

几个月前我尝试了一些事情,但我将在今年年底回到这项任务,需要一些帮助来完成它

import random
import sys

import pygame

hole = pygame.image.load('hole.png')

class Paddle(pygame.Rect):
    def __init__(self, velocity, up_key, down_key, *args, **kwargs):
        self.velocity = velocity
        self.up_key = up_key
        self.down_key = down_key
        super().__init__(*args, **kwargs)

    def move_paddle(self, board_height):
        keys_pressed = pygame.key.get_pressed()

        if keys_pressed[self.up_key]:
            if self.y - self.velocity > 0:
                self.y -= self.velocity

        if keys_pressed[self.down_key]:
            if self.y + self.velocity < board_height - self.height:
                self.y += self.velocity


class Ball(pygame.Rect):
    def __init__(self, velocity, *args, **kwargs):
        self.velocity = velocity
        self.angle = 0
        super().__init__(*args, **kwargs)

    def move_ball(self):
        self.x += self.velocity
        self.y += self.angle


class Pong:
    HEIGHT = 400
    WIDTH = 600

    PADDLE_WIDTH = 10
    PADDLE_HEIGHT = 100

    BALL_WIDTH = 10
    BALL_VELOCITY = 10
    BALL_ANGLE = 0

    COLOUR = (255, 255, 255)

    def __init__(self):
        pygame.init()  # Start the pygame instance.

        # Setup the screen
        self.screen = pygame.display.set_mode((self.WIDTH, self.HEIGHT))
        self.clock = pygame.time.Clock()

        # Create the player objects.

        self.paddles = []
        self.balls = []
        self.paddles.append(Paddle(  # The left paddle
            self.BALL_VELOCITY,
            pygame.K_w,
            pygame.K_s,
            0,
            self.HEIGHT / 2 - self.PADDLE_HEIGHT / 2,
            self.PADDLE_WIDTH,
            self.PADDLE_HEIGHT
        ))

        self.paddles.append(Paddle(  # The right paddle
            self.BALL_VELOCITY,
            pygame.K_UP,
            pygame.K_DOWN,
            self.WIDTH - self.PADDLE_WIDTH,
            self.HEIGHT / 2 - self.PADDLE_HEIGHT / 2,
            self.PADDLE_WIDTH,
            self.PADDLE_HEIGHT
        ))

        self.balls.append(Ball(
            self.BALL_VELOCITY,
            self.WIDTH / 2 - self.BALL_WIDTH / 2,
            self.HEIGHT / 2 - self.BALL_WIDTH / 2,
            self.BALL_WIDTH,
            self.BALL_WIDTH
         ))

        self.central_line = pygame.Rect(self.WIDTH/2, 0, 1, self.HEIGHT)

    def check_ball_hits_wall(self):
        for ball in self.balls:
            if ball.x > self.WIDTH or ball.x < 0:
                sys.exit(1)

            if ball.y > self.HEIGHT - self.BALL_WIDTH or ball.y < 0:
                ball.angle = -ball.angle

    def check_ball_hits_paddle(self):
        for ball in self.balls:
            for paddle in self.paddles:
                if ball.colliderect(paddle):
                    ball.velocity = -ball.velocity
                    ball.angle = random.randint(-10, 10)
                    break


    def game_loop(self):
        while True:
            for event in pygame.event.get():
                # Add some extra ways to exit the game.
                if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE:
                    return

            self.check_ball_hits_paddle()
            self.check_ball_hits_wall()

            # Redraw the screen.
            self.screen.fill((0, 0, 0))
            self.screen.blit(hole,(235, 150))

            for paddle in self.paddles:
                paddle.move_paddle(self.HEIGHT)
                pygame.draw.rect(self.screen, self.COLOUR, paddle)

            # We know we're not ending the game so lets move the ball here.
            for ball in self.balls:
                ball.move_ball()
                pygame.draw.rect(self.screen, self.COLOUR, ball)

            pygame.draw.rect(self.screen, self.COLOUR, self.central_line)

            pygame.display.flip()
            self.clock.tick(60)


if __name__ == '__main__':
    pong = Pong()
    pong.game_loop()
随机导入
导入系统
导入pygame
hole=pygame.image.load('hole.png')
类桨(pygame.Rect):
定义初始值(自身、速度、向上键、向下键、*args、**kwargs):
自速度=速度
self.up\u key=up\u key
self.down\u key=down\u key
super()
def移动桨(自身、板高度):
keys\u pressed=pygame.key.get\u pressed()
如果按[self.up\u键]:
如果self.y-self.velocity>0:
self.y-=自速度
如果按下[self.down\u]键:
如果self.y+self.velocityself.WIDTH或ball.x<0:
系统出口(1)
如果ball.y>self.HEIGHT-self.ball\u WIDTH或ball.y<0:
ball.angle=-ball.angle
def检查球击桨(自身):
对于self.balls中的ball:
对于自桨中的桨:
如果球直接碰撞(划桨):
ball.velocity=-ball.velocity
ball.angle=random.randint(-10,10)
打破
def game_循环(自):
尽管如此:
对于pygame.event.get()中的事件:
#添加一些额外的退出游戏的方法。
如果event.type==pygame.KEYDOWN和event.key==pygame.K_转义:
返回
赛尔夫。检查球、击球、划桨()
自我检查球打到墙()
#重新绘制屏幕。
自我筛选填充((0,0,0))
自筛板(孔,(235,150))
对于自桨中的桨:
划桨。移动划桨(自身高度)
pygame.draw.rect(self.screen、self.color、blade)
#我们知道我们不会结束比赛,所以让我们把球移到这里。
对于self.balls中的ball:
球。移动球()
pygame.draw.rect(自我屏幕、自我颜色、球)
pygame.draw.rect(自屏幕、自颜色、自中心线)
pygame.display.flip()
自我时钟滴答(60)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
pong=pong()
pong.game_loop()

预期的结果是,当球与黑洞在中间碰撞时,游戏将以冻结或关闭游戏结束。

在PyPosie初始化之前,不可能加载一个图像(<代码> PyPrase.Ifimult.Load())/>代码>。你已经告诉了我们预期的结果,但是当前的问题是什么?它是不是在碰撞之后什么都没做?还是你有错误?