Example #1
0
	def preEvents(self):
		debugLog('\t**'+str(type(self).__name__)+' with '+str(len(self.itens))+' itens')
		debugLogSuper('\t\t\tpreEvents')
		for item in self.itens:
			debugLogUltra('\t\t\t\tpreEvents'+str(type(item)))
			try: item.preEvents()
			except: pass
Example #2
0
	def endGame(self,win_lose,scr,color):
		if win_lose and not self.end_game:
			try:self.score[1]=(float(self.player.maxlife-self.player.damage)/self.player.maxlife)*4
			except Exception,e:debugLog(e)
			
			self.score[2]=self.health
			for trlt in self.traffic_light:
				self.score[4]+=trlt.player_infraction
			self.score[5]=self.player.collision_counter
			self.score[-1]=self.calculateScore(*self.score[1:-1])
			self.alpha=True
			self.color=color
			scr.turnOn()
			try:
				scr.itens[0].img=chic_16.render(str(self.score[1]),True,(51,51,51)).convert_alpha()
				scr.itens[1].img=chic_16.render(str(self.score[2]),True,(51,51,51)).convert_alpha()
				scr.itens[2].img=chic_16.render(str(self.score[4]),True,(51,51,51)).convert_alpha()
				scr.itens[3].img=chic_16.render(str(self.score[5]+self.score[7]+self.score[8]),True,(51,51,51)).convert_alpha()
				scr.itens[4].img=chic_16.render(str(self.score[3])+"s",True,(255,255,255)).convert_alpha()
				scr.itens[5].img=chic_22.render(str(self.score[11]),True,(51,51,51)).convert_alpha()
			except Exception,e:debugLog(e)
			self.score_screen.turnOn(True)
			self.pause_tgscr.lockOnOff(True)
			self.pause_button.turnOn(False)
			for mvbtt in self.move_button: mvbtt.turnOn(False)
			self.end_game=True
			self.pause_game=True
			try:self.printScore()
			except Exception,e:debugLog('sc'+str(e))
			try:self.setNewHighScore()
			except Exception,e:debugLog('hsc'+str(e))
			self.score_screen.itens[0].img=self.blitHighScore().convert_alpha()
