Wednesday, 15 April 2015

python - Collision detection issue (pygame), "collision detected" isn't printed once 2 surfaces hover over each other -



python - Collision detection issue (pygame), "collision detected" isn't printed once 2 surfaces hover over each other -

[memory issue problem deleted post]

hey guys i'm new pygame , have few little issues. python shell wont print collission detected 1 time jetfighter rect collides of tarantula before mouse button's clicked instead surfaces hover past each other, no error given. if statement on line 54 works intended i'm little bit stumped why statement on line 61 doesn't work expect to. if can shed lite onto problem, appreciate it.

code:

import pygame, sys, pygame.mixer pygame.locals import * import random pygame.init() bif="space.jpg" jf="spacefightersprite.png" enemy="tarantulaspacefighter.png" laser=pygame.mixer.sound("laserblast.wav") explosionsound=pygame.mixer.sound("explosion.wav") screen=pygame.display.set_mode((1000,800),0,32) caption=pygame.display.set_caption("jet fighter x") background=pygame.image.load(bif).convert() jetfighterx=pygame.image.load(jf) jetfighterx=pygame.transform.scale(jetfighterx, (400,400)) tarantula=pygame.image.load(enemy) tarantula=pygame.transform.scale(tarantula, (100,100)) laserblast=pygame.image.load("c:\python27\laser.png") explosion=pygame.image.load("c:\python27\explosion.png") explosion=pygame.transform.scale(explosion, (150,150)) ex,ey=450,0 movex,movey=0,0 clock=pygame.time.clock() speed=300 shoot_y=0 collision=false loop=true while true: pygame.mouse.set_visible(false) mx,my=pygame.mouse.get_pos() event in pygame.event.get(): if event.type==quit: pygame.quit() sys.exit() if event.type==keydown: if event.key==k_escape or event.key==k_q: sys.exit() if event.type==mousebuttondown: laserblast=pygame.image.load("c:\python27\laser.png") laser.play() shoot_y=my-200 shoot_x=mx-16 if loop==true: if shoot_y>0: screen.blit(laserblast, (shoot_x, shoot_y)) shoot_y-=10 laserblast_rect=laserblast.get_rect(center=(shoot_x, shoot_y)) tarantula_rect=tarantula.get_rect(center=(ex, ey)) jetfighterx_rect=jetfighterx.get_rect(center=(mx, my)) if laserblast_rect.colliderect(tarantula_rect): laserblast=pygame.transform.scale(laserblast,(0,0)) screen.blit(explosion, (ex, ey-50)) explosionsound.play() collision=true elif jetfighterx_rect.colliderect(tarantula_rect): print "collision detected" pygame.display.update() screen.blit(background, (0,0)) screen.blit(jetfighterx,(mx-200,my-200)) if collision==false: screen.blit(tarantula, (ex, ey)) milli=clock.tick() seconds=milli/1000. dmy=seconds*speed ey+=dmy if ey>800: collision=false ey=0 ex=random.randint(50,800) pygame.display.update()

you're asking 2 questions here, @ least. on stackoverflow, you'll want limit posts single question.

the sec question duplicate of this.

python pygame 2d sprite platform

No comments:

Post a Comment