def __init__(self, scene): spyral.Sprite.__init__(self, scene) self.ESTADO = "bigbang" self.image = spyral.Image(size=(1, 1)) self.pos = (-1, -1) self.offset = (0, 0) self.offset_anim = spyral.Animation("offset", spyral.easing.Arc((0,0), 50), duration=5) + \ spyral.Animation("offset", spyral.easing.LinearTuple((50,0),(0,0)), duration=1) self.offset_anim.property = "offset" spyral.event.register("TimeMaster.offset.animation.end", self.endhandler)
def __init__(self, scene, coord): super(Hoop, self).__init__() self.scene = scene self.is_target = False hoop_image = spyral.Image(filename="basketball_images/hoop.png") self.image = hoop_image self.x_coord = coord[0] self.y_coord = coord[1] self.anchor = "center" self.x = (self.x_coord / NUM_X_POINTS) * COORD_WIDTH + PAD_LEFT self.y = HEIGHT - ((self.y_coord / NUM_Y_POINTS) * COORD_HEIGHT) - PAD_BOTTOM
def __init__(self): spyral.Scene.__init__(self, SIZE) self.clock.max_ups = 60. bg = spyral.Image(size=SIZE) bg.fill(BG_COLOR) self.background = bg self.counter = DumbObject() def add_new_box(): StupidSprite(self) add_new_box() spyral.event.register('system.quit', spyral.director.quit) spyral.event.register('input.keyboard.down', add_new_box)
def set_text(self, text): self._text = text ancho_promedio = self.font.get_size("X")[0] caracteres = (self.width - 2 * self.margen) / ancho_promedio lineas = wrap(text, caracteres).splitlines() altura = len(lineas) * self.line_height bloque = spyral.Image(size=(self.width, altura)) ln = 0 for linea in lineas: bloque.draw_image(image=self.font.render(linea), position=(0, ln * self.line_height), anchor="midtop") ln = ln + 1 return bloque
def __init__(self, scene, text, x, y, w, h): super(MultilineText, self).__init__(scene) self.image = spyral.Image(size=(w,h)) font_path = "fonts/LiberationSans-Regular.ttf" self.font = spyral.Font(font_path, 24, FG_COLOR) self.line_height = self.font.linesize self.anchor = 'center' self.x = x self.y = y self.w = w self.h = h self.image = self.render_text(text) self.text = text
def update(self, intentos): if intentos >= 6: self.image = spyral.Image(filename="images/Hangman-0.png") elif intentos == 5: self.image = spyral.Image(filename="images/Hangman-1.png") elif intentos == 4: self.image = spyral.Image(filename="images/Hangman-2.png") elif intentos == 3: self.image = spyral.Image(filename="images/Hangman-3.png") elif intentos == 2: self.image = spyral.Image(filename="images/Hangman-4.png") elif intentos == 1: self.image = spyral.Image(filename="images/Hangman-5.png") self.image = spyral.Image(filename="images/Hangman-6.png") self.image.scale((512, 512))
def __init__(self, scene): spyral.Sprite.__init__(self, scene) self.image = spyral.Image("images/etoys-car.png") self.vel = 100 self.scale = 1 self.x, self.y = 100, 100 self.anchor = "midbottom" self.estado = "quieto" self.movimiento = spyral.Vec2D(0, 0) spyral.event.register("director.render", self.seguir_raton, scene=scene) spyral.event.register("director.pre_render", self.determinar_estado, scene=scene)
def renderGuess(self, correct): right = 0 if self.oper == "+": right = self.num1 + self.num2 if self.oper == "-": right = self.num1 - self.num2 self.image = spyral.Image(size=[300, 30]) self.anchor = 'center' font = pygame.font.SysFont(None, 40) color = [255, 0, 0, 255] if correct: color = [0, 255, 0, 255] surf = font.render( self.num1.__str__() + " " + self.oper + " " + self.num2.__str__() + " = " + right.__str__(), True, color) self.image._surf.blit( surf, [150 - surf.get_width() * .5, 15 - surf.get_height() * .5])
def __init__(self, scene): spyral.Sprite.__init__(self, scene) self.image = spyral.Image(filename="images/love-shield.png") self.layer = "frente" self.yay = pygame.mixer.Sound('sounds/heal.ogg') self.pos = (scene.width + 2, random.randint(60, scene.height - self.height)) self.timer = 0 self.freq = random.random() * 2 self.duration = random.random() * 2 + 4 self.estado = "normal" spyral.event.register("director.update", self.chequea) #spyral.event.register ("Premio.pos.animation.end", self.desaparecer) spyral.event.register("Comodo.muere", self.fin)
def intro5(self): spyral.event.unregister("Jugador.demora.animation.end", self.intro5) a = spyral.Animation("y", spyral.easing.Linear(self.scene.height, 0), duration=4) self.camino.animate(a) img = spyral.Image(filename=gamedir( "images/Peru_Machu_Picchu_Sunrise.jpg")).scale(self.scene.size) self.v = Visualizador(self) self.v.reset("Press space to begin.", loop=True) n = pygame.Surface.convert_alpha(img._surf) # red at 50% n.fill((255, 0, 0, 127)) img._surf.blit(n, (0, 0)) self.scene.background = img self.j.set_deambular()
def __init__(self, scene, size_factor): ''' # @TODO: ''' super(Ball, self).__init__() self.scene = scene self.ball_speed_up = -900 self.ball_speed_fast = 500 self.ball_speed_slow = 150 self.ball_slow_range = 50 self.hangtime = 80 self.image = spyral.Image(filename="basketball_images/basketball.png") self.vel_y = 0; self.anchor = "center"
def __init__(self, menuScene, SIZE, filename): spyral.Scene.__init__(self, SIZE) self.background = spyral.Image(size=SIZE).fill((25, 150, 25)) self.menuScene = menuScene self.sceneSize = SIZE self.levelWidth = 20 self.levelHeight = 20 self.currentLevel = 1 self.goalAmount = 3 self.startLength = 1 self.levelData = self.CreateLevel(SIZE, filename) #create the text on the top of the screen that informs the player the length the snake needs #to be in order to progress to the next level self.hudGoalText = spyral.Sprite(self.parent) self.hudGoalStatus = spyral.Sprite(self.parent) self.text = spyral.Font("game/fonts/DejaVuSans.ttf", 22, (255, 255, 255)) self.hudGoalText.image = self.text.render( "The snake needs to be " + str(self.goalAmount) + " pieces long to go to the next level!") self.hudGoalText.x = SIZE[0] / 2 self.hudGoalText.y = self.text.get_size("X").y self.hudGoalText.anchor = 'center' #create snake player object self.player = snake.Snake(self, (2, self.levelWidth / 2)) spyral.event.register("input.keyboard.down.*", self.handleKeyboard, scene=self) self.hudGoalStatus.image = self.text.render( "The snake is currently " + str(self.player.bodyLength) + " pieces long!") self.hudGoalStatus.x = SIZE[0] / 2 self.hudGoalStatus.y = self.text.get_size("X").y * 2.1 self.hudGoalStatus.anchor = 'center'
def get_hoops(scene): hoops = [] hoop_posns = [] num_hoops = 7 for i in range(num_hoops): temp_coord = (random.choice(range(int(NUM_X_POINTS + 1))), random.choice(range(int(NUM_Y_POINTS + 1)))) while temp_coord in hoop_posns: temp_coord = (random.choice(range(int(NUM_X_POINTS + 1))), random.choice(range(int(NUM_Y_POINTS + 1)))) hoops.append(Hoop(scene, temp_coord)) hoop_posns.append(temp_coord) target_hoop = random.choice(range(num_hoops)) new_hoop_image = spyral.Image(filename="basketball_images/target_hoop.png") hoops[target_hoop].image = new_hoop_image hoops[target_hoop].is_target = True return hoops
def __init__(self): spyral.Scene.__init__(self, SIZE) self.background = spyral.Image(size=SIZE).fill((255, 255, 255)) text = GuidedText(self, "DejaVuSans.ttf", "ABCDEFGHIJKLM", self.height * 1. / 8) text = GuidedText(self, "DejaVuSans.ttf", "NOPQRSTUVWXYZ", self.height * 2. / 8) text = GuidedText(self, "DejaVuSans.ttf", "abcdefghijklm", self.height * 3. / 8) text = GuidedText(self, "DejaVuSans.ttf", "nopqrstuvwxyz", self.height * 4. / 8) text = GuidedText(self, "DejaVuSans.ttf", "1234567890-=,", self.height * 5. / 8) text = GuidedText(self, "DejaVuSans.ttf", "!@#$%^&*()_+<", self.height * 6. / 8) text = GuidedText(self, "DejaVuSans.ttf", ".>/?;:'\"[{]}|\\~`", self.height * 7. / 8) spyral.event.register("system.quit", spyral.director.quit)
def __stylize__(self, properties): """ The __stylize__ function is called during initialization to set up properties taken from a style function. Sprites that want to override default styling behavior should implement this class, although that should rarely be necessary. """ if 'image' in properties: image = properties.pop('image') if isinstance(image, str): image = spyral.Image(image) setattr(self, 'image', image) simple = ['pos', 'x', 'y', 'position', 'anchor', 'layer', 'visible', 'scale', 'scale_x', 'scale_y', 'flip_x', 'flip_y', 'angle', 'mask'] for property in simple: if property in properties: value = properties.pop(property) setattr(self, property, value) if len(properties) > 0: spyral.exceptions.unused_style_warning(self, properties.iterkeys())
def __init__(self, scene, texto): spyral.Sprite.__init__(self, scene) self.anchor = 'center' self.pos = spyral.Vec2D(scene.size) / 2 self.margen = 5 self.layer = "primer" self.image = spyral.Image(filename=gamedir("images/Menu_2.png")) #self.image.draw_rect(color=(128,128,128), # position=(0,0), size=(self.height,self.width)) font_path = gamedir("../fonts/DejaVuSans.ttf") self.font = spyral.Font(font_path, 24, (0, 0, 0)) self.line_height = self.font.linesize nueva = self.set_text(texto) self.image.draw_image(nueva, position=(self.margen / 2, 0), anchor="midleft") self.scale = 1.3
def __init__(self, scene): spyral.Sprite.__init__(self, scene) self.image = spyral.Image(filename="images/comodo.png") self.layer = "frente" self.pos = (0, scene.height - self.height) self.estado = "normal" self.cajita = spyral.Rect(0, 60, scene.width - self.width, scene.height - self.height) self.vida = 100 spyral.event.register("input.keyboard.down.space", self.salto) spyral.event.register("input.keyboard.down.up", self.salto) spyral.event.register("Comodo.y.animation.end", self.fin_salto) spyral.event.register("Comodo.muere", self.muere) spyral.event.register("director.update", self.chequea) pygame.mixer.init() pygame.mixer.music.load("sounds/Harp.ogg") pygame.mixer.music.play(-1) self.flap = pygame.mixer.Sound('sounds/bird_flap.ogg')
def __init__(self, SIZE=None, activity=None, *args, **kwargs): spyral.Scene.__init__(self, SIZE) self.background = spyral.Image(size=self.size).fill((255, 255, 255)) self.title = spyral.Sprite(self) self.title.image = spyral.Font("fonts/SFDigitalReadout-Medium.ttf", 105).render("Consenso en 8-bits") self.title.anchor = "midbottom" self.title.pos = spyral.Vec2D(self.size) / 2 #anim = spyral.Animation("visible", spyral.easing.Iterate([True,False]), duration=0.5, loop=True) #self.title.animate(anim) self.subtitle = spyral.Sprite(self) self.subtitle.image = spyral.Font("fonts/SFDigitalReadout-Medium.ttf", 75).render("presiona espacio") self.subtitle.anchor = "midtop" self.subtitle.pos = spyral.Vec2D(self.size) / 2 self.player = Carrito(self, 1) self.player.pos = 150, 150 self.player.vel = 30 self.player.scale = 3 self.player = Carrito(self, 2) self.player.pos = self.width - 150, self.height - 150 self.player.vel = 30 self.player.scale = 3 self.angle = math.pi self.interruptores = [] spyral.event.register("input.keyboard.down.space", self.continuar) spyral.event.register("input.keyboard.down.*", self.mostrar) spyral.event.register("system.quit", spyral.director.pop) if activity: activity.box.next_page() activity._pygamecanvas.grab_focus() activity.window.set_cursor(None) self.activity = activity
def __init__(self, scene, text, style=None): spyral.Sprite.__init__(self, scene) font_path = "fonts/LiberationSans-Regular.ttf" if style=="title": self.font = spyral.Font(font_path, 48, (0,0,0)) elif style=="small": self.font = spyral.Font(font_path, 16, (0,0,0)) else: self.font = spyral.Font(font_path, 24, (0,0,0)) self.line_height = self.font.linesize self.margen = 30 text_width = self.font.get_size(text)[0] ancho_promedio = self.font.get_size("X")[0] caracteres = (scene.width - 2 * self.margen) / ancho_promedio self.lineas = self.wrap(text, caracteres).splitlines() self.altura = len(self.lineas) * self.line_height self.image = spyral.Image(size = (scene.width, self.altura)).fill((255,255,255)) self.image = self.render_text(text)
def __init__(self, scene, side): spyral.Sprite.__init__(self, scene) self.image = spyral.Image(size=(20, 300)).fill((255, 255, 255)) if side == 'left': self.anchor = 'midleft' self.x = 20 else: self.anchor = 'midright' self.x = WIDTH - 20 self.y = HEIGHT / 2 self.side = side self.moving = False up = 'w' if self.side == 'left' else "up" down = 's' if self.side == 'left' else "down" spyral.event.register("input.keyboard.down." + up, self.move_up) spyral.event.register("input.keyboard.down." + down, self.move_down) spyral.event.register("input.keyboard.up." + up, self.stop_move) spyral.event.register("input.keyboard.up." + down, self.stop_move) spyral.event.register("director.update", self.update) spyral.event.register("pong_score", self._reset)
def __init__(self, scene, PALABRA="The Chakana Cross", ARCHIVO=None): # spritesheet color: yellow, green, orange, blue, brown spyral.Sprite.__init__(self, scene) self.layer = "arriba" self.PALABRA = PALABRA self.ARCHIVO = ARCHIVO self.font = spyral.Font(font_path, 28, (0, 0, 0)) self.line_height = self.font.linesize self.mode = "TARJETA" self.anchor = "center" self.margin = 15 self.marco = spyral.Image(filename=gamedir("imagenes/marco_1.png")) self.image = self.marco #self.scale = 1.2 self.pos = spyral.Vec2D(scene.size) / 2 self.showself()
def __init__(self, activity=None, *args, **kwargs): global SIZE, WIDTH, HEIGHT pantalla = pygame.display.get_surface() SIZE = pantalla.get_size() WIDTH = SIZE[0] HEIGHT = SIZE[1] spyral.Scene.__init__(self, SIZE) self.background = spyral.Image(size=SIZE).fill(BG_COLOR) self.ball = Ball(self) self.left_paddle = Paddle(self, 'left') self.right_paddle = Paddle(self, 'right') spyral.event.register("system.quit", spyral.director.pop) spyral.event.register("director.update", self.update) spyral.event.register("input.keyboard.down.q", spyral.director.pop) if activity: activity.box.next_page() activity._pygamecanvas.grab_focus() activity.window.set_cursor(None) self.activity = activity
def __init__(self): super(GarageScene, self).__init__(SIZE) spyral.event.register('input.keyboard.down.esc', spyral.director.quit) spyral.event.register("system.quit", spyral.director.quit) self.background = spyral.Image("images/Background.png") CarGarage = Garage(self) CarGarage.pos = ((WIDTH / 2), (HEIGHT / 2) - 100) #Creates a back button to go back to the Main Menu class RegisterForm(spyral.Form): BackButton = spyral.widgets.Button("Go Back") self.my_form = RegisterForm(self) self.my_form.focus() self.my_form.BackButton.pos = ((WIDTH / 2) - 50, (HEIGHT / 2) + 300) spyral.event.register("form.RegisterForm.BackButton.clicked", self.goToMenu)
def __init__(self, SIZE, player): spyral.Scene.__init__(self, SIZE) self.background = spyral.Image(size=self.size).fill((255, 255, 255)) if player: self.player = Carrito(self, player) self.player.pos = spyral.Vec2D(self.width / 2, self.height / 3) self.player.vel = 0 self.player.scale = 3 self.interruptores = [] if player == 1: texto = "gana rojo" elif player == 2: texto = "gana verde" self.nota = spyral.Sprite(self) self.nota.image = spyral.Font("fonts/SFDigitalReadout-Medium.ttf", 105).render(texto) self.nota.anchor = "center" self.nota.pos = spyral.Vec2D(self.width / 2, 2 * self.height / 3) else: self.player = spyral.Sprite(self) self.player.image = spyral.Font( "fonts/SFDigitalReadout-Medium.ttf", 55).render("no hay consenso") self.player.anchor = "center" self.player.pos = spyral.Vec2D(self.size) / 2 self.aplauso = pygame.mixer.Sound('sounds/applause.wav') self.aplauso.play() anim = spyral.Animation("scale", spyral.easing.Sine(1), shift=2) self.player.animate(anim + anim + anim + anim + anim) spyral.event.register("Sprite.scale.animation.end", self.continuar) spyral.event.register("Carrito.scale.animation.end", self.continuar) spyral.event.register("system.quit", spyral.director.pop)
def __init__(self, scene, texto, callback): spyral.Sprite.__init__(self, scene) self.anchor = 'center' self.pos = spyral.Vec2D(scene.size) / 2 self.margen = 5 self.layer = "primer" self.image = spyral.Image(filename=gamedir("images/Menu_1.png")) #self.image.draw_rect(color=(128,128,128), # position=(0,0), size=(self.height,self.width)) font_path = gamedir("../fonts/DejaVuSans.ttf") self.font = spyral.Font(font_path, 28, (0, 0, 0)) self.line_height = self.font.linesize nueva = self.set_text(texto) self.image.draw_image(nueva, position=(self.margen / 2, -17), anchor="midleft") spyral.event.register("input.mouse.down.left", callback) spyral.event.register("input.keyboard.down.return", self.goplay) spyral.event.register("input.keyboard.down.y", self.goplay)
def __init__(self): Scene.__init__(self) self.camera = self.parent_camera.make_child(SIZE) self.group = spyral.Group(self.camera) self.font = pygame.font.SysFont(None, FONT_SIZE) self.head = Sprite(self.group) self.head.image = spyral.Image(filename=OVEN) self.head.x = 200 self.head.y = 100 instructions = TextSprite(self.group, self.font) instructions.anchor = 'midbottom' instructions.x = 320 instructions.y = 470 instructions.render("s: taste") self.heading = TextSprite(self.group, self.font) self.heading.anchor = 'midbottom' self.heading.x = 330 self.heading.y = 50 self.heading.render("BAKING")
def __init__(self, topic=topic_dir, fake_gtk=False, gameview=False): spyral.Scene.__init__(self, SIZE) reset_vocabulario() self.T = TimeMaster(self) self.layers = ["abajo", "arriba", "primer"] self.puntos = 0 #img = spyral.Image(filename=gamedir( # "imagenes/Crux-20100220.jpg")).scale(self.scene.size) img = spyral.Image(size=(700, 700)) #n = pygame.Surface.convert_alpha(img._surf) #n.fill((64, 0, 0, 127)) #img._surf.blit(n, (0, 0)) self.background = img self.nave = Nave(self, topic) self.campo = CampodeEstrellas(self) self.label = Dialogo(self, "WORD", transparent=True) self.label.visible = False self.label.layer = "primer" self.intro0() spyral.event.register("system.quit", spyral.director.pop, scene=self) pygame.mixer.music.load(gamedir('musica/ObservingTheStar.ogg')) pygame.mixer.music.play(-1) if gameview: Escena.gameview = gameview if fake_gtk: spyral.event.register("director.update", self.gtk_main_iteration)
def __init__(self, *args, **kwargs): super(Pong, self).__init__(*args, **kwargs) self.camera = self.parent_camera.make_child(virtual_size=(WIDTH, HEIGHT)) paddle_image = spyral.Image(size=(20, 300)) paddle_image.fill((255, 255, 255)) # We want to make sure we keep the paddles around, since we'll # work with them for motion and collision detection self.left_paddle = spyral.Sprite() self.left_paddle.image = paddle_image # This anchor means that the x and y coordinates we assign are # relative to the middle left of the image. self.left_paddle.anchor = 'midleft' # We'll keep the paddle just slightly off of the wall self.left_paddle.x = 20 # We'll have the paddle start out vertically centered self.left_paddle.y = HEIGHT / 2 self.right_paddle = spyral.Sprite() self.right_paddle.image = paddle_image self.right_paddle.anchor = 'midright' self.right_paddle.x = WIDTH - 20 self.right_paddle.y = HEIGHT / 2 self.ball = Ball(self) # We have to give our camera to the group so it knows where to draw self.group = spyral.Group(self.camera) # We can add the sprites to the group self.group.add(self.left_paddle, self.right_paddle, self.ball) # We should track whether the paddles are moving up and down self.left_paddle.moving = False self.right_paddle.moving = False
def __init__(self, topic=topic_dir, gameview=False): spyral.Scene.__init__(self, SIZE) reset_vocabulario() self.topic = topic self.make_mapas() img = spyral.Image( filename=gamedir("imagenes/Fazenda_Colorada.jpg")).scale( self.scene.size) #n = pygame.Surface.convert_alpha(img._surf) #n.fill((64, 0, 0, 127)) #img._surf.blit(n, (0, 0)) self.background = img self.puntos = 0 #self.tablero = Tablero(self, topic, mapa=self.mapas[Escena.n]) self.titulo = Title(self) self.intro = Dialogo( self, "Devastated by ignorance, ancient forests have turned into deserts...", self.intro2) spyral.event.register("system.quit", spyral.director.pop, scene=self) spyral.event.register("Tablero.score", self.score) self.puntos = 0 if gameview: Escena.gameview = gameview pygame.mixer.music.load(gamedir('musica/alien_ruins2.ogg')) pygame.mixer.music.play(-1)
def __init__(self, form, name, width, value='', default_value=True, text_length=None, validator=None): self.box_width, self._box_height = 0, 0 BaseWidget.__init__(self, form, name) self.layers = ["base", "content"] child_anchor = (self._padding, self._padding) self._back = spyral.Sprite(self) self._back.layer = "base" self._cursor = spyral.Sprite(self) self._cursor.anchor = child_anchor self._cursor.layer = "content:above" self._text = spyral.Sprite(self) self._text.pos = child_anchor self._text.layer = "content" self._focused = False self._cursor.visible = False self._selection_pos = 0 self._selecting = False self._shift_was_down = False self._mouse_is_down = False self._cursor_time = 0. self._cursor_blink_interval = self._cursor_blink_interval self.default_value = default_value self._default_value_permanant = default_value self._view_x = 0 self.box_width = width - 2 * self._padding self.text_length = text_length self._box_height = int(math.ceil(self.font.linesize)) self._recalculate_mask() self._cursor.image = spyral.Image(size=(2, self._box_height)) self._cursor.image.fill(self._cursor_color) if validator is None: self.validator = str(set(string.printable).difference("\n\t")) else: self.validator = validator if text_length is not None and len(value) < text_length: value = value[:text_length] self._value = None self.value = value self._render_backs() self._back.image = self._image_plain spyral.event.register("director.update", self._update, scene=self.scene)