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())/>代码>。你已经告诉了我们预期的结果,但是当前的问题是什么?它是不是在碰撞之后什么都没做?还是你有错误?