Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame
- import sys
- import random
- import time
- black = (0, 0, 0)
- white = (255, 255, 255)
- pink = (244, 121, 131)
- pygame.init()
- screen = pygame.display.set_mode((720, 480))
- window = screen.get_rect()
- # variables to defind player palette
- player_x = 50
- player_y = 90
- player_size = 30
- # połozenie i wymiary paletki
- player = pygame.Rect(player_x, player_y, player_size, player_size*2.5)
- player.center = (player_x+(player_size/2), player_y+(player_size/2))
- opponent = pygame.Rect(window.right-player_x-player_size, player_y, player_size, player_size*2.5)
- opponent.center = (window.right-player_x-player_size+(player_size/2), player_y+(player_size/2))
- ball = pygame.Rect(window.centerx, window.centery, player_size, player_size)
- ball.center = window.center
- step = 15
- vec = [1, 2]
- # losowanie wektora by rozgrywka za kazdym razem wyglądała inaczej
- if random.randint(1, 2) == 1:
- vec[0] = random.randint(2, 4)*-1
- vec[1] = random.randint(2, 4)
- else:
- vec[0] = random.randint(2, 4)
- vec[1] = random.randint(2, 4)*-1
- playerPoints = 0
- opponentPoints = 0
- fps = pygame.time.Clock()
- pygame.key.set_repeat(50, 50)
- # blokowanie boków piłeczki
- def checkScore():
- if ball.left < window.left:
- ball.left = window.left
- if ball.right > window.right:
- ball.right = window.right
- # kolizja z bokami okna
- def playerBorderCollision():
- if player.top < window.top:
- player.top = window.top
- if player.bottom > window.bottom:
- player.bottom = window.bottom
- if opponent.top < window.top:
- opponent.top = window.top
- if opponent.bottom > window.bottom:
- opponent.bottom = window.bottom
- # kolizja z paletkami
- def checkCollision():
- global vec
- if(ball.colliderect(player) or ball.colliderect(opponent)):
- vec[0] = vec[0]*1.2 # przyspieszanie piłeczki po odbicu od paletki
- return 1
- return 0
- # dodawanie punktow, reset pileczki
- def checkScore():
- global opponentPoints, playerPoints
- if(ball.right > window.right):
- playerPoints += 1
- resetBall()
- if(ball.left < window.left):
- opponentPoints += 1
- resetBall()
- # reset pilki po zdobyciu punktu
- def resetBall():
- global ball, vec
- ball.x = window.centerx
- ball.y = window.centery
- if random.randint(1, 2) == 1:
- vec[0] = random.randint(2, 4)*-1
- vec[1] = random.randint(2, 4)
- else:
- vec[0] = random.randint(2, 4)
- vec[1] = random.randint(2, 4)*-1
- # wyswietlanie
- def display():
- myfont = pygame.font.Font('freesansbold.ttf', 20)
- msg = myfont.render(str(playerPoints)+" The Pong Game :) "+str(opponentPoints), True, pink, (10, 10))
- msg_box = msg.get_rect()
- msg_box.y = 10
- msg_box.x = (window.width-msg_box.width)/2
- screen.fill(black)
- screen.blit(msg, msg_box) # pink text pygame
- pygame.draw.rect(screen, white, player)
- pygame.draw.rect(screen, white, opponent)
- pygame.draw.rect(screen, pink, ball)
- pygame.display.flip()
- while True:
- # obsluga klawiszy
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- sys.exit()
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_DOWN:
- player = player.move(0, step)
- if event.key == pygame.K_UP:
- player = player.move(0, -step)
- # ruch piłeczki
- ball = ball.move(vec)
- if ball.top < window.top or ball.bottom > window.bottom:
- vec[1] = -vec[1]
- # ruch oponenta
- distance = (ball.top - (opponent.height/2) - opponent.top)
- if(ball.x >= window.centerx):
- if(( (distance >= 0) and (vec[1] < 0) ) or ( (distance <= 0) and (vec[1] > 0) )):
- opponent = opponent.move([0, -vec[1]/2])
- elif(( (distance >= 0) and (vec[1] > 0) ) or ( (distance <= 0) and (vec[1] < 0) )):
- opponent = opponent.move([0, vec[1]/2])
- if(ball.x >= (window.centerx * 3 / 2)):
- if(( (distance >= 0) and (vec[1] < 0) ) or ( (distance <= 0) and (vec[1] > 0) )):
- opponent = opponent.move([0, -vec[1]])
- elif(( (distance >= 0) and (vec[1] > 0) ) or ( (distance <= 0) and (vec[1] < 0) )):
- opponent = opponent.move([0, vec[1]])
- if checkCollision():
- vec[0] = -vec[0]
- playerBorderCollision()
- checkScore()
- display()
- # checkWin
- if(playerPoints == 3):
- myfont = pygame.font.Font('freesansbold.ttf', 20)
- msg = myfont.render("YOU WIN!", True, pink, (10, 10))
- msg_box = msg.get_rect()
- msg_box.y = 50
- msg_box.x = (window.width-msg_box.width)/2
- screen.blit(msg, msg_box)
- pygame.display.flip()
- break
- elif(opponentPoints == 3):
- myfont = pygame.font.Font('freesansbold.ttf', 20)
- msg = myfont.render("GAME OVER!", True, pink, (10, 10))
- msg_box = msg.get_rect()
- msg_box.y = 50
- msg_box.x = (window.width-msg_box.width)/2
- screen.blit(msg, msg_box)
- pygame.display.flip()
- break
- fps.tick(60)
- time.sleep(5000)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement