簡體   English   中英

如何讓我的乒乓球拍在比賽中期成長?

[英]How to make my pong paddles grow mid-game?

我正在制作一個乒乓球游戲項目,我正在嘗試制作可選擇的道具。 我想要它,當我按下“r”時,左撥片的尺寸會增加。 我不知道如何做到這一點,請幫忙。 我將槳定義為一個類,並為它們設置了尺寸。 我希望它們在按下“r”鍵時立即將矩形( paddleA )的高度從 200 更改為 400。 我希望能夠保持我為我的游戲編碼的運動。

#Liam Real
#Final Project
#Pong with Power ups

import pygame
from random import randint

pygame.init()

clrBlack = pygame.Color(0, 0, 0)
clrWhite = pygame.Color(255,255,255)
clrRed = pygame.Color(255, 0, 0)
Minsize1 = (200)
Minsize2 = (200)
Maxsize1 = (400)

class Player(pygame.sprite.Sprite):

    
    def __init__(self, color, width, height):

        super().__init__()
        


        self.image = pygame.Surface([width, height])
        self.image.fill(clrBlack)
        self.image.set_colorkey(clrBlack)
 

        pygame.draw.rect(self.image, color, [0, 0, width, height])
        

        self.rect = self.image.get_rect()
    def moveUp(self, pixels):
        self.rect.y -= pixels

        if self.rect.y < 0:
          self.rect.y = 0
          
    def moveDown(self, pixels):
        self.rect.y += pixels

        if self.rect.y > 564:
          self.rect.y = 564
          
class Ball(pygame.sprite.Sprite):

    
    def __init__(self, color, width, height):
        super().__init__()
        

        self.image = pygame.Surface([width, height])
        self.image.fill(clrBlack)
        self.image.set_colorkey(clrBlack)
 

        pygame.draw.rect(self.image, color, [0, 0, width, height])
        
        self.velocity = [randint(4,8),randint(-8,8)]
        

        self.rect = self.image.get_rect()
        
    def update(self):
        self.rect.x += self.velocity[0]
        self.rect.y += self.velocity[1]

    def bounce(self):
        self.velocity[0] = -self.velocity[0]
        self.velocity[1] = randint(-8,8)
        

size = (1024, 768)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Pong and Power ups")

paddleA = Player(clrWhite, 10,Minsize1)
paddleA.rect.x = 20
paddleA.rect.y = 200

paddleB = Player(clrWhite, 10, Minsize2)
paddleB.rect.x = 994
paddleB.rect.y = 200



ball = Ball(clrWhite,10,10)
ball.rect.x = 512
ball.rect.y = 195

all_sprites_list = pygame.sprite.Group()

all_sprites_list.add(paddleA)
all_sprites_list.add(paddleB)
all_sprites_list.add(ball)

RunGame = True

clock = pygame.time.Clock()

scoreA = 0
scoreB = 0


while RunGame:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            RunGame = False
        elif event.type==pygame.KEYDOWN:
                if event.key==pygame.K_x: 
                     RunGame=False 


    keys = pygame.key.get_pressed()

    if keys[pygame.K_r]:
        paddleA = Player(clrWhite, 10,400)



    if keys[pygame.K_w]:
        paddleA.moveUp(5)
    if keys[pygame.K_s]:
        paddleA.moveDown(5)
    if keys[pygame.K_UP]:
        paddleB.moveUp(5)
    if keys[pygame.K_DOWN]:
        paddleB.moveDown(5)
        



    all_sprites_list.update()
    
    if ball.rect.x>=1014:
        scoreA+=1
        ball.velocity[0] = -ball.velocity[0]
    if ball.rect.x<=0:
        scoreB+=1
        ball.velocity[0] = -ball.velocity[0]
    if ball.rect.y>758:
        ball.velocity[1] = -ball.velocity[1]
    if ball.rect.y<0:
        ball.velocity[1] = -ball.velocity[1]  
        
    if pygame.sprite.collide_mask(ball, paddleA) or pygame.sprite.collide_mask(ball, paddleB):
      ball.bounce()

    screen.fill(clrBlack)

    pygame.draw.line(screen, clrWhite, [512, 0], [512, 800 ], 5)

    all_sprites_list.draw(screen)
    
    
    font = pygame.font.Font(None, 74)
    text = font.render(str(scoreA), 1, clrWhite)
    screen.blit(text, (250,10))
    text = font.render(str(scoreB), 1, clrWhite)
    screen.blit(text, (760,10))

    pygame.display.flip()

    clock.tick(60)
    
pygame.quit()

Player類添加一個grow方法。 該方法創建一個更大尺寸的新image ,但保持槳的中心位置:

class Player(pygame.sprite.Sprite):

    def __init__(self, color, width, height):
        super().__init__()
        self.color = color
        self.width = width
        self.height = height
        self.image = pygame.Surface([self.width, self.height])
        self.image.fill(clrBlack)
        self.image.set_colorkey(clrBlack)
        self.image.fill(self.color)
        self.rect = self.image.get_rect()

    def grow(self):
        self.image = pygame.Surface([self.width, self.height*2])
        self.image.fill(self.color)
        self.rect = self.image.get_rect(center = self.rect.center)

    def moveUp(self, pixels):
        self.rect.y -= pixels
        if self.rect.top < 0:
            self.rect.top = 0
          
    def moveDown(self, pixels):
        self.rect.y += pixels
        if self.rect.bottom > 768:
          self.rect.bottom = 768

當按下r時,使用KEYDOWN事件增加槳:

while RunGame:

    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            RunGame = False
        elif event.type==pygame.KEYDOWN:
            if event.key==pygame.K_x: 
                RunGame=False 

            if event.key==pygame.K_r: 
                paddleA.grow()

    # [...]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM