예제 #1
0
	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 )
예제 #2
0
 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)
예제 #3
0
	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)