def RenderText(surface, text, position, color, font=None, style=None, blend=True, shadow_color=(0,0,0)): if font is None: font = font.Font(None, size) ren = font.render(text, blend, color) xpos = position[0] ypos = position[1] if position[0] == 'centered': xpos = surface.get_width()/2 - ren.get_width()/2 if position[1] == 'centered': ypos = surface.get_height()/2 - ren.get_height()/2 if style == None or style == 'regular': ren = font.render(text, blend, color) surface.blit(ren, (xpos, ypos)) if style == 'shadow': ren = font.render(text, blend, shadow_color) surface.blit(ren, (xpos + 1, ypos + 1)) ren = font.render(text, blend, color) surface.blit(ren, (xpos, ypos))
def gameover(self,screen=None,player=None): if player.hp == 0: screen.fill((0,0,0)) text = "You have died" x=260-font.size(text)[0] screen.blit(font.render(text, False, (255,255,255)),(x,300)) del player
def golddisp(self, screen=None, player=None): text = "$%s" % player.gold fontsize = font.size(text) result = pygame.Surface((fontsize[0]+4, fontsize[1]+4), pygame.SRCALPHA) result.fill((90,90,90,150)) result.blit(font.render(self.textfont,text,(255,194,0,255)), (2,2)) screen.blit(result,(12,32))
def sign(self,screen=None,cam=None,gameinfo=None,player=None): for ent in gameinfo.entlist.entlist: if ent.x == player.x/32 and ent.y == player.y/32 and ent.text != '': fontsize = font.size(ent.text) result = pygame.Surface((fontsize[0]+4, fontsize[1]+4), pygame.SRCALPHA) result.fill((90,90,90,200)) result.blit(font.render(self.textfont,ent.text,(140,140,180,255)), (2,2)) w = 150-fontsize[0]/2 screen.blit(result,(w,250))
def on_button(self, button): self.dirty = True if button == globals.left or button == globals.right: self.cursor = 2 if self.cursor == 1 else 1 elif button in globals.cancel: self.layer.destroy() self.finished = True elif button in globals.accept: if self.cursor == 2: self.layer.destroy() self.finished = True else: if not self.saved: sfx.get_sound(0x29a7).play() globals.chara.save('') self.text_name = font.render(globals.chara.charname, color=pygame.Color( 255, 255, 0, 255)) self.text_lv = font.render( 'LV {}'.format(str(globals.chara.lv)), color=pygame.Color(255, 255, 0, 255)) self.text_time = font.render(globals.chara.get_play_time(), color=pygame.Color( 255, 255, 0, 255)) self.text_location = font.render( globals.last_save_room_name, color=pygame.Color(255, 255, 0, 255)) self.text_save = font.render('File saved.', color=pygame.Color( 255, 255, 0, 255)) self.text_return = pygame.Surface((0, 0)) self.heart.image = pygame.Surface((0, 0)), 0 self.saved = True else: self.layer.destroy() self.finished = True else: self.dirty = False self.update()
def showent(self, screen=None,cam=None,gameinfo=None): for ent in gameinfo.entlist.entlist: fontsize = font.size(ent.name) offcount = (32-ent.width,32-ent.height-8) position = (ent.position()[0]-fontsize[0]/2+fontsize[0]-cam.x, ent.position()[1]+fontsize[1]/2-fontsize[1]-cam.y) result = pygame.Surface((fontsize[0]+4, fontsize[1]+4), pygame.SRCALPHA) result.fill((90,90,90,40)) result.blit(font.render(self.textfont,ent.name,(90,90,180,255)), (2,2)) screen.blit(result,position)
def show_image(self): pygame.mixer.music.load("mus/mus_intronoise.ogg") i = pygame.image.load("sprites/splash.png") i = sprite.scale(i, 2) self.background_layer.surface.blit( i, (globals.screen_rect.right / 2 - i.get_width() / 2, globals.screen_rect.bottom / 2 - i.get_height() / 2)) self.background_layer.flip() self.text_layer.clear() pygame.mixer.music.play() if input.await_keypress(globals.accept, 2000)[1]: self.leave() s = font.render('[PRESS Z OR ENTER]', 'fnt_small') r = s.get_rect() r.centerx = globals.screen_rect.centerx r.centery = globals.screen_rect.height * 0.75 self.text_layer.surface.blit(s, r) self.text_layer.flip() if input.await_keypress(globals.accept, 5000)[1]: self.leave()
def get_key(): screen = pygame.display.set_mode((200,100)) pygame.display.set_caption('Press Key') screen.fill((255,255,255)) pygame.font.init() # Module is uninitialised when we quit font = pygame.font.SysFont(None, 50) text = font.render('Press Key', True, (0,0,0)) screen.blit(text, (100-text.get_width()//2,50-text.get_height()//2,)) clock = pygame.time.Clock() try: while True: for event in pygame.event.get(): if event.type == pg_locals.QUIT: return None elif event.type == pg_locals.KEYDOWN: return event.key pygame.display.update() clock.tick(60) finally: pygame.quit()
def __init__(self): super().__init__() self.layer = draw.get_layer(64) self.layer.show() self.layer.surface = pygame.Surface((445, 186)) self.rect = self.layer.surface.get_rect() self.rect.center = globals.center self.layer.shift = self.rect.topleft # TODO: fix the coords below so this is not needed. self.cursor = 1 self.saved = False self.finished = False self.text_name = font.render(globals.chara.charname) self.text_lv = font.render('LV {}'.format(str(globals.chara.lv))) self.text_time = font.render(globals.chara.get_play_time()) self.text_location = font.render(globals.last_save_room_name) self.text_save = font.render('Save') self.text_return = font.render('Return') self.heart = sprite.Sprite.get_sprite('spr_heart') sfx.get_sound(0x29fb).play() self.update()
def main(): config = Null() config.keyScrollSpeed = 2000.0 config.musicVolume = .5 view = Null() view.pos = v((0, 0)) view.sprites = {} view.cursor = {} view.units = [] view.selarea = None view.begin_pos = None view.scroll_start = None view.selection = [] view.players = [] view.ct = 0.0 view.scrollleft = False view.scrollright = False view.scrollup = False view.scrolldown = False view.uisprites = [] view.config = config view.tilepalcount = 0 view.followselection = False init(sys.argv, view) dt = .001 mp = 0 #view.pathfind.set_map(chr(0)*view.mapdim[0]*view.mapdim[1]) clock = pygame.time.Clock() while True: for event in pygame.event.get(): if handle_event(event, view): return #view.path = pathf(view.occu) view.occu = list([list(x) for x in view.mapw]) for player in view.players: player.food = v(0, 0, 0) player.hunger = v(0, 0, 0) for unit in view.units: unit.update(dt, view) if view.scrollleft: view.pos = view.pos + v(-1.0, 0.0) * config.keyScrollSpeed * dt if view.scrollright: view.pos = view.pos + v(1.0, 0.0) * config.keyScrollSpeed * dt if view.scrollup: view.pos = view.pos + v(0.0, -1.0) * config.keyScrollSpeed * dt if view.scrolldown: view.pos = view.pos + v(0.0, 1.0) * config.keyScrollSpeed * dt if view.followselection and view.selection != []: poss = [x.pos for x in view.selection] poss = sum(poss) / len(poss) view.pos = poss - v(640, 480) / 2 if view.pos[0] < 0: view.pos[0] = 0 if view.pos[1] < 0: view.pos[1] = 0 maxx = view.mapdim[0] * 32 - view.screen.get_width() maxy = (view.mapdim[1] - 12) * 32 if view.pos[0] > maxx: view.pos[0] = maxx if view.pos[1] > maxy: view.pos[1] = maxy view.pos = v([int(x) for x in view.pos]) view.screen.fill((0, 0, 0)) if view.tileset == "platform": star.draw(view) draw_tiles(view) tempunits = [] for unit in view.units: tempunits.append((unit.level, unit.pos[1], unit)) tempunits.sort() view.minimapover = pygame.surface.Surface((128, 128), pygame.SRCALPHA, 32) for unit in tempunits: unit[2].draw(view) for sprite in view.uisprites: sprite.draw(view) sprite.update() if view.selarea: pygame.draw.rect(view.screen, (16, 252, 24), view.selarea, 1) #68 w 3 down player = view.players[0] player.raceindex = 1 player.minerals = 50 player.gas = 0 #print player.food, player.hunger icons = [ (0, player.minerals, (16, 252, 24)), (player.raceindex + 1, player.gas, (16, 252, 24)), ] for raceindex in range(3): food = player.food[raceindex] hunger = player.hunger[raceindex] if not food and not hunger: # heh continue if food >= hunger: color = (16, 252, 24) else: color = (200, 24, 24) icons.append((raceindex + 4, str(hunger) + "/" + str(food), color)) sprite = view.sprites["icons"] x = 640 icons.reverse() for icon in icons: x -= 68 view.screen.blit(sprite[icon[0]], (x, 3)) text = font.render(10, str(icon[1]), "game5") view.screen.blit(text, (x + 16, 3)) view.screen.blit(view.sprites['ConsoleTerran'], (0, 0)) view.screen.blit(view.minimap, v(6, 348) + (64, 64) - v(view.minimap.get_size()) / 2) view.screen.blit(view.minimapover, v(6, 348) + (64, 64) - v(view.minimap.get_size()) / 2) topleft = v(6, 348) + (64, 64) - v(view.minimap.get_size()) / 2 pygame.draw.line(view.screen, (204, 204, 208), topleft + (0, -1), topleft + (128, -1)) bottomright = v(6, 348) + (64, 64) + v(view.minimap.get_size()) / 2 pygame.draw.line(view.screen, (172, 152, 148), bottomright, bottomright + (-128, 0)) pygame.draw.rect( view.screen, (255, 255, 255), (v(6, 348) + (64, 64) - v(view.minimap.get_size()) / 2 + view.pos / 32, (20, 13)), 1) #print view.mapdim (173, 389) if len(view.selection) == 0: pass elif len(view.selection) == 1: u = view.selection[0] if u.id: w = view.sprites["Wireframe"][u.id] w.set_palette(get_wpalette(u)) view.screen.blit(w, (168, 388)) if u.health != None: s = str(int(u.health)) + "/" + str(u.maxhealth) t = font.render(8, s, "game5", True) view.screen.blit(t, v(199, 457) - v(t.get_size()) / 2) s = u.name t = font.render(10, u.name, "game0", True) view.screen.blit(t, v(315, 394) - v(t.get_size()) / 2) else: pass #multiple grpwire.grp #buttons view.screen.blit(view.sprites["TerranButtons"][4], (3, 320)) view.screen.blit(view.sprites["TerranButtons"][0], (416, 388)) view.screen.blit(font.render(8, "MENU", "game1"), (435, 394)) mp += .5 mp = mp % 10 view.screen.blit(view.movie[int(mp)], (413, 410)) #pygame.draw.rect(view.screen, (128,128,128), ((413,410),(60,56))) view.screen.blit(view.sprites["TerranOverlay"], (413, 410)) if debug: surf = font.render(8, str(int(clock.get_fps() + .5)), "game0") view.screen.blit(surf, (0, 0)) if pygame.mouse.get_focused(): view.ct += dt * 8 cursor = 'CursorArrow' u = get_unit_at_point(pygame.mouse.get_pos() + view.pos, view) if u: if u.player == view.players[0]: cursor = 'CursorTarget2Green' elif u.player == -1: cursor = 'CursorTarget2Yellow' else: cursor = 'CursorTarget2Red' if view.selarea: cursor = 'CursorDrag' if view.scroll_start: cursor = None if view.sprites['ConsoleTerran'].get_at( pygame.mouse.get_pos()) != (0, 0, 0, 255): cursor = "CursorArrow" if cursor == "CursorArrow": view.ct = view.ct % 4.0 elif cursor in ("CursorTarget2Green", "CursorTarget2Yellow", "CursorTarget2Red"): view.ct = view.ct % 14.0 else: view.ct = 0 if cursor: sprite = view.sprites[cursor][int(view.ct)] view.screen.blit( sprite, v(pygame.mouse.get_pos()) - v(sprite.get_size()) / 2) try: a except NameError: a = 0. a += dt a = a % 5 view.screen.blit(ui.progress_bar(a / 5, view), (281, 426)) pygame.display.update() pygame.mixer.music.set_volume(view.config.musicVolume) #sendp(cPickle.dumps(view.units),view) #try: # while True: # view.units = cPickle.loads(view.socket.recvfrom(2**20)[0]) #except socket.error: pass if debug: clock.tick() else: clock.tick(30) dt = clock.get_time() / 1000.0
def main(): config = Null() config.keyScrollSpeed = 2000.0 config.musicVolume = .5 view = Null() view.pos = v((0,0)) view.sprites = {} view.cursor = {} view.units = [] view.selarea = None view.begin_pos = None view.scroll_start = None view.selection = [] view.players = [] view.ct = 0.0 view.scrollleft = False view.scrollright = False view.scrollup = False view.scrolldown = False view.uisprites = [] view.config = config view.tilepalcount = 0 view.followselection = False init(sys.argv, view) dt = .001 mp = 0 #view.pathfind.set_map(chr(0)*view.mapdim[0]*view.mapdim[1]) clock = pygame.time.Clock() while True: for event in pygame.event.get(): if handle_event(event, view): return #view.path = pathf(view.occu) view.occu = list([list(x) for x in view.mapw]) for player in view.players: player.food = v(0,0,0) player.hunger = v(0,0,0) for unit in view.units: unit.update(dt, view) if view.scrollleft: view.pos = view.pos + v(-1.0,0.0)*config.keyScrollSpeed*dt if view.scrollright: view.pos = view.pos + v(1.0,0.0)*config.keyScrollSpeed*dt if view.scrollup: view.pos = view.pos + v(0.0,-1.0)*config.keyScrollSpeed*dt if view.scrolldown: view.pos = view.pos + v(0.0,1.0)*config.keyScrollSpeed*dt if view.followselection and view.selection != []: poss = [x.pos for x in view.selection] poss = sum(poss)/len(poss) view.pos = poss - v(640,480)/2 if view.pos[0] < 0: view.pos[0] = 0 if view.pos[1] < 0: view.pos[1] = 0 maxx = view.mapdim[0]*32 - view.screen.get_width() maxy = (view.mapdim[1]-12)*32 if view.pos[0] > maxx: view.pos[0] = maxx if view.pos[1] > maxy: view.pos[1] = maxy view.pos = v([int(x) for x in view.pos]) view.screen.fill((0,0,0)) if view.tileset == "platform": star.draw(view) draw_tiles(view) tempunits = [] for unit in view.units: tempunits.append((unit.level,unit.pos[1],unit)) tempunits.sort() view.minimapover = pygame.surface.Surface((128,128),pygame.SRCALPHA,32) for unit in tempunits: unit[2].draw(view) for sprite in view.uisprites: sprite.draw(view) sprite.update() if view.selarea: pygame.draw.rect(view.screen, (16,252,24), view.selarea, 1) #68 w 3 down player = view.players[0] player.raceindex = 1 player.minerals = 50 player.gas = 0 #print player.food, player.hunger icons = [ (0, player.minerals, (16, 252, 24)), (player.raceindex+1, player.gas, (16, 252, 24)), ] for raceindex in range(3): food = player.food[raceindex] hunger = player.hunger[raceindex] if not food and not hunger: # heh continue if food >= hunger: color = (16, 252, 24) else: color = (200,24,24) icons.append((raceindex+4, str(hunger)+"/"+str(food), color)) sprite = view.sprites["icons"] x = 640 icons.reverse() for icon in icons: x -= 68 view.screen.blit(sprite[icon[0]],(x,3)) text = font.render(10, str(icon[1]), "game5") view.screen.blit(text, (x+16, 3)) view.screen.blit(view.sprites['ConsoleTerran'],(0,0)) view.screen.blit(view.minimap, v(6,348)+(64,64)-v(view.minimap.get_size())/2) view.screen.blit(view.minimapover, v(6,348)+(64,64)-v(view.minimap.get_size())/2) topleft = v(6,348)+(64,64)-v(view.minimap.get_size())/2 pygame.draw.line(view.screen, (204,204,208), topleft+(0,-1), topleft+(128,-1)) bottomright = v(6,348)+(64,64)+v(view.minimap.get_size())/2 pygame.draw.line(view.screen, (172,152,148), bottomright, bottomright+(-128,0)) pygame.draw.rect(view.screen,(255,255,255), (v(6,348)+(64,64)-v(view.minimap.get_size())/2+view.pos/32,(20,13)),1) #print view.mapdim (173,389) if len(view.selection) == 0: pass elif len(view.selection) == 1: u = view.selection[0] if u.id: w = view.sprites["Wireframe"][u.id] w.set_palette(get_wpalette(u)) view.screen.blit(w, (168,388)) if u.health != None: s = str(int(u.health))+"/"+str(u.maxhealth) t = font.render(8, s, "game5", True) view.screen.blit(t,v(199,457)-v(t.get_size())/2) s = u.name t = font.render(10, u.name, "game0", True) view.screen.blit(t,v(315,394)-v(t.get_size())/2) else: pass #multiple grpwire.grp #buttons view.screen.blit(view.sprites["TerranButtons"][4], (3,320)) view.screen.blit(view.sprites["TerranButtons"][0], (416,388)) view.screen.blit(font.render(8,"MENU", "game1"),(435,394)) mp += .5 mp = mp % 10 view.screen.blit(view.movie[int(mp)], (413,410)) #pygame.draw.rect(view.screen, (128,128,128), ((413,410),(60,56))) view.screen.blit(view.sprites["TerranOverlay"], (413, 410)) if debug: surf = font.render(8, str(int(clock.get_fps()+.5)), "game0") view.screen.blit(surf,(0,0)) if pygame.mouse.get_focused(): view.ct += dt * 8 cursor = 'CursorArrow' u = get_unit_at_point(pygame.mouse.get_pos()+view.pos,view) if u: if u.player == view.players[0]: cursor = 'CursorTarget2Green' elif u.player == -1: cursor = 'CursorTarget2Yellow' else: cursor = 'CursorTarget2Red' if view.selarea: cursor = 'CursorDrag' if view.scroll_start: cursor = None if view.sprites['ConsoleTerran'].get_at(pygame.mouse.get_pos()) != (0,0,0,255): cursor = "CursorArrow" if cursor == "CursorArrow": view.ct = view.ct % 4.0 elif cursor in ("CursorTarget2Green","CursorTarget2Yellow","CursorTarget2Red"): view.ct = view.ct % 14.0 else: view.ct = 0 if cursor: sprite = view.sprites[cursor][int(view.ct)] view.screen.blit(sprite, v(pygame.mouse.get_pos())-v(sprite.get_size())/2) try: a except NameError: a = 0. a += dt a = a % 5 view.screen.blit(ui.progress_bar(a/5,view),(281,426)) pygame.display.update() pygame.mixer.music.set_volume(view.config.musicVolume) #sendp(cPickle.dumps(view.units),view) #try: # while True: # view.units = cPickle.loads(view.socket.recvfrom(2**20)[0]) #except socket.error: pass if debug: clock.tick() else: clock.tick(30) dt = clock.get_time()/1000.0