def blitOn(self,display): player_img=pygame.transform.flip(self.img,self.flip,False) if self.stun_counter>0: opacity=((int(self.stun_counter%2)+1)*50)+self.stun_counter*2#15 blitAlpha(display,player_img,self.pos,opacity) else: display.blit( player_img, self.pos )
def blitOn(self, display): player_img = pygame.transform.flip(self.img, self.flip, False) if self.stun_counter > 0: opacity = ((int(self.stun_counter % 2) + 1) * 50) + self.stun_counter * 2 #15 blitAlpha(display, player_img, self.pos, opacity) else: display.blit(player_img, self.pos)
def blitOn(self, display): global grass_img,track_img,end_img#,tutorial_img global dinB_22 if not self.pause_game: if self.bool[0]==True:#K_RIGHT self.player.pos[0]+=self.player.vel//2 if self.bool[1]==True:#K_LEFT self.player.pos[0]-=self.player.vel//2 self.player.playerMotion() #Penalidade por ficar na faixa esquerda if self.player.pos[0]<300 and self.player.pos[0]>150 and self.score>0: self.left_ride_score+=0.03#self.score-=1.03 self.grass_pos+=self.player.vel self.dy_faixas-=self.player.vel*2 if self.grass_pos>=grass_img.get_height(): self.grass_pos=0 display.blit(grass_img,(((grass_img.get_height()+self.grass_pos)//4),self.grass_pos )) display.blit(grass_img,((self.grass_pos//4),self.grass_pos-grass_img.get_height())) display.blit(grass_img,(-100+(-(grass_img.get_height()+self.grass_pos)//4)-grass_img.get_width()*0.25,self.grass_pos )) display.blit(grass_img,(-100+(-self.grass_pos//4)-grass_img.get_width()*0.25,self.grass_pos-grass_img.get_height())) display.blit(track_img,(0,0)) #calculo com o viewport para represetar a perspectiva na tela limite=450 if self.dy_faixas<=-limite:self.dy_faixas+=limite+50 for i in range(1,16,2): y=getViewport45(400,(255*i)+self.dy_faixas+100,150) h=getViewport45(400,(255*(i+1))+self.dy_faixas+100,150) display.fill((212,7,21),pygame.Rect(310,360-y,40,h-y)) for trlt in self.traffic_light: if trlt.odometer<=self.player.odometer and self.player.odometer-trlt.odometer<=1377: global traffic_img, car_img, light_img self.traffic_score+=trlt.blitOn(display,self.player,self.bikers,traffic_img, car_img, light_img, self.pause_game) if self.sign_pos<=self.player.odometer: if self.player.odometer-self.sign_pos-self.sign_img[self.sign_pointer].get_height()<=1377: sign_pos_vp=360-getViewport45(400,(255*11)-(self.player.odometer-self.sign_pos)*2,150) display.blit(self.sign_img[self.sign_pointer],(120-sign_pos_vp/4,sign_pos_vp-self.sign_img[self.sign_pointer].get_height())) #display.blit(self.sign_img,(420+(self.player.odometer-self.sign_pos)/4,self.player.odometer-self.sign_pos-self.sign_img.get_height())) else: self.sign_pos+=1377 self.sign_pointer+=1 if len(self.sign_img)<=self.sign_pointer: self.sign_pointer=0 if self.end_pos-360-100<=self.player.odometer: for i in range(7): display.blit(end_img,(end_img.get_width()*i,self.player.odometer-self.end_pos+360)) #display.fill((0,0,0),pygame.Rect(0,self.player.odometer-self.end_pos+360, 640, 50)) #verifica os eventos de colisao com cada ciclista transeunte self.biker_counter=0# biker_counter=0 for bike in self.bikers: if bike.odometer<=self.player.odometer: if bike.pos[1]<=360:#+bike.img.get_height(): try: fliped_bike=pygame.transform.flip(bike.img,bike.flip,False) scale=(bike.pos[1]+(bike.img.get_height())*1.5)/360 #if bike.pos[1]<self.player.pos[1] else 1 new_size=(int(bike.img.get_width()*scale),int(bike.img.get_height()*scale)) scaled_bike=pygame.transform.smoothscale( fliped_bike ,new_size) if bike.pos[0]<300: new_pos=( bike.pos[0]+ bike.img.get_width()-new_size[0] , bike.pos[1]+((bike.img.get_height()-new_size[1])//2)) else: new_pos=( bike.pos[0], bike.pos[1]+((bike.img.get_height()-new_size[1])//2)) bike_hit_box_x=pygame.Rect(bike.pos[0],new_pos[1]+int(new_size[1]*0.2),bike.img.get_width(),int(new_size[1]*0.6))#horizontal bike_hit_box_y=pygame.Rect(int(new_pos[0]+new_size[0]*0.2),new_pos[1],int(bike.img.get_width()*0.6),new_size[1])#vertical player_hit_box=self.player.img.get_rect(x=self.player.pos[0],y=self.player.pos[1]) except: print 'erro antes do hitbox' #colisao horizontal if bike_hit_box_x.colliderect(player_hit_box): if self.player.pos[0]>new_pos[0]+(new_size[0]//2):self.player.receiveDamage(1,(+20,0)) else:self.player.receiveDamage(1,(-20,0)) #self.collision_counter+=1 #colisao vertical if bike_hit_box_y.colliderect(player_hit_box) and new_pos[1]<360: if self.player.stun_counter==0: if bike.vel>0: bike.vel=-100*self.player.accel*bike.accel self.player.receiveDamage(1,(0,-20)) self.player.vel=0 self.collision_counter+=1 #if self.score > 0: self.score-=175 #if self.score<0: self.score=0 if not self.pause_game and not bike.stop: bike.passerbyMotion(self.player.vel) display.blit(scaled_bike ,new_pos ) #pontuacao para ultrapassagem else: self.biker_counter+=1# biker_counter+=1 ''' if bike.pos[1]<460: Contratar pessoas carecas, assim não teria mais cabelos na comida. self.score+=100 bike.pos[1]=460 ''' #condicao vitoria e derrota if self.end_pos<=self.player.odometer:#if biker_counter==len(self.bikers): self.win=True if self.player.damage>=self.player.maxlife: self.lose=True self.player.blitOn(display) #informacoes na tela if not self.pause_game: #painel fundo self.blitPanel(display,(0,0)) #timer self.blitTimer(display,(15,50+odometer_img.get_height())) #speedometer #self.blitSpeed(display,((odometer_img.get_width()//2),40)) #track self.blitTrack(display,(15,25)) #score self.blitExp(display,(600,110))#display.blit(dinB_22.render('Pontos: '+str(int(self.score)),True, (0,0,0)), (30,144)) #estrela self.blitLife(display,(15,105)) #coracao level self.blitLevel(display,(600,90-level_img[self.i].get_height())) #coracao #self.blitHeart(display,(490,50)) #popup self.pop_up.blitOn(display) # def blitPause(self,display): #self.pause_button.blitOn(display) esmaecer=pygame.Surface((640,360)) esmaecer.fill(self.color) blitAlpha(display,esmaecer,(0,0),self.alpha)