Example #3
0
	def __init__(self,name,end_pos,number_of_checkpoints,player,clear_score,biker_list,traffic_list,obstacle_list,dog_list,sewers_list,hole_list,tumbleweed_list,solar_filter,sign_img,scr_lose,scr_win,scr_score,retry_button,home_button,stages_button,pause_button,resume_button,pause_scr,move_button,gps_item,wheater="random",time="random"):
		global pop_bar_score,level_img
		self.name=name
		self.left_side_name=pygame.transform.rotate(chic_72.render(name,True,(255,255,255)),90)
		#ciclista jogador 
		self.player=player
		self.end_pos=end_pos
		self.clear_score=clear_score
		#lista de ciclistas transeuntes
		self.number_of_checkpoints=number_of_checkpoints
		self.makeOdometer(number_of_checkpoints)
		self.checkpoints_distance=(end_pos/30)/(number_of_checkpoints+1)
		debugLog( self.checkpoints_distance,name)
		#self.odometer_img=odometer
		self.bikers=biker_list
		self.sewers=[[sewer[0]*30,sewer[1],False] for sewer in sewers_list]
		self.holes=[[hole[0]*30,hole[1],False] for hole in hole_list]
		#self.sewers+=[[cover[0]*30,cover[1]+10,False] for cover in hole_list]
		self.obstacles=[
			[obs*30 if type(obs).__name__!="list" else obs[0]*30,
			None,
			0 if type(obs).__name__!="list" else obs[1],
			False,
			type(obs).__name__=="list"] for obs in obstacle_list]
		self.tumbleweed= [[tw[0]*30,0,tw[1],False] for tw in tumbleweed_list]
		self.solar_filter=[[sf[0]*30,sf[1],True] for sf in solar_filter]
		self.dogs=[[dog*30,False] for dog in dog_list]
		self.sign_img=sign_img
		self.home_button=home_button
		self.retry_button=retry_button
		self.pause_button=pause_button
		self.stages_button=stages_button
		self.resume_button=resume_button
		self.move_button=move_button
		self.loser_screen=scr_lose
		self.winner_screen=scr_win
		self.score_screen=scr_score
		self.gps=gps_item
		self.traffic_light=traffic_list
		self.pop_up=popUp((320-(pop_bar_score.get_width()//2),-pop_bar_score.get_height()),(320-(pop_bar_score.get_width()//2),0),(0,1),pop_bar_score,(40,15))
		self.pause_tgscr=pause_scr
		self.wheater=wheater
		self.time=time
		self.found=False
		self.setZero()
		self.fade=pygame.Surface((640,360))
		self.fade.set_alpha(155)
		self.color=(0,0,0)
		self.high_score=[]#NOME,1helmets,2hearts,3time,4red_trlt,5bikers_hit,6bikers_leftbehind,7things_hit,8dog,9check_points,10wrong_side,score calculado
		self.tutorial=False
		self.blit_panel=True
		self.blit_timer=True
		self.blit_track=True
		self.blit_score=True
		self.blit_life=True
		self.blit_level=True
		self.blit_player=True
		self.heart_pos=(5-14,188-12)
		self.unlock=None
Example #4
0
	def clearSave(self):
		try:
			save_file=open(dir_data+"avatar_data.lab",'wb')
			save_file.truncate()
			save_file.close()
		except Exception,e:debugLog(e)
		for avatar in self.avatar:
			avatar[0]=0
		self.skin_color=(191,143,88)
		self.updateAvatar()
		debugLog('cleared avatar')
Example #5
0
def rectsDistance(rect_1,rect_2):
	debugLog((rect_1.x,rect_1.y))
	#listas de posições possíveis dos limites dos retangulos
	positions_1 = [(rect_1.x,rect_1.y),rect_1.topleft,rect_1.topright,rect_1.bottomleft,rect_1.bottomright,rect_1.midleft,rect_1.midright,rect_1.center]
	positions_2 = [(rect_2.x,rect_2.y),rect_2.topleft,rect_2.topright,rect_2.bottomleft,rect_2.bottomright,rect_2.midleft,rect_2.midright,rect_2.center]
	#armazenará as distancias entre as permutações das posições do retangulo
	distances=[]
	for pos_1 in positions_1:#para cara posição do rect_1
		for pos_2 in positions_2:#para cada posição do rect_2
			distances.append(pointsDistance(pos_1,pos_2))#armazena a distancia entre os dois
	return min(distances)
Example #6
0
	def loadScore(self):
		try:
			score_file=open(dir_data+"score_data_"+self.name.replace(' ','_')+".lab","rb")
			self.high_score=cPickle.load(score_file)
			if self.unlock!=None and self.high_score[0][-1]>self.clear_score:
				self.unlock.lock=cPickle.load(score_file)
				self.unlock.hide=cPickle.load(score_file)
			score_file.close()
		except Exception,e:
			self.saveScore()
			debugLog(e)
Example #7
0
	def screenCall(self):
		the_return=None
		if self.press_function!=None and self.pressed:
			try:self.press_function(*self.args_2)
			except Exception, e: debugLog(e)
		if self.actived:
			if self.function!=None:
				try:self.function(*self.args_1)
				except Exception, e: debugLog(e)
			the_return=self.link
			self.actived=False
		return the_return if not self.lock else None
Example #8
0
	def setZero(self):
		self.crosswalk_rect=pygame.Rect(0,0,0,0)
		self.street_rect=pygame.Rect(0,0,0,0)
		self.turned_on=random.randrange(100)<40 #False se o farol esta vermelho
		debugLog(self.turned_on)
		self.timer_start=True
		self.running=False
		self.street=False
		self.crosswalk=False
		self.boolean=False
		self.player_infraction=False
		self.next_time=0
		self.car_list=[[],[]]#[0] para direita,[1] para esquerda
Example #9
0
def screenLoop(main_screen):
	main_screen.startMusic()
	while main_screen.running:
		debugLog('\tcomeco tela')
		'''
		debugLog('\t'+str(len(main_screen.previous_screen_list))+' telas anteriores')
		for i,p in enumerate(main_screen.previous_screen_list):
			debugLog('\t\t'+str(i)+' : '+str(p.title) )
		'''
		main_screen.run()
		if main_screen.stored_screen:
			debugLog('\t||comeco troca tela')
			next_screen=main_screen.stored_screen
			next_screen.full_screen=main_screen.full_screen
			if next_screen.stopmusic:mixer.music.stop()
			main_screen.play=False
			if main_screen.music!=None or next_screen.stopmusic:
				if next_screen.music and main_screen.music!=next_screen.music: next_screen.play=True
			next_screen.resize_scale=(main_screen.resize_scale[0],main_screen.resize_scale[1])
			next_screen.final_display=main_screen.final_display
			main_screen.stored_screen=None
			
			if not next_screen.previous_screen:
				next_screen.previous_screen=main_screen
			
			'''
			if main_screen.previous_screen==True:
				next_screen.previous_screen_list=main_screen.previous_screen_list[:-1]
				main_screen.previous_screen=False
			else:
				next_screen.previous_screen_list=main_screen.previous_screen_list+[main_screen]
			'''
			main_screen=next_screen
			debugLog('\t||fim troca tela')
		debugLog('\tfim tela')
Example #10
0
	def collideCar(self,player):
		try:
			if self.scaled_rect.colliderect(player.hit_box): 
				player.damage+=1
				player.pos[0]+=self.vel
				player.vel=0
		except Exception,e:debugLog(e)
Example #11
0
	def __init__(self,centro,raio_menor,raio_maior,image,pos,screens,sound=None):
		debugLog(image[0].get_rect().center)
		self.centro=[centro[i]+pos[i] for i in xrange(2)]
		self.raio_menor=raio_menor
		self.raio_maior=raio_maior
		self.rect=[
			pygame.Rect(self.centro[0]-raio_maior,self.centro[1]-raio_maior,raio_maior,raio_maior),
			pygame.Rect(self.centro[0],self.centro[1]-raio_maior,raio_maior,raio_maior),
			pygame.Rect(self.centro[0]-raio_maior,self.centro[1],raio_maior,raio_maior),
			pygame.Rect(self.centro[0],self.centro[1],raio_maior,raio_maior)]
		self.img=image
		self.state=0
		self.active=0
		self.pos=pos
		self.scr=screens
		self.detect=False
		self.sound=sound
Example #12
0
	def blitOn(self,display):
		try:
			for item in self.display_list:
				if item[0]==True:
					display.fill(item[1],None if item[2]==self.empty_rect else item[2],item[3])
				else:
					display.blit(item[1],(item[2].x,item[2].y),item[3],item[4])
		except Exception,e:debugLog(e)
Example #13
0
	def posEvents(self):
		try:
			save_file=open(dir_data+"avatar_data.lab",'wb')
			for avatar in self.avatar:
				cPickle.dump(avatar[0],save_file)
			cPickle.dump(self.skin_color,save_file)
			save_file.close()
		except Exception,e:debugLog(e)
Example #14
0
	def preEvents(self):
		pygame.time.set_timer(USEREVENT,800)
		pygame.time.set_timer(USEREVENT+1,300)
		pygame.time.set_timer(USEREVENT+3,200)
		global auto_gps_ingame,dog_img
		for dog in dog_img:
			dog.preEvents()
		try:self.loadScore()
		except Exception,e:debugLog(e)
		self.printHighScore()
		self.culture_pointer=random.randrange(len(frases))
		if not self.pause_game:
			self.start_time+=pygame.time.get_ticks()
			if android and auto_gps_ingame:
				location=self.gps.getLocation()
				if location[0]!=0.0 or location[1]!=0.0:
					try:self.gps.update()
					except Exception,e:debugLog('gameTools.gameObject.gps.update:\n\t'+str(e))
					try:
						self.found=self.gps.finder.checkUrl(location)
						self.culture_pointer=0
					except Exception,e:debugLog('gameTools.gameObject.gps.finder.checkURL:\n\t'+str(e))
		for home in self.home_button: home.function = self.setAllZero
		for retry in self.retry_button: retry.function = self.setAllZero
		self.stages_button.function=self.setAllZero
		if pygame.time.get_ticks()-self.start_time<0:
			self.start_time=pygame.time.get_ticks()
			debugLog('start_timer<0')
		else:
			debugLog('start_timer>=0')
Example #15
0
	def preEvents(self):
		try:
			save_file=open(dir_data+"avatar_data.lab",'rb')
			for avatar in self.avatar:
				avatar[0]=cPickle.load(save_file)
			self.skin_color=cPickle.load(save_file)
			save_file.close()
		except Exception,e:debugLog(e)
		self.updateAvatar()
Example #16
0
	def blitOn(self,display):
		try:
			state=len(self.buttons)
			for b in xrange(len(self.buttons)):
				if self.buttons[b].state==1:
					state=b
					break
			display.blit(self.imgs[state],self.pos)
		except Exception,e:debugLog(e)
Example #17
0
	def saveScore(self):
		score_file=open(dir_data+"score_data_"+self.name.replace(' ','_')+".lab","wb")
		try:
			cPickle.dump(self.high_score,score_file)
			if self.unlock!=None:
				cPickle.dump(self.unlock.lock,score_file)
				cPickle.dump(self.unlock.hide,score_file)
		except Exception,e:debugLog(e)
		score_file.close()
Example #18
0
	def blitText(self,display):
		self.text[0]=self.edit_font.render(self.edit_text,self.edit_antialias,self.edit_color)
		simpleButton.blitText(self,display)
		if self.edit_actived: 
			try:
				size=self.edit_font.size(self.edit_text[:self.edit_pos])
				rect=pygame.Rect(size[0]+self.text[1][0],self.text[1][1]-1,1,size[1]+2)
				display.fill(self.pointer_color,rect)
			except Exception,e:debugLog(e)
Example #19
0
	def clearScore(self):
		try:
			score_file=open(dir_data+"score_data_"+self.name.replace(' ','_')+".lab","wb")
			score_file.truncate()
			score_file.close()
		except Exception,e:debugLog(e)
		self.high_score=[]
		if self.unlock!=None:
			self.unlock.setLock()
			self.unlock.setHide()
Example #20
0
	def blitOnOld(self,display):#_Old0
		global font
		if font:
			pos=[350,25]
			for av in range(4,-1,-1):
				try:
					text=font.render(self.avatar[av][1][self.avatar[av][0]][1],True,(0,0,0))
					display.blit(text,pos)
					display.blit(self.icons[4-av],(0,pos[1]-15))
					pos[1]+=72
				except Exception,e:debugLog(e)
Example #21
0
	def blitOn(self,display):
		global font
		if font:
			pos_center=(
						((250+50)/2)#metade da (distancia entre as setas, mais a largura da segunda)
						+220#mais a posição em x da primeira
						,330)
			av=self.focus_avatar
			if av<len(self.avatar) and av>=0:
				text=font.render(self.avatar[av][1][self.avatar[av][0]][1],True,(255,255,255))
				try:display.blit(text,text.get_rect(center=pos_center).topleft )
				except Exception,e:debugLog(e)
Example #22
0
	def eventControler(self, event,resize,move):
		if self.pause_game==False and self.end_game==False:
			self.runEventControler(event, resize,move)
		else:
			self.bool=[False,False,False]
			try:
				for button in self.move_button:
					button.state=0
					button.pressed=False
					button.actived=False
					self.player.playerBrake(0.5)
			except Exception,e:debugLog(e)
Example #23
0
	def screenCall(self):
		retorno=None
		if self.active!=0:
			if self.sound:
				try:playSound(self.sound[0],self.sound[1])
				except Exception,e:debugLog(e)
			retorno=self.scr[self.active-1]
			if type(retorno)==str:
				webbrowser.open(retorno)
				retorno=None
			self.active=0
			self.state=0
		return retorno
Example #24
0
def screenLoop(main_screen):
	main_screen.startMusic()
	while main_screen.running:
		debugLog('\tcomeco tela')
		main_screen.run()#ciclo da tela atual
		if main_screen.stored_screen:
			debugLog('\t||comeco troca tela')
			next_screen=main_screen.stored_screen#pega a tela armazenada
			next_screen.full_screen=main_screen.full_screen#a tela armazenada pega a informação de tela cheia da tela anterior
			if next_screen.stopmusic:mixer.music.stop()#se a tela armazenada tiver a instrução para parar a música ela pára aqui.
			#condições de continuidade de música#
			main_screen.play=False
			if main_screen.music!=None or next_screen.stopmusic:
				if next_screen.music and main_screen.music!=next_screen.music: next_screen.play=True
			##
			next_screen.resize_scale=(main_screen.resize_scale[0],main_screen.resize_scale[1])#a tela armazenada pega a informação de tamanho atual da tela anterior
			next_screen.final_display=main_screen.final_display#pega a janela da tela anterior
			main_screen.stored_screen=None#limpa a tela armazenada da tela anterior
			if not next_screen.previous_screen:
				next_screen.previous_screen=main_screen#armazena a tela anterior como tela anterior da nova tela se ela não tiver uma tela anterior
			main_screen=next_screen#a tela anterior é substituida pela nova
			debugLog('\t||fim troca tela')
		debugLog('\tfim tela')
Example #25
0
	def setNewHighScore(self):
		if self.win:
			lenght=len(self.high_score)
			if lenght>0:
				for s in xrange(lenght):
					if self.score[-1]>self.high_score[s][-1]:
						self.high_score=self.high_score[:s]+[self.score]+self.high_score[s:]
						self.rank=s
						break
				if lenght<5 and lenght==len(self.high_score):
					self.high_score.append(self.score)
					self.rank=len(self.high_score)-1
			else:
				self.high_score.append(self.score)
				self.rank=0
			try:
				if self.unlock!=None and self.high_score[0][-1]>self.clear_score: 
					self.unlock.setHide(False)
					self.unlock.setLock(False)
			except Exception,e:debugLog(e)
		try:self.high_score=self.high_score[:5]
		except:pass
		self.printHighScore()
Example #26
0
 def updateLevel(self, a):
     debugLog("\t\tlevel update:" + str(self.level))
     self.level = a
Example #27
0
	def setZero(self):
		global obs_img,level_img
		for obs in self.obstacles:
			obs[1]=random.choice(obs_img)
			if obs[4]==False:
				obs[2]=random.randint(250,395)
			obs[3]=False
		for sewer in self.sewers:
			sewer[2]=False
		for hole in self.holes:
			hole[2]=False
		for dog in self.dogs:
			dog[1]=False
		for tw in self.tumbleweed:
			tw[1]=0
			tw[3]=False
		for sf in self.solar_filter:
			sf[2]=True
		self.glow=0
		self.rank=6
		self.end_game=False
		#pontuacao incial do jogador
		self.score=["PLAYER",0,0,0,0,0,0,0,0,0,0,0]
		self.health =0
		self.recover=[False,0]
		self.heart_up=[False,0]
		self.left_ride_score=0
		self.collision_counter=0
		self.traffic_score=0
		self.start_time=0
		self.lose=False #quando colidir
		self.win=False #quando o array de ciclistas terminar
		self.dy_faixas=0
		self.grass_pos=0
		self.sign_pos=100
		self.sign_pointer=0
		if self.found:self.culture_pointer=0
		else:self.culture_pointer=random.randrange(len(frases))
		self.sign_build=False
		
		self.popup_bool=[True,True,True]
		#variavel que define o movimento de pedal
		self.bool=[False,False,False]#K_RIGHT,K_LEFT
		self.alpha=False
		self.pause_tgscr.lockOnOff(False)
		self.pause_tgscr.turned_on=False
		self.pause_game=False
		self.start_time+=pygame.time.get_ticks()
		self.cloud_pos=random.randrange(640)
		self.cloud_accel=random.randrange(1,6)*0.1
		debugLog(self.cloud_accel)
		self.plane=[False,[-plane_img.get_width(),random.randint(0,24)-(plane_img.get_height()//2)],random.randrange(100)<50]
		if self.plane[2]:debugLog("plane will be created")
		self.bird=[random.randrange(100)<50,[-bird_img.get_width(),random.randint(0,35)-(bird_img.get_height()//2)]]
		pygame.time.set_timer(USEREVENT+5,0)
		if not self.bird[0]:
			time=random.randint(5,25)*1000
			pygame.time.set_timer(USEREVENT+5,time)
			debugLog("bird will be created in "+str(time))
		else:
			debugLog("bird created")
		self.fog=False#random.randrange(100)<40
		if self.time=="random":
			self.night=random.randrange(100)<40
		else:
			self.night=self.time
		if self.wheater=="random":
			self.rain=random.randrange(4)
		else:
			self.rain=self.wheater
		pygame.time.set_timer(USEREVENT+6,15*1000)
		self.user_event_6=0
		self.bg_pos=(-random.randrange(900-640),0)
		self.blit_player=True
		self.drama=0
Example #28
0
	def run(self):
		global mute_music
		if pygame.display.get_init():
			self.final_display=pygame.display.get_surface()
		elif not self.final_display: 
			new_size=(int(self.size[0]*self.resize_scale[0]),int(self.size[1]*self.resize_scale[1]) )
			self.final_display=pygame.display.set_mode(new_size,RESIZABLE if not self.full_screen else FULLSCREEN)
			debugLog('\t>>pygame.display.set_mode()')
		pre_display=pygame.Surface(self.size)
		fps_clock=pygame.time.Clock()
		pygame.display.set_caption(self.title)
		self.preEvents()
		'''###
		if android:
			cgps_hardware = autoclass("com.lab.labnavia.Hardware")
			gps_hardware = cgps_hardware()
			locationManager = gps_hardware.startLocationManager()
			gps_hardware.startLocationUpdater(locationManager,10000,1)
		'''###
		if self.play: self.startMusic()
		while self.running and not self.stored_screen:
			if android :
				if self.music: mixer.periodic()
				if android.check_pause ():
					debugLog("pause")
					mixer.music.stop()
					debugLog("\tparou musica")
					android.wait_for_resume ()
					self.startMusic()
					debugLog("\tiniciou musica")
					debugLog("unpause")
			debugLogSuper('\t\tInicio passagem')
			if self.show_fps: pygame.display.set_caption(self.title+" - "+str(int(fps_clock.get_fps()))+":"+str(self.fps))
			for event in pygame.event.get():
				if event.type==KEYUP:
					if event.key==K_q:
						self.function(*self.args)
				if event.type==QUIT and not android:
					self.closeGame()
				if event.type==VIDEORESIZE:
					self.setNewSizeScale((event.w,event.h))
					new_size=(int(self.size[0]*self.resize_scale[0]),int(self.size[1]*self.resize_scale[1]))
					self.final_display = pygame.display.set_mode(new_size,RESIZABLE)
			
				self.eventControler(event,self.resize_scale)

			self.stored_screen=self.screenCall()
			
			self.blitOn(pre_display)
			'''
			self.blitOn(self.render_list)
			self.render_list.reorderList()
			self.render_list.blitOn(pre_display)
			'''
			debugLogScreen(pre_display,str(int(fps_clock.get_fps()))+":"+str(self.fps),(0,0),(255,55,55))
			'''
			if android:
				debugLogScreen(pre_display,str(gps_hardware.location.latitude),(0,50),(0,0,0))
				debugLogScreen(pre_display,str(gps_hardware.location.longitude),(0,100),(0,0,0))
				
				#location=gps_hardware.getLocation(locationManager)
				#debugLogScreen(pre_display,str(location.getLatitude()),(120,30),(0,0,255))
				#debugLogScreen(pre_display,str(location.getLongitude()),(120,30),(0,0,255))
			'''
			pygame.transform.scale(pre_display if self.rotate==0 else pygame.transform.rotate(pre_display.convert(),self.rotate),(int(self.size[0]*self.resize_scale[0]),int(self.size[1]*self.resize_scale[1])),self.final_display)
			self.screenManipulation(self)
			'''self.render_list.setZero()'''

			pygame.display.flip()
			fps_clock.tick(self.fps)
			debugLogSuper('\t\tFim passagem')
		self.posEvents()
		if self.loading_image:
			self.blitBg(pre_display)
			try:pre_display.blit(self.loading_image,self.loading_image.get_rect(center=(self.size[0]//2,self.size[1]//2)).topleft)
			except Exception,e:print e
			pygame.transform.scale(pre_display if self.rotate==0 else pygame.transform.rotate(pre_display.convert(),self.rotate),(int(self.size[0]*self.resize_scale[0]),int(self.size[1]*self.resize_scale[1])),self.final_display)
			pygame.display.flip()
Example #29
0
	def runEventControler(self, event, resize,move):
		if event.type==KEYUP:
			if event.key==K_RIGHT: 
				self.bool[0]=False
				self.player.playerAccel(+1)#aceleracao esquerda
			if event.key==K_LEFT: 
				self.bool[1]=False
				self.player.playerAccel(-1)#aceleracao direita
			if event.key==K_DOWN: 
				self.player.desaccel=0.5
			if event.key==K_d:
				self.player.playerAccel(+1)#aceleracao do player para a esquerda --- guidao
			elif event.key==K_a:
				self.player.playerAccel(-1)#aceleracao do player para a direita ---- guidao

		if event.type==KEYDOWN:
			if event.key==K_SPACE: self.pause_tgscr.turnOn()
			if event.key==K_RIGHT: self.bool[0]=True
			if event.key==K_LEFT: self.bool[1]=True
			if event.key==K_DOWN: self.player.desaccel=4 ################################################### <<<<<<----------- mude o valor para mudar o quanto desacelera
		if event.type==USEREVENT+7:
			self.recover[0]=False
			self.heart_up[0]=False
			pygame.time.set_timer(USEREVENT+7,3000)
		if event.type==USEREVENT+6:
			if self.user_event_6==0:
				if self.plane[2]:
					self.plane[0]=True
					debugLog('plane created')
			if self.rain>0:
				if self.user_event_6%1==0:
					rain=self.rain
					while rain==self.rain:
						self.rain=random.randint(1,3)
			self.user_event_6+=1
		try:
			if event.type==USEREVENT+5:
				self.bird=[True,[-bird_img.get_width(),random.randint(0,35)-(bird_img.get_height()//2)]]
				debugLog("bird created")
				pygame.time.set_timer(USEREVENT+5,0)
		except Exception,e:debugLog(e)
		if event.type==USEREVENT+1:
			if self.drama==3:
				self.player.damage=self.player.maxlife
				self.score[7]+=1
				self.drama=0
			if self.drama==6:
				self.player.pos[1]-=40
				self.drama=0
			if self.drama>0:self.drama+=1
			if self.glow>0:
				self.glow-=1
			for bike in self.bikers:
				if bike.odometer<=self.player.odometer and bike.pos[1]<=1377+bike.img.get_height():
					if not bike.stop: bike.flip=not bike.flip
		for trlt in self.traffic_light:
			if trlt.running:
				if trlt.next_time<pygame.time.get_ticks()-self.start_time: 
					trlt.eventControler(event,resize,move)
					trlt.next_time=pygame.time.get_ticks()-self.start_time+trlt.time
		for dog in dog_img:
			dog.eventControler(event, resize,move)
		tumbleweed_img.eventControler(event,resize,move)
		self.player.eventControler(event,resize)
		self.pop_up.eventControler(event, resize,move)
		if event.type==MOUSEBUTTONUP:
			mouse_pos=(event.pos[0]/resize[0],event.pos[1]/resize[1])
			global level_img
			rect=level_img[0].get_rect(topleft=self.heart_pos)
			rect.inflate_ip(-29,-25)
			if rect.collidepoint(mouse_pos):
				try:self.useHeart()
				except Exception,e:debugLog(e)
			elif len(self.move_button)>0:
				#hardcode{
				#desfrear fora do freio
				if self.move_button[2].pressed_out:
					if self.player.desaccel!=0.5: 
						self.move_button[2].callActivation()
				'''
				#pedalar fora do pedal/guidão
				for x in xrange(2):
					if self.move_button[x].pressed_out and not self.move_button[1 if x==0 else 0].pressed:
						self.move_button[x].callActivation()
				'''
				if not self.move_button[0].rect.collidepoint(mouse_pos) and not self.move_button[1].rect.collidepoint(mouse_pos) and not self.move_button[2].rect.collidepoint(mouse_pos):
					for x in xrange(3):
						self.move_button[x].callActivation(False)
				#'''
				#}hardcode
		if event.type==MOUSEMOTION:
			mouse_pos=(event.pos[0]/resize[0],event.pos[1]/resize[1])
			move_motion=self.move_button[0].actived or self.move_button[0].pressed or self.move_button[1].actived or self.move_button[1].pressed
			if self.move_button[2].rect.collidepoint(mouse_pos) and move_motion:
				for x in xrange(2):
					self.move_button[x].callActivation(False)
Example #30
0
	def blitSpeed(self,display,pos):
		value=self.player.vel/self.player.max_vel
		for x,rect in enumerate(self.speed_rects):
			color=((50*x)+55,255-(50*x),55)
			debugLog(color)
			display.fill(color,rect)
Example #31
0
	def blitOn(self, display):
		global grass_img,track_img,end_img,asphalt_img,traffic_img,car_img,light_img,panorama_dia, panorama_noite#,tutorial_img
		global culture_img,culture_rect
		global dinB_22
		global render_list
		render_list.setZero()
		if not self.pause_game:
			if self.rain==1:
				self.player.vel-=0.03
			if self.player.desaccel<1:
				if self.rain==2:
					self.player.pos[0]+=0.5
				if self.rain==3:
					self.player.pos[0]-=0.5
				if self.bool[0]==True:#K_RIGHT
					self.player.playerMove(+1)#self.player.pos[0]+=self.player.vel//2
				if self.bool[1]==True:#K_LEFT
					self.player.playerMove(-1)#self.player.pos[0]-=self.player.vel//2
			self.player.playerMotion()
			#Penalidade por ficar na faixa esquerda
			if self.player.pos[0]<280 and self.player.pos[0]>150:
				self.score[10]+=0.01
				#self.left_ride_score+=0.03#self.score-=1.03
				self.player.setScore(-0.04)
			self.grass_pos+=self.player.vel
			self.dy_faixas-=self.player.vel*2
		display.fill((80,180,120))
		try:
			panorama=panorama_noite if self.night else panorama_dia
			display.blit(panorama[0],self.bg_pos)
			display.blit(panorama[1],(500,0))
			if not self.night:
				if self.plane[0]:
					if self.plane[1][0]<640+plane_img.get_width():
						display.blit(plane_img,self.plane[1])
						self.plane[1][0]+=0.2
				if self.bird[0]:
					if self.bird[1][0]<640+bird_img.get_width():
						display.blit(bird_img,self.bird[1])
						self.bird[1][0]+=0.35
					else:
						time=random.randint(5,25)*1000
						pygame.time.set_timer(USEREVENT+5,time)
						self.bird[0]=False
						debugLog('bird will be created in '+str(time))
			display.blit(panorama[2],self.bg_pos)
			display.blit(panorama[3],(self.cloud_pos,0))
			display.blit(panorama[3],(self.cloud_pos-900,0))
			self.cloud_pos+=self.cloud_accel#0.5
			if self.cloud_pos>=900:
				debugLog("resetou nuvens")
				self.cloud_pos-=900
		except Exception,e:debugLog(e)
		display.blit(track_img,(0,100))


		#calculo com o viewport para represetar a perspectiva na tela
		qnt_faixas=9
		tamanho_faixa=1300/qnt_faixas# cinco vezes o tamanho da área de desenho
		if self.dy_faixas<=-tamanho_faixa*2:self.dy_faixas+=tamanho_faixa*2
		for i in range(1,qnt_faixas*2,2):
			y=getViewport45(400,(tamanho_faixa*i)+self.dy_faixas+100,150)
			h=getViewport45(400,(tamanho_faixa*(i+1))+self.dy_faixas+100,150)
			display.fill((234,100,96),pygame.Rect(310,460-y,40,h-y))#(212,7,21)

		crosswalk_rect=[]
		for trlt in self.traffic_light:
			if trlt.odometer<=self.player.odometer and self.player.odometer-trlt.odometer<=1377:
				try:trlt.blitOn(display,render_list,self.player,self.pause_game,self.found or not android,self.start_time)
				except Exception,e: debugLog('trlt.blitOn() error:\n\t'+str(e))
				crosswalk=trlt.getCrosswalkRect()
				if crosswalk:crosswalk_rect.append(crosswalk)
		display.blit(track_shadow,(0,100))
		try:
			if self.sign_pos<=self.player.odometer:
				if self.player.odometer-self.sign_pos-self.sign_img[self.sign_pointer].get_height()+100<=1377:
					sign_pos_vp=430-getViewport45(400,(255*11)-(self.player.odometer-self.sign_pos)-1377,150)
				
					sign_img=self.sign_img[self.sign_pointer]
					scale=abs(sign_pos_vp-150+(sign_img.get_height()*2) )/260  #if bike.pos[1]<self.player.pos[1] else 1
					new_size=(int(sign_img.get_width()*scale),int(sign_img.get_height()*scale))
					sign_img=pygame.transform.scale( sign_img ,new_size)
					sign_pos=(270-new_size[0]-(sign_pos_vp)/1.7,sign_pos_vp-new_size[1])
					render_list.blit(sign_img,sign_pos)
					if sign_img.get_rect(topleft=sign_pos).colliderect(self.player.hit_box):
						self.player.vel=0
						self.player.odometer-=10
					if not self.sign_build:
						surf=pygame.Surface(culture_rect.size)
						surf.fill((255,255,255))
						if self.found:
							#culture_name=textBox(unicode(self.gps.finder.getLocals()[self.culture_pointer]['name']),dinL_12,culture_rect.width,(0,0,0),2)
							#culture_dist=dinL_12.render(unicode(int(self.gps.finder.getDistances()[self.culture_pointer]))+" m",True,(0,0,0))
							culture_name=textBox(unicode(self.gps.finder.listObj[self.culture_pointer]["nome"]),sansB_12,culture_rect.width,(0,0,0),2)
							culture_dist=sansB_12.render(unicode(int(self.gps.finder.listObj[self.culture_pointer]["distancia"]))+" m",True,(0,0,0))
							surf.blit(culture_name,(0,-1))
							surf.blit(culture_dist,(0,culture_name.get_height()-2))
						else:
							text=textBox(frases[self.culture_pointer],sansB_12,culture_rect.width,(0,0,0),3)
							surf.blit(text,(0,0))
						culture_img.fill((255,255,255),culture_rect)
						culture_img.blit(surf.convert(),culture_rect.topleft)
						self.sign_build=True
						debugLog('builded')
					sign_img=pygame.transform.scale( culture_img ,new_size)
					sign_pos=(390+(sign_pos_vp/1.9),sign_pos_vp-sign_img.get_height())
					render_list.blit(sign_img,sign_pos)
					if sign_img.get_rect(topleft=sign_pos).colliderect(self.player.hit_box):
						self.player.vel=0
						self.player.odometer-=10
				else: 
					self.sign_pos+=1377
					self.sign_pointer+=1
					if len(self.sign_img)<=self.sign_pointer: self.sign_pointer=0
					self.sign_build=False
					self.culture_pointer+=1
					if self.found:
						if len(self.gps.finder.listObj)<=self.culture_pointer: self.culture_pointer=0
					else:
						if len(frases)<=self.culture_pointer: self.culture_pointer=0
		except Exception,e:
			debugLog(e)
			debugLog(new_size)