Well im very noob with pygame u.u i need help making a collision
I have 2 sprites, a ball and a bar.
i want to make that the bar has 3 parts, left center and right, if the ball hits one of those parts it will have a different effect.
But i just dont know how to do it xD
Here its what i have
import pygame, os, sys
from pygame.locals import *
def load_image(name, colorkey=None):
fullname = os.path.join('data', name)
try:
image = pygame.image.load(fullname)
except pygame.error, message:
print 'Cannot load image:', name
raise SystemExit, message
image = image.convert()
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0,0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()
def load_sound(name):
class NoneSound:
def play(self):
pass
fullname = os.path.join('data', name)
try:
sound = pygame.mixer.Sound(name)
except pygame.error, message:
print "Cannot load sound: ", wav
raise SystemExit, message
return sound
#Global Variables
width = 640
height = 480
speed = 30
ballspeed = 15
pygame.init() # Starts pygame
pygame.key.set_repeat(1, 1) # Set key repeat rate
screen = pygame.display.set_mode((width, height))
pygame.display.set_caption("PyPong")
backround = pygame.Surface([width, height])
backround.fill((0, 0, 0))
screen.blit(backround, (0,0))
class bar(
pygame.sprite.Sprite):
global width, height, screen, black
def __init__(self):
self.x = width/2
self.y = height-20
pygame.sprite.Sprite.__init__(self)
self.bar, self.rect
= load_image('bar.bmp')
self.rect.topleft = (width/2, height-20)
def move(self, event):
if (event == K_RIGHT):
self.rect = self.rect.move(speed, 0)
self.x
+= speed
elif (event == K_LEFT):
self.rect = self.rect.move(-speed, 0)
self.x -= speed
class ball(pygame.sprite.Sprite):
def __init__(self):
pygame.sprite.Sprite.__init_
_(self)
self.x = width/2
self.y = -130
self.angle = 0
self.score = 0
self.speed = 10
self.ball, self.rect = load_image('ball.bmp', -1)
self.rect.topleft
= (width/2, 5)
def move(self):
if self.y <= height-170:
if self.angle == 0:
self.rect = self.rect.move(0, self.speed)
self.y += self.speed
elif angle == -45:
self.rect = self.rect.move(6, self.speed)
ball.x += 6
self.y += self.speed
elif angle == 45:
self.rect
= self.rect.move(-6, self.speed)
ball.x -= 6
self.y += self.speed
elif COLLISiON!: #need to make collision T_T
self.speed = -self.speed
else:
self.score-=100
bar = bar()
ball = ball()
screen.blit(ball.ball, ball.rect)
screen.blit(bar.bar, bar.rect)
pygame.display.update()
while True:
"""Bar Stuff"""
for event in pygame.event.get():
if event.type == QUIT:
sys.exit()
elif event.type == KEYDOWN:
bar.move(event.key)
"""Ball Stuff"""
ball.move()
"""Show all and update"""
screen.blit(backround, (0,0))
screen.blit(bar.bar, bar.rect)
screen.blit(ball.ball, ball.rect)
pygame.display.update
()
pygame.time.delay(10)
--
Best Regards.
fedekiller
- [pygame] collision federico ramirez
- Re: [pygame] collision Ryan Charpentier
- [pygame] Using sprites versus simple surfaces Farai Aschwanden
- Re: [pygame] Using sprites versus simple sur... Jason Massey
- Re: [pygame] Using sprites versus simple... Farai Aschwanden
- Re: [pygame] Using sprites versus simple sur... Pete Shinners
- Re: [pygame] Using sprites versus simple... Farai Aschwanden
