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
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()
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
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')
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)
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)
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
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
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')
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)
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
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)
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)
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')
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()
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)
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()
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)
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()
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)
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)
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)
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
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')
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()
def updateLevel(self, a): debugLog("\t\tlevel update:" + str(self.level)) self.level = a
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
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()
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)
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)
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)