我正在做一个乒乓球游戏,它最终会有一个挡块,中间有一个类似的加农炮,既可以射球,也可以加力,最后会增加不同的功能,但现在我甚至不能让球正确地击中球拍。。。。。 导入pygame
BLACK = (0,0,0)
WHITE = (255,255,255)
RED = (255,0,0)
GOLD = (201,168,168)
Call = pygame.sprite.Group(())
got = pygame.sprite.Group(())
SCR_WID, SCR_HEI = 640, 480
backg = pygame.image.load("background.png")
class Player(pygame.sprite.Sprite):
def __init__(self, name):
pygame.sprite.Sprite.__init__(self)
if name == "george":
self.x, self.y = 16, SCR_HEI/2
elif name =="frank":
self.x, self.y = SCR_WID-16, SCR_HEI/2
self.name = name
self.speed = 3
self.padWid, self.padHei = 8, 64
self.score = 0
self.scoreFont = pygame.font.Font("imagine_font.ttf", 64)
def scoring(self):
scoreBlit = self.scoreFont.render(str(self.score), 1, (255, 255, 255))
if self.name == "george":
screen.blit(scoreBlit, (32, 16))
if self.score == 10:
print ("player 1 wins!")
exit()
elif self.name == "frank":
screen.blit(scoreBlit, (SCR_HEI+92, 16))
if self.score == 10:
print ("Player 2 wins!")
exit()
def movement(self):
keys = pygame.key.get_pressed()
if self.name == "george":
if keys[pygame.K_w]:
self.y -= self.speed
elif keys[pygame.K_s]:
self.y += self.speed
elif self.name == "frank":
if keys[pygame.K_UP]:
self.y -= self.speed
elif keys[pygame.K_DOWN]:
self.y += self.speed
if self.y <= 0:
self.y = 0
elif self.y >= SCR_HEI-64:
self.y = SCR_HEI-64
def draw(self):
pygame.draw.rect(screen, (255, 255, 255), (self.x, self.y, self.padWid, self.padHei))
球穿过敌人的球拍。它实际上并没有穿过它,它会挡住它,但它会越过桨。我一直在尝试不同的方法,但我是新手,正在努力。在
这是我认为给我带来麻烦的课,我没有犯任何错误,只是没有按我喜欢的方式击球。游戏者的划桨工作得很好,只是敌人没有正确地做它。在
^{pr2}$我也在努力增加碰撞,以防球反弹。我尝试了几种不同的方法,但注意到球穿过了球拍,必须先解决这个问题。这是我的下一步。感谢任何帮助。在
class Block(pygame.sprite.Sprite):
image = pygame.image.load("brick.png")
def __init__(self):
pygame.sprite.Sprite.__init__(self)
self.rect = self.image.get_rect()
self.rect.x = 300
self.rect.y = 0
SCR_WID, SCR_HEI = 640, 480
screen = pygame.display.set_mode((SCR_WID, SCR_HEI))
pygame.display.set_caption("Pong")
pygame.font.init()
clock = pygame.time.Clock()
FPS = 60
pygame.init()
def main():
backgscale = pygame.transform.scale(backg,(SCR_WID, SCR_HEI))
global player
player = Player("george")
global enemy
enemy = Player("frank")
block = Block ()
got.add(block)
ball = Ball()
Call.add(ball)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
print("Game exited by user")
exit()
screen.blit(backg,(0,0))
got.update()
Call.update()
backgscale = pygame.transform.scale(backg,(SCR_WID, SCR_HEI))
got.draw(screen)
Call.draw(screen)
player.movement()
enemy.movement()
ball.movement()
player.draw()
player.scoring()
enemy.draw()
enemy.scoring()
pygame.display.flip()
clock.tick(FPS)
main()
我不知道我是不是说错话了。在
我尝试过创建精灵组,并以这种方式显示它们,我不知道更好的方式来显示它们,但它们仍然可以移动。。。在
我不得不改变图像的表面,因为我没有图像,但这对我很好。在
相关问题 更多 >
编程相关推荐