class GenericControllerBehavior(CtrlBehavior): def __init__(self): super(GenericControllerBehavior, self).__init__() global behavior_name self.display_name = behavior_name self.label = Label("", font_size=9, font_name="Cabin Regular", anchor_x="center", anchor_y="top", color=(255, 255, 255, 255)) self.init_attribute('control_distance', 'ControlDistance', (0,1000), 'generic_controller_default_control_distance', 10) def associate(self, behavior): super(GenericControllerBehavior, self).associate(behavior) self.set_control_menu_mode() def update(self): super(GenericControllerBehavior, self).update() if self.controlled_attribute: distance = self.object.translation.distance(self.association.object.translation) distance_ratio = max(0, min(1.3, distance * 1.0 / self.attributes['control_distance'].value) - 0.3) value = self.controlled_attribute.range[0] + (distance_ratio * (self.controlled_attribute.range[1] - self.controlled_attribute.range[0])) self.controlled_attribute.set(value) def draw_foreground(self): super(GenericControllerBehavior, self).draw_foreground() if self.controlled_attribute: coords = self.object.screen_coords() self.label.position = coords.x, coords.y - 10 self.label.element.text = "%s: %s" % (self.controlled_attribute.display_name, self.controlled_attribute.to_string()) self.label.element.color = (255, 255, 255, int(self.object.alpha() * 255)) self.label.draw()
def __init__(self): super(Credits, self).__init__() opts = { 'font_name': 'against myself', 'font_size': 70, 'anchor_x': 'center', 'anchor_y': 'center', } label = Label('Credits', color=(0x00, 0x00, 0x00, 0xff), **opts) label.position = 400, 500 self.add(label, z=1) label = Label('Credits', color=(0xff, 0xff, 0xff, 0xff), **opts) label.position = 400, 503 self.add(label, z=2) shadow = DEVELOPERS.replace("white", "black") developers = HTMLLabel(shadow, width=760, height=300, multiline=True) developers.position = 20, 298 self.add(developers, z=1) developers = HTMLLabel(DEVELOPERS, width=760, height=300, multiline=True) developers.position = 20, 300 self.add(developers, z=2)
def reload(self, model, hero_name): w, h = director.get_window_size() sc = 1920/w self.model = model self.name = hero_name if self.name == 'wizard': self.hero = self.model.heroes[self.name] self.sprite = Sprite(Images.hero_icons[self.name], (1600//sc, 900//sc), scale = 1/sc) self.sprite_black = Sprite(Images.hero_icons_black[self.name], (1600//sc, 900//sc), scale = 1/sc) self.label = Label('%d' %self.hero.stats.health, font_name='Times New Roman', font_size=20//sc, anchor_x='center', anchor_y='center', color = (255, 0, 0, 255) ) self.label.position = 1600//sc, 870//sc if self.name == 'priest': self.hero = self.model.heroes[self.name] self.sprite = Sprite(Images.hero_icons[self.name], (1720//sc, 900//sc), scale = 1/sc) self.sprite_black = Sprite(Images.hero_icons_black[self.name], (1720//sc, 900//sc), scale = 1/sc) self.label = Label('%d' %self.hero.stats.health, font_name='Times New Roman', font_size=20//sc, anchor_x='center', anchor_y='center', color = (255, 0, 0, 255) ) self.label.position = 1720//sc, 870//sc if self.name == 'warrior': self.hero = self.model.heroes[self.name] self.sprite = Sprite(Images.hero_icons[self.name], (1600//sc, 780//sc), scale = 1/sc) self.sprite_black = Sprite(Images.hero_icons_black[self.name], (1600//sc, 780//sc), scale = 1/sc) self.label = Label('%d' %self.hero.stats.health, font_name='Times New Roman', font_size=20//sc, anchor_x='center', anchor_y='center', color = (255, 0, 0, 255) ) self.label.position = 1600//sc, 750//sc if self.name == 'rogue': self.hero = self.model.heroes[self.name] self.sprite = Sprite(Images.hero_icons[self.name], (1720//sc, 780//sc), scale = 1/sc) self.sprite_black = Sprite(Images.hero_icons_black[self.name], (1720//sc, 780//sc), scale = 1/sc) self.label = Label('%d' %self.hero.stats.health, font_name='Times New Roman', font_size=20//sc, anchor_x='center', anchor_y='center', color = (255, 0, 0, 255) ) self.label.position = 1720//sc, 750//sc
def __init__(self, wave): super().__init__() w, h = director.get_window_size() self.wave = wave self.font_title = { 'font_name': _font_, 'font_size': 72, 'anchor_y': 'top', 'anchor_x': 'center' } title = Label('GameOver', **self.font_title) title.position = (w/2., h) self.add(title, z=1) self.font_label = { 'font_name': _font_, 'font_size': 40, 'anchor_y': 'top', 'anchor_x': 'center' } label = Label('Enter your name:', **self.font_label) label.position = (w/2., 600.) self.add(label) self.name = Label('', color=(192, 192, 192, 255), **self.font_label) self.name.position = (w/2., 530.) self.add(self.name)
def on_key_press(self, k, m): if k == key.BACKSPACE: self.name.element.text = self.name.element.text[0:-1] return True elif k == key.ENTER: if len(self.name.element.text) <= 2: w, h = director.get_window_size() label_s = Label( 'Name too short! Choose at least 3 characters', font_name=_font_, font_size=20, anchor_y='top', anchor_x='center') label_s.position = (w/2., 700.) self.add(label_s) elif len(self.name.element.text) >= 15: w, h = director.get_window_size() label_l = Label( 'Name too long! Not more than 15 characters allowed', font_name=_font_, font_size=20, anchor_y='top', anchor_x='center') label_l.position = (w/2., 750.) self.add(label_l) else: new_score(self.name.element.text, self.wave) director.pop() return True elif k == key.ESCAPE: director.pop() return True return False
def __init__(self, wave): super().__init__() self.wave = wave if check_score(wave) is False: self.in_highscore = False else: self.place = check_score(wave) self.in_highscore = True w, h = director.get_window_size() text1 = Label('+++ Game Over! +++', font_name=_font_, font_size=30, anchor_x='center', anchor_y='center') text1.position = w/2., h/2. + 65 if self.in_highscore: text2 = Label( 'You reached wave %d ' % wave + 'and place %d of the highscore' % self.place, font_name=_font_, font_size=20, anchor_x='center', anchor_y='center') else: text2 = Label( 'You reached wave %d' % wave, font_name=_font_, font_size=20, anchor_x='center', anchor_y='center') text2.position = w/2., h/2. self.add(text1) self.add(text2)
def create_page_select(self): '''创建关卡选择的页面选择器''' levels = self.get_all_level() count_pre_pages = 10 pages = len(levels) // count_pre_pages + 1 self.page_count = pages last_page = Label('上一页') next_page = Label('下一页') y = 100 lx = 320 - 54 nx = 320 + 10 for i in range(pages): # 从中间开始放页码 if i < pages / 2: x = 320 - (pages / 2 - i) * 20 lx = 320 - pages / 2 * 20 - 64 else: x = 320 + (i - pages / 2) * 20 nx = 320 + pages / 2 * 20 + 10 label = Label(str(i + 1), position=(x, y)) last_page.position = (lx, y) next_page.position = (nx, y) r = Rect(label.x, label.y, 10, 16) self.page_select.append([r, label]) self.add(label) lr = Rect(last_page.x, last_page.y, 50, 20) nr = Rect(next_page.x, next_page.y, 50, 20) self.page_select.append([lr, last_page]) self.page_select.append([nr, next_page]) self.add(last_page) self.add(next_page)
class TestLayer(cocos.layer.Layer): def __init__(self): super( TestLayer, self ).__init__() x,y = director.get_window_size() self.color = [127, 127, 127, 255] self.label = Label(time.ctime(), (x/2, y/2)) self.label.do( Rotate( 360, 10 ) ) self.add( self.label ) self.schedule_interval(self.update_time, .1) def update_time(self, dt): self.label.element.text = time.ctime() self.color[:3] = [self._change_color(self.color[i]) for i in range(3)] self.label.element.color = self.color def _change_color(self, old_color): new_color = old_color + random.randint(-10, 10) if new_color > 255: new_color = 255 if new_color < 0: new_color = 0 return new_color
def __init__(self): super(Layer2, self).__init__(231, 76, 60, 1000) # Same Label code as before but this time with different text text = Label("This is the second scene") text.position = director._window_virtual_width / 2, director._window_virtual_height / 2 self.add(text)
class IntroLayer(Layer): is_event_handler = True def __init__(self): super(IntroLayer, self).__init__() self.img = pyglet.resource.image('background.png') self.intro_text = Label('Made by some Asshole:', font_size=24, font_name='Times New Roman', color=(255,255,255,255), anchor_x='left', anchor_y='bottom') self.intro_text.position = (0, 0) self.add(self.intro_text) def draw(self): glPushMatrix() self.transform() self.intro_text.draw() self.img.blit(0, 0) glPopMatrix() def start_game(self): scene = Scene() scene.add(MultiplexLayer( MainMenu(), OptionsMenu(), HiScoresLayer(), ), z=1) scene.add(BackgroundLayer(), z=0) director.push(ShuffleTransition(scene, 1.5)) def on_key_press(self, k, m): if k in (pyglet.window.key.ENTER, pyglet.window.key.ESCAPE, pyglet.window.key.SPACE): self.start_game() return True def on_mouse_press(self, x, y, b, m): self.start_game() return True
def __init__(self): super().__init__(*Options.BACKGROUND_COLOR) version = Label(font_name=Options.FONT_NAME, font_size=16, color=Options.FONT_COLOR_NOT_SELECTED, anchor_x="right", anchor_y="bottom") version.position = director.get_window_size()[0] - 5, 5 version.element.text = _("Version: {}").format(Options.VERSION) self.add(version)
def __init__(self): super().__init__() width, height = director.get_window_size() paused = Label(_("PAUSE"), font_name="Ubuntu", font_size=64, bold=True, color=Options.FONT_COLOR, anchor_x="center", anchor_y="center") paused.position = width // 2, height // 2 paused.do(Repeat(FadeOut(0.3) + FadeIn(0.3))) # blink self.add(paused)
def __init__(self): super(Start, self).__init__() label = Label('打砖块', font_size=42) label2 = Label('press any key to start') label.position = (230, 300) label2.position = (240, 150) self.count = 0 self.add(label) self.add(label2) self.schedule(self.update)
def __init__( self, win): super(GameOver,self).__init__( 32,32,32,64) w,h = director.get_window_size() if (win == False): label = Label('Game Over', font_name='Edit Undo Line BRK', font_size=54, anchor_y='center', anchor_x='center' ) if (win == True): label = Label('You Won', font_name='Edit Undo Line BRK', font_size=54, anchor_y='center', anchor_x='center' ) label.position = ( w/2.0, h/2.0 ) self.add( label )
def __init__(self): super(ReaderScene, self).__init__() self.text = "" if(self.text_file): self.text = data.load(self.text_file).read() self.font_item['text'] = self.text label = Label(**self.font_item ) label.content_width = 300 self.label = label self.add(label,z=9999)
def __init__(self): width, height = director.get_window_size() super(HiScoresLayer, self).__init__(32, 32, 32, 16, width=width, height=height-86) self.font_title = {} self.font_title['font_name'] = 'Times New Roman' self.font_title['font_size'] = 72 self.font_title['color'] = (204, 164, 164, 255) self.font_title['anchor_x'] = 'center' self.font_title['anchor_y'] = 'top' title = Label('Scores!', **self.font_title) title.position = (width/2.0, height) self.add(title, z=1) self.table = None
def __init__(self): # Remember that I need to pass in an RGBA colour value because it's a ColorLayer super(Layer1, self).__init__(155, 89, 182, 1000) # I make a simple label with no extra parameters such as font or anchors text = Label("This is the first scene") # For the position, I do something we haven't done before # We've been making the position static, but we don't exactly know the width and height of a player's window # Therefore, getting the virtual height and width and then just dividing them by two is a safer bet text.position = director._window_virtual_width / 2, director._window_virtual_height / 2 # And lastly we add it self.add(text)
def __init__(self, scene): from cocos.text import Label from cocos.actions import FadeIn from zombie.constants import VERSION super(TitleScreen, self).__init__() self.scene = scene title_label = Label( 'Zombie+ Ultra', font_name='Extrude', font_size=48, anchor_x='center', anchor_y='center', ) version_label = Label( VERSION, font_name='TinyUnicode', font_size=32, anchor_x='center', ) title_label.position = 320, 240 version_label.position = 320, (240 / 4) * 3 title_label.do(FadeIn(duration=10)) version_label.do(FadeIn(duration=10)) self.add(title_label) self.add(version_label)
def __init__(self): super(LogoLayer, self).__init__() self.img = pyglet.resource.image("jungle.png") self.img.anchor_x = self.img.width / 2 self.img.anchor_y = self.img.height / 2 name = Label("Man Is But A Worm", font_name=FONT, font_size=40, anchor_x="center", anchor_y="center") name.position = WIDTH / 2, HEIGHT * 3 / 4 self.add(name) info = Label("Press space to act", font_name=FONT, font_size=18, anchor_x="center", anchor_y="center") info.position = WIDTH / 2, HEIGHT / 5 self.add(info) sound.start_music()
def draw(self): w, h = director.get_window_size() sc = 1920/w self.label = Label('%d' %self.money, font_name='Times New Roman', font_size=20//sc, anchor_x='center', anchor_y='center', color = (255, 0, 0, 255)) self.label.position = (1670//sc, 1030//sc) self.label.draw() for c in self.portraits: self.portraits[c].draw()
class Interface(Layer): def __init__(self, model): self.model = model self.portraits = {'wizard': Hero_portriat_DM(), 'priest': Hero_portriat_DM(), 'warrior': Hero_portriat_DM(),'rogue': Hero_portriat_DM()} for c in self.portraits: self.portraits[c].reload(model, c) self.money = starting_money def draw(self): w, h = director.get_window_size() sc = 1920/w self.label = Label('%d' %self.money, font_name='Times New Roman', font_size=20//sc, anchor_x='center', anchor_y='center', color = (255, 0, 0, 255)) self.label.position = (1670//sc, 1030//sc) self.label.draw() for c in self.portraits: self.portraits[c].draw()
def __init__(self, title, choices, callback, explanation=None, width=400): super(ChoiceLayer, self).__init__() self.callback = callback self.add(ColorLayer(20, 20, 20, 150), z=-2) w, h = director.get_window_size() y = h - 256 but = Label(title, color=(0, 0, 0, 255), position=(w//2, y), anchor_x='center', anchor_y='top', font_size=24) x1 = w//2 - but.element.content_width // 2 x2 = w//2 + but.element.content_width // 2 y2 = y self.add(but) y -= but.element.content_height + 10 if explanation: but = Label(explanation, multiline=True, color=(0, 0, 0, 255), position=(w//2, y), width=width, anchor_x='center', anchor_y='top', font_size=14, align='center', font_name='Prototype') self.add(but) x1 = min(w//2 - width // 2, x1) x2 = max(w//2 + width // 2, x2) y -= but.element.content_height + 10 y -= 32 self.choice_buts = [] for choice in choices: but = Label(choice, color=(0, 0, 0, 255), position=(w//2, y), anchor_x='center', anchor_y='bottom', font_size=20, font_name='Prototype') self.add(but, z=1) self.choice_buts.append(but) x = w//2 - but.element.content_width // 2 x1 = min(x, x1) x2 = max(w//2 + but.element.content_width // 2, x2) but.rect = Rect(x, y, but.element.content_width, but.element.content_height) y1 = y y -= but.element.content_height self.patch_dimensions = (x1, y1, x2-x1, y2-y1) self.ninepatch = NinePatch(pyglet.resource.image('border-9p.png'))
def __init__(self, scene, message, next_layer=None): from cocos.text import Label super(MessageScreen, self).__init__() self.scene = scene self.next_layer = next_layer label = Label( message, font_name='TinyUnicode', font_size=32, anchor_x='center', anchor_y='center', ) label.position = 320, 240 self.add(label)
def __init__(self): # First thing we do in the class is to initialize the parent class, Layer, which is why I called the super function in this case super(HelloWorld, self).__init__() # Then I make a Cocos Label object to display the text. hello_world_label = Label( "Hello World!", # The first thing the Label class requires is a piece of text to display font_name = "Times New Roman", # The next thing we need to input a font. Feel free to replace it with any font you like. font_size = 32, # The third input I give is a font size for the text anchor_x = 'center', # This input parameter tells cocos to anchor the text to the middle of the X axis anchor_y = 'center' # Similar to the input above, this parameter tells cocos to anchor the text to the middle of the Y axis ) # Now I need to give the text its position. hello_world_label.position = 320, 240 # Lastly I need to add the label to the layer # self refers to the object, which in this case is the layer self.add(hello_world_label)
def draw(self): w, h = director.get_window_size() sc = 1920/w if (self.skill.learnt): self.sprite.draw() if self.skill.cd_left: self.label = Label('%d' %self.skill.cd_left, font_name='Times New Roman', font_size=20//sc, anchor_x='center', anchor_y='center', color = (255, 0, 0, 255) ) self.label.position = ((1208)//sc, (899 - skill_pos[self.number])//sc) self.label.draw()
class MessageLayer(Layer): def show_message(self, message, callback=None): width, height = director.get_window_size() self.message = Label(message, font_size=52, font_name='Times New Roman', anchor_x='center', anchor_y='center') self.message.position = (width/2.0, height) self.add(self.message) actions = Accelerate(MoveBy( (0,-height/2.0), duration=0.5)) + \ Delay(1) + \ Accelerate(MoveBy( (0,-height/2.0), duration=0.5)) + \ Hide() if callback: actions += CallFunc( callback ) self.message.do( actions )
def __init__(self): super(IntroLayer, self).__init__() self.img = pyglet.resource.image('background.png') self.intro_text = Label('Made by some Asshole:', font_size=24, font_name='Times New Roman', color=(255,255,255,255), anchor_x='left', anchor_y='bottom') self.intro_text.position = (0, 0) self.add(self.intro_text)
def __init__(self): super( TestLayer, self ).__init__() x,y = director.get_window_size() self.color = [127, 127, 127, 255] self.label = Label(time.ctime(), (x/2, y/2)) self.label.do( Rotate( 360, 10 ) ) self.add( self.label ) self.schedule_interval(self.update_time, .1)
def __init__(self): super(LogoLayer, self).__init__() # self.img = pyglet.resource.image('jungle.png') # self.img.anchor_x = self.img.width / 2 # self.img.anchor_y = self.img.height / 2 name = Label('Man Is But A Worm', font_name = FONT, font_size = 40, anchor_x = 'center', anchor_y = 'center') name.position = WIDTH / 2, HEIGHT * 3 / 4 self.add(name) info = Label('Press space to act', font_name = FONT, font_size = 18, anchor_x = 'center', anchor_y = 'center') info.position = WIDTH / 2, HEIGHT / 5 self.add(info) sound.start_music()
class FileInfoLayer(Layer): is_event_handler = False def __init__(self, text='', position=(0, 0), **kwargs): print("INIT >>> FileInfoLayer.init() ") super(FileInfoLayer, self).__init__() self.model = None self.background = cocos.layer.util_layers.ColorLayer(0, 0, 0, 128, 1000, 30) self.label = Label( "Label1", x=10, y=10, font_name='Gill Sans', font_size=10, color=(250, 250, 250, 255), anchor_x = "left", anchor_y = "baseline", multiline = False ) self.add(self.background, name="background") self.add(self.label, name="label") def on_slideshow_model_update(self, model): print("FileInfoLayer.ON_SLIDESOW_MODEL_UPDATE") self.model = model self.label.element.text = self.text print("FileInfoLayer: %s" % self.text) def on_draw(self): self.background.draw() self.label.draw() @property def text(self): if self.model is None: return '' else: return '%d / %d: %s' % \ (self.model.current_id+1, self.model.total_files, self.model.current_file)
def _load_interface(self): self._load_button_gen("button", "exit", events.emit_show_city_generic, "button_exit", 0, 1, 0.95) self._load_button_gen("display", "city_table", events.emit_return_to_map, "button_city_table", 0, 1, 1) self.label_cityname = Label(director.core.query_mover("Transarctica").in_city, (director.window.width * self.button_positions["label_cityname"]["X"], director.window.height*self.button_positions["label_cityname"]["Y"]), color=(210,200,128,255), font_name="Arial", bold=True, font_size=24, anchor_x="center", anchor_y="center") self.add(self.label_cityname) label_stores_1 = self._load_label_gen("label_stores_1") self.add(label_stores_1, name="label_stores_1") self.get("label_stores_1").element.text=" " label_stores_2 = self._load_label_gen("label_stores_2") self.add(label_stores_2, name="label_stores_2") self.get("label_stores_2").element.text=" " label_stores_3 = self._load_label_gen("label_stores_3") self.add(label_stores_3, name="label_stores_3") self.get("label_stores_3").element.text=" " label_lignite_you_have = self._load_label_gen("label_lignite_you_have") self.add(label_lignite_you_have, name="label_lignite_you_have") self.get("label_lignite_you_have").element.text=" " for j in range(50): self.button_positions["sprite_trade_bracket"+str(j)] = {"X": 0.05+(0.225*(j%4)),"Y": 1.03-(0.183*(j//4))} self.button_positions["trade_bracket"+str(j)] = {"X": 0.05+(0.225*(j%4)),"Y": 0.804-(0.183*(j//4))} self.button_positions["button_buy"+str(j)] = {"X": 0.225+(0.225*(j%4)),"Y": 0.896-(0.183*(j//4))} self.button_positions["button_sell"+str(j)] = {"X": 0.225+(0.225*(j%4)),"Y": 0.846-(0.183*(j//4))} self._load_trade_boxes()
def toggle_hotkeys_menu(self): # Toggles the hotkeys menu on/off if self.hotkeysMenuOn: # self.remove(self.hotkeysMenu) # self.remove(self.title) for key in self.hotkeysList: self.remove(key) self.cm.remove_tricky(key) for num in self.keyNumList: self.remove(num) self.hotkeysList = [] self.keyNumList = [] else: # self.add(self.hotkeysMenu,z=20) # self.title = Label(text="Hotkeys:",font_name='Rabiohead',anchor_y='center',position=(10,630),font_size=20,color=(0,0,0,255),multiline=False) # self.add(self.title,z=25) x = 10 y = 600 for hotkey in self.hotkeys: if self.hotkeys[hotkey]: y -= 50 keyNum = hotkey - 48 newKey = Label(text="Key: %s" % keyNum,font_name='Rabiohead',anchor_y='center',position=(x,y),font_size=12,color=(0,0,0,255),multiline=False) x+=70 newLabel = HotkeyLabel((x,y),self.hotkeys[hotkey]) self.hotkeysList.append(newLabel) self.cm.add(newLabel) self.keyNumList.append(newKey) self.add(newLabel,z=25) self.add(newKey,z=25) x -= 70 self.hotkeysMenuOn = not self.hotkeysMenuOn
def main(): global m director.init() m = ScrollingManager() fg = ScrollableLayer() l = Label('foreground') l.position = (100, 100) fg.add(l) m.add(fg) bg = ScrollableLayer(parallax=.5) l = Label('background, parallax=.5') l.position = (100, 100) bg.add(l) m.add(bg) if autotest: m.do( Delay(1) + CallFunc(update_focus, 100, 200) + Delay(1) + CallFunc(update_focus, 200, 100) + Delay(1) + CallFunc(update_focus, 200, 200) ) main_scene = cocos.scene.Scene(m) keyboard = key.KeyStateHandler() director.window.push_handlers(keyboard) def update(dt): m.fx += (keyboard[key.RIGHT] - keyboard[key.LEFT]) * 150 * dt m.fy += (keyboard[key.DOWN] - keyboard[key.UP]) * 150 * dt m.set_focus(m.fx, m.fy) main_scene.schedule(update) director.run (main_scene)
def __init__(self): global p2_score # accesses the score for both players to display it in the final message global p1_score super(endLayer, self).__init__( 52, 152, 219, 1000 ) # initialize this layer with the same conditions as the previous one #text = Label("You Won!") print( IDENTIFIER) #print diagnostic info so we know which player this is score = 0 opScore = -1 if IDENTIFIER == "client1": # if you are the first, assign the score appropraitely score = p2_score opScore = p1_score else: # otherwise, flip flop the score values score = p1_score opScore = p2_score message = "You Lost. Try Again Next Time!" # set the losing message if score > opScore: message = "You Won, Congrats!" # but overwrite it if your score was better #print ("we did it patrick, we saved the city") text = Label( message) # create a label with your victory / loss message text2 = Label( "Your Score: " + str(score) + " Opponent Score: " + str(opScore)) # create another label with the player scores text2.position = director._window_virtual_width / 4, ( director._window_virtual_height / 2) - 30 #place the two different text labels text.position = director._window_virtual_width / 4, director._window_virtual_height / 2 self.add(text) # add the text to the scenen self.add(text2)
def __init__(self): super(EndGame, self).__init__() self.background = ColorLayer(0, 0, 0, 170) self.label = Label()
def __init__(self): """ label: players: grass: projectiles: controllers: robots: castle: """ super().__init__() width, height = game_board["size"] self.label = Label("debug") self.label.position = 100, 100 # players... self.players = [ #Actor(item_types["player1"], (500, 100), self.label), Actor(item_types["player2"], (100, 600)), #Actor(item_types["player3"], (250, 600)), #Actor(item_types["player4"], (900, 600)), ] last_player_id = 0 # controllers... self.controllers = [Player(p) for p in self.players] for controller in self.controllers: controller.id = last_player_id last_player_id += 1 # grass... grass_distance = 50 x_margin, y_margin, width, height = (width // 2, grass_distance, width, height - game_board["castle_depth"]) self.grass = [[ Actor(item_types["grass" + str(randint(1, 3))], (x, y)) for x in range(-x_margin, width + x_margin, grass_distance) ] for y in range(-y_margin, height, grass_distance)] # projectiles... self.projectiles = [] # robots... self.robots = [ Actor(item_types["robot1"], (200, 700)), Actor(item_types["robot1"], (800, 400)), Actor(item_types["robot1"], (300, 500)), Actor(item_types["robot1"], (600, 600)), Actor(item_types["robot2"], (500, 800)), Actor(item_types["robot3"], (800, 900)), ] # castle... self.castle = Actor(item_types["castle1"], (500, 1000)) # add to game layer... # create grass in batches to speed up game from cocos.batch import BatchNode for grass_batch in self.grass: batch = BatchNode() for grass in grass_batch: grass.alpha = 0.8 batch.add(grass) self.add(batch, -grass_batch[0].coord.y) self.add(self.label) for robot in self.robots: self.add(robot, -robot.coord.y) for player in self.players: self.add(player, -player.coord.y) for controller in self.controllers: self.add(controller) self.add(self.castle, -self.castle.coord.y) print("Game Layer Children" + str(len(self.children))) self.do(CollisionAction())
class GameScreen(ColorLayer): is_event_handler = True def __init__(self): super(GameScreen, self).__init__(0xBF907A, 0x806052, 0xFFC0A3, 0x403029) # Placeholders self.answer = "0" self.question = None # Initialize game self.game = Game( game_engine=GameEngine.BuildGameEngineFromStatesAndTransitions( GAME_STATES_FILENAME, GAME_TRANSITIONS_FILENAME), player_name=playerName, difficulty_level=difficultyLevel) # Create required labels. self.timer_label = Label("00", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.question_label = Label("Question Text", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.answer_label = Label("Answer Text", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.score_board_label = Label("Score: ", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.instruction_label = Label("Press Enter to submit answer!", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.timer_label.position = ( director._window_virtual_width / 10) * 9, director._window_virtual_height / 10 self.question_label.position = director._window_virtual_width / 2, director._window_virtual_height / 2 self.answer_label.position = director._window_virtual_width / 2, director._window_virtual_height / 2 - 50 self.score_board_label.position = director._window_virtual_width / 10, director._window_virtual_height / 10 self.instruction_label.position = director._window_virtual_width / 2, ( director._window_virtual_height / 10) * 9 self.add(self.instruction_label) self.add(self.timer_label) self.add(self.question_label) self.add(self.score_board_label) self.add(self.answer_label) self.display_question() # Method that checks if timer is done at intervals of 1 second. def is_timer_done(self, callback, *args, **kwargs): if self.timer_label.element.text == '0': self.handle_answer() def display_question(self): # Reinitialize answer to empty string. self.answer = "" self.answer_label.element.text = "_" self.question = self.game.get_question() self.question_label.element.text = str(self.question) self.timer_label.element.text = str(self.question.time) # Schedule callback to check for timer every second. self.schedule_interval(callback=self.is_timer_done, interval=1) # Add action for timer. self.timer_label.do(UpdateTimerAction(self.question.time)) def handle_answer(self): if not self.answer: self.answer = 10 if self.game.submit_answer(int(self.answer)): print("Correct Answer") else: print("Incorrect Answer") # Update Score board. self.score_board_label.element.text = " Score: {}".format( self.game.get_current_state()) # If not game over, continue with next question. if not self.game.is_game_over(): self.display_question() else: # Move to next screen with score. director.replace(FadeTransition(Scene(ScoreBoardScreen()))) def on_key_press(self, key, modifiers): if symbol_string(key) == "ENTER": self.handle_answer() else: print(key - ord('0')) self.answer += chr(key) self.answer_label.element.text = self.answer def on_exit(self): global game game = self.game super(GameScreen, self).on_exit()
def __init__(self, message): """Initialize an error layer.""" super(ErrorLayer, self).__init__() w, h = director.get_window_size() lbl_title = Label("Fatal Error", bold=True, font_size=64, anchor_x="center", anchor_y="center", color=(255, 255, 255, 0)) lbl_title.position = w * 0.5, h * 0.75 lbl_title.do(FadeIn(1)) self.add(lbl_title) lbl_message = Label(message, anchor_x="center", anchor_y="center", font_size=12, color=(255, 255, 255, 0)) lbl_message.position = w * 0.5, h * 0.5 lbl_message.do(FadeIn(1)) self.add(lbl_message) lbl_advice = Label( "Please restart the application once you have fixed the problem.", font_size=10, anchor_x="center", anchor_y="center", color=(255, 255, 255, 0)) lbl_advice.position = w * 0.5, h * 0.25 lbl_advice.do(Accelerate(FadeIn(3), 2)) self.add(lbl_advice)
def __init__(self): super(Layer2, self).__init__(231, 76, 60, 1000) text = Label("This is the second scene") text.position = director._window_virtual_width / 2, director._window_virtual_height / 2 self.add(text)
def __init__(self, *layers): super(SwitchLayer, self).__init__(*layers) self.index = 0 self.label = Label('Switch layers with LEFT/RIGHT') self.label.position = (10, 30) self.add(self.label, z=1)
def __init__(self): super(MainLayer, self).__init__() skip = Label("Натисніть ПРОБІЛ, щоб пропустити", position = (100,550), color = (255,0,0, 255), font_size = 25, bold = True) skip.do(Blink (20,20)) self.add(skip) self.img_h = image.load('res/animation/level1_monsters/hell_hound/hell-hound-run.png') self.img_grid_h = image.ImageGrid(self.img_h, 1, 5, item_width=67, item_height=31) self.anim_h = image.Animation.from_image_sequence(self.img_grid_h[0:], 0.2, loop=True) self.hell_hound = cocos.sprite.Sprite(self.anim_h) self.hell_hound.position = (-100, 180) self.hell_hound.scale = 2 self.hell_hound.scale_x = -1 self.add(self.hell_hound) self.portal = cocos.sprite.Sprite('res/animation/catscene/portal.png') self.portal.position = (500, 500) self.portal.scale = 0.3 self.add(self.portal) self.img = pyglet.image.load('res/animation/catscene/Character_03/Idle/idle_sheet.png') self.img_grid = pyglet.image.ImageGrid(self.img, 1, 13, item_width=64, item_height=64 ) self.anim = pyglet.image.Animation.from_image_sequence(self.img_grid[0:], 0.1, loop=True) self.hero_1 = cocos.sprite.Sprite(self.anim) self.hero_1.scale = 2.2 self.hero_1.position = (300, 180) self.add(self.hero_1) self.img_1 = pyglet.image.load('res/animation/catscene/girl/Idle_Png/idle_sheet.png') self.img_grid_1 = pyglet.image.ImageGrid(self.img_1, 1, 5, item_width=128, item_height=128 ) self.anim_1 = pyglet.image.Animation.from_image_sequence(self.img_grid_1[0:], 0.1, loop=True) self.hero_2 = cocos.sprite.Sprite(self.anim_1) self.hero_2.position = (200, 190) self.hero_2.scale = 1.6 self.add(self.hero_2) self.img_2 = pyglet.image.load('res/animation/idle/idlesheet.png') self.img_grid_2 = pyglet.image.ImageGrid(self.img_2, 1, 4, item_width=50, item_height=37 ) self.anim_2 = pyglet.image.Animation.from_image_sequence(self.img_grid_2[0:], 0.2, loop=True) self.hero_3 = cocos.sprite.Sprite(self.anim_2) self.hero_3.position = (100, 180) self.hero_3.scale = 2.2 self.add(self.hero_3) self.img_3 = pyglet.image.load('res/animation/level3_monsters/demon boss/demon-idle.png') self.img_grid_3 = pyglet.image.ImageGrid(self.img_3, 1, 6, item_width=160, item_height=144 ) self.anim_3 = pyglet.image.Animation.from_image_sequence(self.img_grid_3[0:], 0.1, loop=True) self.demon = cocos.sprite.Sprite(self.anim_3) self.demon.position = (400, 500) self.demon.scale = 1.4 self.add(self.demon) self.hell_hound.do(MoveTo((1000, 180), 11)) self.hero_3.do(MoveBy((170, 0), 3) + Delay(9.5) + MoveBy((1000, 0), 7.5)) self.hero_1.do(MoveBy((100,0), 3) + Delay(8.5) + FadeOut(0.5)) self.hero_2.do(MoveBy((250,0), 3) + Delay(8.5) + FadeOut(0.5)) self.portal.do(FadeOut(0) + MoveTo((700, 300), 5) + FadeIn(1) + Delay(7.5) + FadeOut(0.5)) self.demon.do(FadeOut(0) + MoveTo((700, 350), 5) + FadeIn(4) + Delay(1) + MoveTo((550, 250), 1) + Delay(2) + MoveTo((550, 1000), 1)) self.schedule(self.update)
def line_labels(self): for x in range(10): label = Label(str(10 - x), font_size=12) label.position = (30, 70 + (50 * x)) self.add(label)
def column_labels(self): for x in range(10): label = Label(string.letters[x].upper(), font_size=12) label.position = (70 + (50 * x), 30) self.add(label)
def on_enter(self): super(Fixed, self).on_enter() if self.initialised: return self.buttons = [] # ok, do we need to finish creating the game? if model.game.turn == 0: # prior to first turn model.game.init_new_game(self) w, h = director.get_window_size() # now it's safe to show information about the game bar_label_x = 248*2 bar_graph_x = 315 bar_label_y = 372*2 bar_graph_y = 365 self.add(Label('Faction Strength: ', x=bar_label_x, y=bar_label_y, anchor_y='top', font_name='Prototype'), 'threat') self.add(MultipleBargraph((200, 8), (.2, .2, .2), position=(bar_graph_x, bar_graph_y), style='solid', colors=[(100, 100, 100), (200, 200, 100), (200, 100, 100)]), name='threat_graph') self.add(Label('Risk of Capture: ', x=bar_label_x, y=bar_label_y-20, anchor_y='top', font_name='Prototype')) self.add(MultipleBargraph((200, 8), (1, 1, 1), position=(bar_graph_x, bar_graph_y-10), style='solid', colors=[(100, 100, 100), (200, 200, 100), (200, 100, 100)]), name='visible_graph') turn_x = 840 turn_y = 698 self.add(Label('', multiline=True, x=turn_x, y=turn_y, width=200, anchor_x='left', anchor_y='bottom', font_name='Prototype'), name='turn_label') end_turn = Button('end turn button.png', (w-64, h-64), None, self.on_new_turn) self.buttons.append(end_turn) self.add(end_turn, name='end_turn') help = Button('help.png', (16, 16), None, self.on_help) self.buttons.append(help) self.add(help, name='help') self.info = Details() self.info.position = (400, h-25) self.add(self.info) self.zinfo = ZoneInfo() self.zinfo.position = (150, 185) self.add(self.zinfo) self.zone = Zone() self.add(self.zone, z=-1) order_label = Label('Choose your actions for this turn: ', position=(self.order_x, self.order_y + 40), color=(255,255,255,255), font_name='Prototype') self.add(order_label) # add the hideout button - initially offscreen self.add(Sprite('icon-home.png', position= (-100, self.zone.y)), name='hideout') self.hideout_moved() # order_help = Label(GENERAL_HELP_TEXT, position=(30, 320), # multiline=True, color=(150, 150, 150, 255), # font_size =10, # font_name='Prototype', width=400) # self.add(order_help) self.update_info() # now we're done self.initialised = True if model.game.turn == 1: self.ask_ok('Fight Back', lambda *a: None, explanation=START_TEXT, width=500)
def _build_components(self): border_rect = rect.Rect(0, 0, self.Size[0], self.Size[1]) border_rect.center = (0, 0) self.activated_border = Rect(border_rect, self.SelectedColor, width=4) if not self.static: self._create_status_border(border_rect, z=3, width=4) # Main card image. main_sprite = Sprite( '{}-{}.png'.format(Klass.Idx2Str[self._c_get('klass')], self._c_get('type')), (0, 0), scale=1.0, ) if self.static: card_cls = all_cards()[self.entity] else: card_cls = self.entity main_image = try_load_image(card_cls.get_image_name()) if main_image is not None: image_sprite = Sprite( main_image, pos(0.0, 0.02, base=self.SizeBase), scale=1.2, ) self.front_sprites['image'] = [image_sprite, 0] mana_sprite = Sprite( 'Mana.png', pos(-0.85, 0.76, base=self.SizeBase), scale=0.9, ) # Mark, name and description. mark_image = try_load_image('Mark-{}.png'.format( self._c_get('package'))) mark_sprite = None if mark_image is None else Sprite( mark_image, pos(0, -0.6, base=self.SizeBase), scale=1.0) name_label = Label(self._c_get('name'), pos(0, -0.08, base=self.SizeBase), font_size=21, anchor_x='center', anchor_y='center', bold=True) desc_label = HTMLLabel(self._render_desc(self._c_get('description')), pos(0, -0.58, base=self.SizeBase), anchor_x='center', anchor_y='center', width=main_sprite.width * 0.9, multiline=True) # [NOTE]: There is an encoding bug when parsing the font name in HTML (in `pyglet\font\win32query.py:311`), # must set font out of HTML. desc_label.element.set_style('font_name', C.UI.Cocos.Fonts.Description.Name) # Race sprite and label. race = self._c_get('race') if race: race_sprite = Sprite('Race.png', pos(0.02, -0.86, base=self.SizeBase), scale=1.0) race_label = hs_style_label(','.join(Race.Idx2Str[r] for r in race), pos(0.02, -0.86, base=self.SizeBase), font_size=22, anchor_y='center') self.front_sprites['race-sprite'] = [race_sprite, 3] self.front_sprites['race-label'] = [race_label, 4] self.front_sprites.update({ 'main': [main_sprite, 1], 'mana-sprite': [mana_sprite, 2], 'name': [name_label, 3], 'desc': [desc_label, 3], }) if mark_sprite is not None: self.front_sprites['mark-sprite'] = [mark_sprite, 2] if self._c_get('type') != Type.Permanent: mana_label = hs_style_label(str(self._c_get('cost')), pos(-0.84, 0.8, base=self.SizeBase), font_size=64, anchor_y='center', color=Colors['white']) self.front_sprites['mana-label'] = [mana_label, 4] back_sprite = Sprite( 'Card_back-Classic.png', (0, 0), scale=1.0, ) self.back_sprites['back'] = [back_sprite, 1] if self._c_get('rarity') not in (Rarity.Basic, Rarity.Derivative): self.front_sprites['rarity-sprite'] = [ Sprite( 'Rarity-{}-{}.png'.format(self._c_get('type'), self._c_get('rarity')), pos(0.0, -0.248, base=self.SizeBase)), 4 ] if self._c_get('type') == Type.Minion: atk_sprite = Sprite('Atk.png', pos(-0.86, -0.81, base=self.SizeBase), scale=1.15) atk_label = hs_style_label(str(self._c_get('attack')), pos(-0.78, -0.8, base=self.SizeBase), anchor_y='center', font_size=64, color=self._get_attack_color()) health_sprite = Sprite('Health.png', pos(0.84, -0.81, base=self.SizeBase), scale=1.05) health_label = hs_style_label(str(self._c_get('health')), pos(0.84, -0.8, base=self.SizeBase), anchor_y='center', font_size=64, color=self._get_health_color()) self.front_sprites.update({ 'attack-sprite': [atk_sprite, 2], 'attack-label': [atk_label, 3], 'health-sprite': [health_sprite, 2], 'health-label': [health_label, 3], }) elif self._c_get('type') == Type.Spell: name_label.position = pos(0, -0.04, base=self.SizeBase) main_sprite.position = pos(0, -0.07, base=self.SizeBase) if mark_sprite is not None: mark_sprite.position = pos(0, -0.57, base=self.SizeBase) elif self._c_get('type') == Type.Weapon: name_label.position = pos(0, -0.01, base=self.SizeBase) main_sprite.position = pos(0, -0.01, base=self.SizeBase) if mark_sprite is not None: mark_sprite.position = pos(0, -0.55, base=self.SizeBase) atk_sprite = Sprite('WeaponAtk.png', pos(-0.81, -0.83, base=self.SizeBase), scale=0.85) atk_label = hs_style_label(str(self._c_get('attack')), pos(-0.78, -0.8, base=self.SizeBase), anchor_y='center', font_size=64) health_sprite = Sprite('WeaponHealth.png', pos(0.82, -0.83, base=self.SizeBase), scale=0.85) health_label = hs_style_label(str(self._c_get('health')), pos(0.83, -0.8, base=self.SizeBase), anchor_y='center', font_size=64) desc_label.element.color = Colors['white'] self.front_sprites.update({ 'attack-sprite': [atk_sprite, 2], 'attack-label': [atk_label, 3], 'health-sprite': [health_sprite, 2], 'health-label': [health_label, 3], }) elif self._c_get('type') == Type.HeroCard: armor_sprite = Sprite('HeroArmor.png', pos(0.85, -0.86, base=self.SizeBase), scale=1.08) armor_label = hs_style_label(str(self._c_get('armor')), pos(0.85, -0.86, base=self.SizeBase), anchor_y='center', font_size=64) self.front_sprites.update({ 'armor-sprite': [armor_sprite, 2], 'armor-label': [armor_label, 3], })
def __init__(self): super(Editor, self).__init__() label = Label('关卡编辑器', position=(0, 0)) label2 = Label('按S键保存', position=(100, 0)) play_label = Label('P键开始游戏', position=(270, 0)) self.block_select = [] # self.block_select_white.sprite.position = (300, 50) # self.block_select_blue.sprite.position = (400, 50) self.new_level_label = Label('新建关卡', position=(20, 50)) self.delete_level_label = Label('删除当前关卡', position=(100, 50)) self.saveflag = Label('未保存', position=(200, 0)) self.edit_level = Label('当前编辑关卡: ', position=(400, 0)) self.yes_label = Label('是', position=(220, 50)) self.no_label = Label('否', position=(250, 50)) self.yes_label.visible = False self.no_label.visible = False # 编辑区属性 self.editor_bottom = 250 self.editor_top = 450 self.editor_left = 0 self.editor_right = 640 # 以下两个标签用于提示用户编辑窗的位置 buttom = self.editor_bottom - 1 top = self.editor_top + 1 line1 = Sprite('images/line.png', position=(0, buttom), anchor=(0, 0)) line2 = Sprite('images/line.png', position=(0, top), anchor=(0, 0)) self.add(label) self.add(label2) self.add(play_label) self.add(self.saveflag) self.add(line1) self.add(line2) self.add(self.edit_level) self.add(self.new_level_label) self.add(self.delete_level_label) self.add(self.yes_label) self.add(self.no_label) # 鼠标按下标志和坐标 self.mouse_press_left = False self.mouse_press_right = False self.mouse_x = 0 self.mouse_y = 0 # 砖块的生命 self.block_live = 0 # 生成砖块选择 self.create_block_select() # 生成砖块可以添加的位置 self.recttmp = [] self.create_grid() # 存储砖块属性 # self.props = [] # 存储bloks self.blocks = [] # 存储关卡选择 self.save_as = 1 self.page = 1 self.page_count = 1 self.page_is_pressing = False self.delete_is_press = False self.level_select = [] self.level_select_position = [] self.page_select = [] self.create_level_select() self.create_page_select() self.reset_blocks() self.schedule(self.update)
def __init__(self): super().__init__() bg = Sprite("res/keyboard/HorrorBack.png") bg.position = bg.width // 2, bg.height // 2 self.add(bg) manage = Label("Загальні", font_name='Roboto', font_size=30, bold=True, color=(10, 165, 85, 255)) manage.position = (60, 560) self.add(manage) # ESC ========================================================== key_ESC = Sprite('res/keyboard/key_ESC.png') key_ESC.position = (30, 510) self.add(key_ESC) esc = Label("Вихід/Назад", font_name='Roboto', font_size=20, bold=True, color=(10, 165, 85, 255)) esc.position = (60, 500) self.add(esc) # Pause ======================================================== key_P = Sprite('res/keyboard/key_P.png') key_P.position = (30, 450) self.add(key_P) p = Label("Пауза", font_name='Roboto', font_size=20, bold=True, color=(10, 165, 85, 255)) p.position = (60, 440) self.add(p) # Mute ========================================================= key_M = Sprite('res/keyboard/key_M.png') key_M.position = (30, 390) self.add(key_M) m = Label("Вимкнути/Увімкнути звук", font_name='Roboto', font_size=20, bold=True, color=(10, 165, 85, 255)) m.position = (60, 380) self.add(m) #=============================================================== movement = Label("Дії", font_name='Roboto', font_size=30, bold=True, color=(200, 150, 80, 255)) movement.position = (650, 560) self.add(movement) # Move Right =================================================== right_arrow = Sprite('res/keyboard/right_arrow.png') right_arrow.position = (580, 510) self.add(right_arrow) r_a = Label("Рух вправо", font_name='Roboto', font_size=20, bold=True, color=(220, 150, 80, 255)) r_a.position = (620, 505) self.add(r_a) # Move Left ==================================================== left_arrow = Sprite('res/keyboard/left_arrow.png') left_arrow.position = (580, 450) self.add(left_arrow) l_a = Label("Рух вліво", font_name='Roboto', font_size=20, bold=True, color=(220, 150, 80, 255)) l_a.position = (620, 445) self.add(l_a) # Jump ========================================================= key_B = Sprite('res/keyboard/key_B.png') key_B.position = (580, 390) self.add(key_B) b = Label("Блок", font_name='Roboto', font_size=20, bold=True, color=(220, 150, 80, 255)) b.position = (620, 380) self.add(b) #============================================================== attack = Label("Атака", font_name='Roboto', font_size=30, bold=True, color=(255, 65, 65, 255)) attack.position = (360, 270) self.add(attack) # Attack_1====================================================== key_Z = Sprite('res/keyboard/key_Z.png') key_Z.position = (170, 220) self.add(key_Z) a1 = Label("Атака мечем (Доступно на 1 рівні)", font_name='Roboto', font_size=20, bold=True, color=(255, 65, 65, 255)) a1.position = (200, 215) self.add(a1) # Attack_2====================================================== key_X = Sprite('res/keyboard/key_X.png') key_X.position = (170, 160) self.add(key_X) a2 = Label("Атака мечем (Доступно на 2 рівні)", font_name='Roboto', font_size=20, bold=True, color=(255, 65, 65, 255)) a2.position = (200, 155) self.add(a2) # Attack_3====================================================== key_C = Sprite('res/keyboard/key_C.png') key_C.position = (170, 100) self.add(key_C) a3 = Label("Атака мечем (Доступно на 3 рівні)", font_name='Roboto', font_size=20, bold=True, color=(255, 65, 65, 255)) a3.position = (200, 95) self.add(a3)
class Behavior(object): """A behavior defines the virtual part of a tracked object. A behavior can interact with its environment through 5 entry points that can be overridden : update_tracking -- New data arrives from the tracking subsystem. update -- Update the internal state. draw_background -- Draw the background part in 2D. draw_3d -- Draw the 3D part. draw_foreground -- Draw the foreground part in 2D.""" def __init__(self): """Initialize an empty behavior.""" super(Behavior, self).__init__ self.display_name = None self.display_name_cached = None self.display_name_label = Label("", font_size=8, font_name="Cabin Bold", anchor_x="center", anchor_y="bottom", color=(255, 255, 255, 255)) self.object = None self.observers = collections.defaultdict(list) self.attributes = collections.defaultdict(BehaviorAttribute) self.association = None self.association_selection = None self.association_selection_shaker = ShakeRecognizer.ShakeRecognizer() self.association_name = "Associate" self.association_mode = False def init_attribute(self, name, display_name, range, option_name, default_value, formatter=None): self.attributes[name].display_name = display_name self.attributes[name].range = range if formatter: self.attributes[name].formatter = formatter self.attributes[name].set( director.app.options.setdefault(option_name, default_value)) def max_association_selection_time(self): return director.app.options.setdefault( 'max_association_selection_time', 2) def register_for(self, notification, observer): """Register for a notification type as an observer.""" if not observer in self.observers[notification]: self.observers[notification].append(observer) def unregister_from(self, notification, observer): """Stop observing a notification type.""" try: self.observers[notification].remove(observer) except ValueError: pass def notify_for(self, notification, *args): """Notify observers for something.""" for observer in self.observers[notification]: observer.notification_arrived_for(notification, self, *args) def notification_arrived_for(self, notification, sender, *args): """Handle new notifications.""" if notification == "detached": self.behavior_detached(sender, *args) def behavior_detached(self, sender, *args): """Handle a 'detached' notification.""" if self.association == sender: self.unassociate() def will_detach(self, object): self.object = None self.notify_for("detached") self.has_just_detached() def did_attach(self, object): self.object = object self.has_just_attached(object) def associate(self, behavior): """Start an unilateral association from this behavior to a specified behavior.""" if self.association: unassociate() self.association = behavior behavior.register_for("detached", self) return True def unassociate(self): """Stop being associated with the current associated behavior, if any.""" if not self.association: return self.association.unregister_from("detached", self) self.association = None def has_just_attached(self, object): """Do something when the behavior will cease to be attached to a tracked object.""" pass def has_just_detached(self): """Do something when the behavior will attach to a tracked object.""" pass def has_object(self): """Tell if the behavior is attached to a tracked object.""" return self.object != None def draw_association(self): """Draw a line between the associated behavior's object and this behavior's object.""" if not self.association: return me_color = self.object.color + (0.5 * self.object.alpha(), ) ass_color = self.association.object.color + ( 0.5 * self.association.object.alpha(), ) mecoords, asscoords = self.object.screen_coords( ), self.association.object.screen_coords() glLineWidth(3) glBegin(GL_LINES) glColor4f(*me_color) glVertex2f(mecoords.x, mecoords.y) glColor4f(*ass_color) glVertex2f(asscoords.x, asscoords.y) glEnd() glLineWidth(1) def update_tracking(self): pass def update(self): if not self.association_mode: return new_selection = None min_distance = sys.float_info.max for id in director.app.objects: current = director.app.objects[id] dist = current.translation.distance(self.object.translation) if current != self.object and not current.is_zombie( ) and dist < min_distance: min_distance = dist new_selection = current if self.association_selection != new_selection: # The selection has changed. self.association_selection = new_selection self.association_selection_shaker.reset() else: if self.association_selection and self.association_selection_shaker.update( self.object.raw_translation): # Associate the selection self.association_mode = False self.associate(self.association_selection.behavior) self.association_selection = None def draw_background(self): self.draw_association() if self.display_name != self.display_name_cached: self.display_name_label.element.text = self.display_name self.display_name_cached = self.display_name if self.display_name: self.display_name_label.element.color = (255, 255, 255, int(self.object.alpha() * 255)) coords = self.object.screen_coords() self.display_name_label.position = coords.x, coords.y + 10 self.display_name_label.draw() def draw_3d(self): if self.association_mode and self.association_selection: self.association_selection.model_view_matrix.load_gl() Graphics2d.draw_rect(-1.5, -1.5, 3, 3, (0.0, 0.0, 0.0, self.object.alpha()), filled=False, line_width=2) Graphics2d.draw_rect(-1.5, -1.5, 3, 3, self.object.color + (self.object.alpha() * 0.4, ), filled=True) self.object.model_view_matrix.load_gl() def draw_foreground(self): pass
def __init__(self): super(Score, self).__init__() self.score = Label('score:', font_size=20, color=(255,255,255,255)) self.position = (580, 530) self.score.position = (0,0) self.add(self.score)
else: selector = 1 collider_cls = [RectMapCollider, RectMapWithPropsCollider][selector] director.init() tile_filled = Tile('z', {}, pyglet.image.load('white4x3.png')) maps_cache = aux.generate_maps(tile_filled) cases = [ d for d in aux.case_generator( aux.first_expansion(maps_cache, aux.common_base_cases)) ] model = Model(cases) scene = cocos.scene.Scene() label = Label("-----------------", anchor_x='center', anchor_y='center', color=(255, 255, 255, 160)) label.position = 320, 20 scene.add(label, z=10) model.label = label scroller = ScrollingManager() model.scroller = scroller scroller.scale = 8.0 scene.add(scroller, z=1) controller = ControllerLayer() controller.model = model scene.add(controller) director.run(scene)
def _load_label_gen(self, obj_name): x = self.optimal_width * self.button_positions[obj_name]["X"] + self.left_margin y = self.optimal_height * self.button_positions[obj_name]["Y"] + self.bottom_margin fsize = round(self.optimal_scale * self.button_positions[obj_name]["fsize"]) return Label("---", (x, y), color=(210,200,128,255), font_name="Arial", bold=True, font_size=fsize, anchor_x="left", anchor_y="center")
def __init__(self): super(YouWin, self).__init__(0, 0, 0, 255) youwin = Label("You Win!!!", font_size=50, anchor_x="center", anchor_y="center") youwin.position = self.width // 2, self.height // 2 self.add(youwin) clock.schedule_once(self.finishScreen, 3)
def __init__(self): super(Layer1, self).__init__(155, 89, 182, 1000) text = Label("This is the first scene") text.position = director._window_virtual_width / 2, director._window_virtual_height / 2 self.add(text)
def win_display(self, dt): youwin = Label("Level 2 Complete - You reached the Zaxzium Pool", font_name="Calibri", font_size=30, anchor_x="center", anchor_y="center") youwin.position = director.get_window_size()[0]//2, director.get_window_size()[1]//2 self.add(youwin) clock.schedule_once(self.endGame, 3)
def _load_trade_boxes(self): self.remove_trade_boxes() if self.trade_display: self._load_button_gen("button", "drop", events.emit_commerce_switch_trade_dump, "button_switch", 0, 1, 0.95) for item in self.items_for_trade: trade_bracket = Sprite( self.gallery.content["item"][self.config.conf_items[ self.items_for_trade[item]["item_id"]].display_image + "_t"]) trade_bracket.image_anchor = 0, 0 trade_bracket.scale = self.optimal_scale trade_bracket.x = self.optimal_width * self.button_positions[ "sprite_trade_bracket" + str(item)]["X"] trade_bracket.y = self.optimal_height * self.button_positions[ "sprite_trade_bracket" + str(item)]["Y"] self.add(trade_bracket, name="trade_bracket" + str(item)) label_item_name = Label( self.config.conf_items[self.items_for_trade[item] ["item_id"]].item_name, (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.138), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.152)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=16 * self.optimal_scale, anchor_x="center", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_name" + str(item)) label_item_name = Label( self.config.conf_items[self.items_for_trade[item] ["item_id"]].storage, (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.130)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_storage" + str(item)) label_item_name = Label( " ", (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.104)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_supply" + str(item)) label_item_name = Label( " ", (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.078)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_demand" + str(item)) label_item_name = Label( "Price: " + str(self.items_for_trade[item]["price"]), (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.052)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_price" + str(item)) label_item_name = Label( " ", (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.026)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_hold" + str(item)) #if (self.items_for_trade[item]["sell_units"] > 0): self._load_button_gen("button", "plus", events.emit_item_buy, "button_buy" + str(item), item, 0.72, 0.95) #if (self.items_for_trade[item]["buy_units"] > 0): self._load_button_gen("button", "minus", events.emit_item_sell, "button_sell" + str(item), item, 0.72, 0.95) else: self._load_button_gen("button", "trade", events.emit_commerce_switch_trade_dump, "button_switch", 0, 1, 0.95) for item in self.items_for_dump: trade_bracket = Sprite( self.gallery.content["item"][self.config.conf_items[ self.items_for_dump[item]["item_id"]].display_image + "_t"]) trade_bracket.image_anchor = 0, 0 trade_bracket.scale = self.optimal_scale trade_bracket.x = self.optimal_width * self.button_positions[ "sprite_trade_bracket" + str(item)]["X"] trade_bracket.y = self.optimal_height * self.button_positions[ "sprite_trade_bracket" + str(item)]["Y"] self.add(trade_bracket, name="trade_bracket" + str(item)) label_item_name = Label( self.config.conf_items[self.items_for_dump[item] ["item_id"]].item_name, (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.138), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.152)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=16 * self.optimal_scale, anchor_x="center", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_name" + str(item)) label_item_name = Label( self.config.conf_items[self.items_for_dump[item] ["item_id"]].storage, (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.130)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_storage" + str(item)) label_item_name = Label( " ", (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.104)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add( label_item_name, name="button_buy" + str(item)) #just to have an object with the name to remove self.add(label_item_name, name="trade_bracket_item_hold" + str(item)) label_item_name = Label( " ", (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.078)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_demand" + str(item)) label_item_name = Label( " ", (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.052)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_price" + str(item)) label_item_name = Label( " ", (self.optimal_width * (self.button_positions["sprite_trade_bracket" + str(item)]["X"] + 0.088), self.optimal_height * (self.button_positions["sprite_trade_bracket" + str(item)]["Y"] + 0.026)), color=(0, 0, 0, 255), font_name="Arial", bold=True, font_size=14 * self.optimal_scale, anchor_x="left", anchor_y="center") self.add(label_item_name, name="trade_bracket_item_supply" + str(item)) self._load_button_gen("button", "minus", events.emit_item_sell, "button_sell" + str(item), item, 0.72, 0.95) self.update_desc()
def __init__(self): super().__init__(0, 0, 0, 0) self.fuelbar = Label("Fuel: 100", anchor_x="center", anchor_y="center", font_name="Calibri", font_size=20) self.fuelbar.position = 900, 550 self.add(self.fuelbar)
def __init__(self): super(AboutLayer, self).__init__() cprght = Label('Game Developed by Jean-Guillaume Louis - 2012') self.add(cprght)
def step(self, dt): global win rover = self.target if rover.dead: return if rover.fuel >= 1000: rover.fuel = 1000 if rover.fuel <= 0: rover.fuel = 0 fueldisplaylayer.fuelbar.element.text = "Fuel: " + str(int(rover.fuel // 10)) fueldisplaylayer.fuelbar.draw() for fuel in fuels: if collision([rover.x, rover.y, rover.width, rover.height], [fuel.x, fuel.y, fuel.width, fuel.height]): rover.fuel += 200 fuellayer.remove(fuel) fuels.remove(fuel) del fuel return collisions = [ collision([rover.x, rover.y, rover.width, rover.height], [rock.x, rock.y, rock.width, rock.height]) for rock in rocks] if any(collisions): rover.velocity = (0, 0) youlose = Label("You Crashed", font_name="Calibri", font_size=80, anchor_x="center", anchor_y="center") youlose.position = (500, rover.position[1] + 300) rover.layer.add(youlose) rover.image = pyglet.resource.image("crashedrover.png") scroller1.set_focus(rover.x, rover.y + 200) rover.dead = True clock.schedule_once(crash, 2, rover) super().step(dt) if rover.fuel <= 0: rover.velocity = (0, 0) scroller1.set_focus(rover.x, rover.y + 200) youlose = Label("You Ran out of Fuel", font_name="Calibri", font_size=40, anchor_x="center", anchor_y="center") youlose.position = (500, rover.position[1] + 300) rover.layer.add(youlose) rover.dead = True clock.schedule_once(fuelLose, 2, rover) elif rover.x < 43: rover.x = 43 rover.velocity = (0, rover.velocity[1]) rover.fuel -= 1.2 scroller1.set_focus(rover.x, rover.y + 200) return elif rover.x > 1000 - 43: rover.x = 1000 - 43 rover.velocity = (0, rover.velocity[1]) rover.fuel -= 1.2 scroller1.set_focus(rover.x, rover.y + 200) return elif rover.y > 16800 and not win: rover.y = 16801 rover.velocity = (0, 0) scroller1.set_focus(rover.x, rover.y + 500) youwin = Label("Level 1 Complete - You reached the Kriptanium Mine", font_name="Calibri", font_size=30, anchor_x="center", anchor_y="center") youwin.position = (500, rover.position[1] + 300) rover.layer.add(youwin) win = True clock.schedule_once(lvl1win, 2, rover) return else: rover.velocity = ((keyboard[key.RIGHT] - keyboard[key.LEFT]) * 500, 500 + (int(keyboard[key.UP]) * 2 - int(keyboard[key.DOWN])) * 100) rover.fuel -= 1.2 scroller1.set_focus(rover.x, rover.y + 200)
def __init__(self): super(GameScreen, self).__init__(0xBF907A, 0x806052, 0xFFC0A3, 0x403029) # Placeholders self.answer = "0" self.question = None # Initialize game self.game = Game( game_engine=GameEngine.BuildGameEngineFromStatesAndTransitions( GAME_STATES_FILENAME, GAME_TRANSITIONS_FILENAME), player_name=playerName, difficulty_level=difficultyLevel) # Create required labels. self.timer_label = Label("00", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.question_label = Label("Question Text", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.answer_label = Label("Answer Text", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.score_board_label = Label("Score: ", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.instruction_label = Label("Press Enter to submit answer!", font_name="Times New Roman", font_size=32, anchor_x='center', anchor_y='center') self.timer_label.position = ( director._window_virtual_width / 10) * 9, director._window_virtual_height / 10 self.question_label.position = director._window_virtual_width / 2, director._window_virtual_height / 2 self.answer_label.position = director._window_virtual_width / 2, director._window_virtual_height / 2 - 50 self.score_board_label.position = director._window_virtual_width / 10, director._window_virtual_height / 10 self.instruction_label.position = director._window_virtual_width / 2, ( director._window_virtual_height / 10) * 9 self.add(self.instruction_label) self.add(self.timer_label) self.add(self.question_label) self.add(self.score_board_label) self.add(self.answer_label) self.display_question()
def build(self, width, height): self.width, self.height = width, height self.x, self.y = (director.window.width - width) // 2, (director.window.height - height) // 2 title_label = Label(self.popup_ctrl.title, font_name='Calibri', color=rgba_colors["black"], font_size=23, anchor_x='center', anchor_y='center') title_label.x = width // 2 title_label.y = height - 50 self.add(title_label) message_label = Label(self.popup_ctrl.message, font_name='Calibri', color=rgba_colors["black"], font_size=16, anchor_x='center', anchor_y='center') message_label.x = width // 2 message_label.y = height - 100 self.add(message_label) for i, button in enumerate(self.popup_ctrl.buttons): padding = 20 button_container = ColorLayer(*rgba_colors["popup_button_background"], width=(width - padding) // len(self.popup_ctrl.buttons) - padding, height=40) button_container.position = padding * (i + 1) + button_container.width * i, 30 self.add(button_container) self.buttons_container.append(button_container) button_text = Label(button.text, font_name='Calibri', color=rgba_colors["white"], font_size=18, anchor_x='center', anchor_y='center') button_text.position = button_container.x + button_container.width / 2, button_container.y + button_container.height / 2 + 3 self.add(button_text) director.window.push_handlers(self.popup_ctrl)