import pygame
#Colors, Allways you need colors!!!!
BLACK = ( 0, 0, 0)
GREEN = ( 0, 255, 0)
WHITE = ( 255, 255, 255)
RED = ( 255, 0, 0)
ORANGE = ( 255, 115, 0)
YELLOW = ( 242, 255, 0)
BROWN = ( 115, 87, 39)
PURPLE = ( 298, 0, 247)
GRAY = ( 168, 168, 168)
PINK = ( 255, 0, 234)
BLUE = ( 0, 0 , 255)
pygame.init()
# Screen
screen = pygame.display.set_mode([700,500])
#Name of thewindow
pygame.display.set_caption("Trial to make PONG")
# Any variables!
x_speed = 0
y_speed = 0
x_coord = 10
y_coord = 250
x = 670
y = 250
other_speed = 0
other_speed2 = 0
rect_x = 50
rect_y = 50
rect_change_x = 5
rect_change_y = 5
clock = pygame.time.Clock()
#Sounds,maybe needed?
#Main Loop__________
done = False
while not done:
for event in pygame.event.get():
if event.type == pygame.QUIT:
done = True
# User pressed down on a key
elif event.type == pygame.KEYDOWN:
# Figure out if it was an arrow key. If so
# adjust speed.
if event.key == pygame.K_UP:
y_speed = -5
elif event.key == pygame.K_DOWN:
y_speed = 5
elif event.key == pygame.K_w:
other_speed2 = -5
elif event.key == pygame.K_s:
other_speed2 = 5
# User let up on a key
elif event.type == pygame.KEYUP:
# If it is an arrow key, reset vector back to zero
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
x_speed = 0
elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
y_speed = 0
elif event.key == pygame.K_w or event.key == pygame.K_s:
other_speed2 = 0
# Move the object according to the speed vector.
x_coord += x_speed
y_coord += y_speed
x += x_speed
y += other_speed2
screen.fill(BLACK)
pygame.draw.rect(screen,BLUE,[x_coord,y_coord,20,60])
pygame.draw.rect(screen,YELLOW,[x,y,20,60])
if x > 650 or x < 0:
# Draw the rectangle
pygame.draw.ellipse(screen, BLUE, [rect_x, rect_y, 50, 50])
# Move the rectangle starting point
rect_x += rect_change_x
rect_y += rect_change_y
if rect_x > 650 or rect_x < 0:
rect_change_x = rect_change_x * -1
if rect_y > 450 or rect_y < 0:
rect_change_y = rect_change_y * -1
pygame.display.flip()
clock.tick(60)
pygame.quit()
好吧,我有两个球拍在这个乒乓球游戏称为蓝色和黄色矩形。我可以移动它们,但它们会离开屏幕。我该怎么预防呢。我在网上看了一下,但似乎什么也没用。我考虑过在屏幕周围放一些矩形来做一个碰撞点的论证,当蓝色/黄色的桨碰到它时,它们不会再移动了,但是我不确定如何在应该破坏代码的情况下做到这一点?谢谢你的帮助。。在
在改变y坐标之前,你应该检查一下它是否离开了屏幕的边缘。看到了吗
虽然正如您所见,使用数字可能会有点混乱,这就是为什么您应该避免硬编码。最好有一个
display_height
,display_width
,和y_speed
变量。基本上,除了初始化变量之外,你应该只使用0作为数字。另外,请注意在if语句中省略+ y_speed
时会发生什么。在看起来你把屏幕的高度设置为500像素。也许你可以在移动之前检查一下你的球拍是否在屏幕的极限。在
我建议您开始使用^{} class ,因为它使处理此类情况变得容易。而且,您的代码将变得更干净和更短。在
下面是一个使用} 来确保玩家的划桨不会离开屏幕:
Rect
的示例。请注意,我只是使用^{相关问题 更多 >
编程相关推荐