def pressed(self, actor, event): self.changed() x, y = self.getpos(event) self.grid.toggle(x, y) self.boxes[x][y].paint() self.mini.grid = Grid.as_silhouette(self.grid) self.painting = True self.paintWhat = self.grid.get(x, y)
def __init__(self, name, imagefile=None, cellsize=2): self.dx = 0 self.dy = 0 self.original = None self.ship = None self.imagefile = None self.speed = 0 # game units per second if imagefile: self.original = clutter.Group() im = clutter.texture_new_from_file(imagefile) im.set_filter_quality(clutter.TEXTURE_QUALITY_LOW) g = Grid.from_file(imagefile, cellsize) g.invert() self.silhouette = Grid.as_silhouette(g) fn = "/tmp/sil%d.png" % time.time() self.silhouette.to_file(fn, cellsize, fg=(255,255,255,255), bg=(0,0,0,0)) re = clutter.texture_new_from_file(fn) re.set_filter_quality(clutter.TEXTURE_QUALITY_LOW) re.show() w = im.get_width() im.set_size(w*4, w*4) #re = clutter.Rectangle(clutter.color_from_string("#ffffff")) re.set_size(im.get_width(), im.get_height()) self.original.add(re) self.original.add(im) self.original.set_opacity(0) self.original.show() self.ship = clutter.Clone(self.original) self.imagefile = imagefile speedfact = self.silhouette.count_pixels()/float(16*16) self.speed = 15 + (1-speedfact) * 10 # max speed = 25 self.invincible = False self.respawnInvincibleTime = 1 self.name = name self.lives = 5 self.isHit = False
def __init__(self, grid, size): clutter.Group.__init__(self) self.size = size self.boxes = [] self.grid = grid self.mini = MiniSprite(Grid.as_silhouette(grid), size) self.mini.show() self.add(self.mini) self.rect = clutter.Rectangle() self.rect.set_color(clutter.color_from_string("#ffffff")) self.rect.set_opacity(50) self.rect.set_position(0,0) self.rect.set_size(self.grid.get_cols()*size, self.grid.get_rows()*size) self.rect.show() self.add(self.rect) w, h = self.grid.get_size() self.set_reactive(True) self.connect("button-press-event", self.pressed) self.connect("button-release-event", self.released) self.connect("motion-event", self.moved) self.changedHandler = None def makegetter(x, y): def cb(): return self.grid.get(x, y) return cb def maketoggler(x, y): def cb(): return self.grid.toggle(x, y) return cb for x in range(w): self.boxes.append([]) for y in range(h): t = Toggler(size-2, maketoggler(x, y), makegetter(x, y)) t.set_position(x*size+1, y*size+1) t.active = True self.add(t) self.boxes[x].append(t) self.painting = False self.paintWhat = False self.show_all()
def __init__(self, file, pixels_per_second=200, tickspeed=0.05): clutter.Group.__init__(self) self.image = clutter.texture_new_from_file(file) self.image.set_filter_quality(clutter.TEXTURE_QUALITY_LOW) self.image.hide() self.textures = [clutter.Clone(self.image), clutter.Clone(self.image)] self.add(self.image) self.grid = Grid.from_file(file) self.h = self.image.get_height() self.w = self.image.get_width() self.add(self.textures[0]) self.add(self.textures[1]) self.pixels_per_second = pixels_per_second self.tickspeed = tickspeed self.currentheight = int(random.random()*self.h) self.running = True
def generateBanner(avatar, winner, loser): months = ["JAN", "FEB", "MAR", "APR", "MAY", "JUN", "JUL", "AUG", "SEP", "OCT", "NOV", "DEC"] m = months[int(datetime.now().strftime("%m"),10)-1] stamp = datetime.now().strftime("%d "+m+" %H:%M") datetime.now().strftime("%Y-%m-%d %H:%M") dinos = ["gamedata/banjo3.png"] f = Font("gamedata/wired.txt") g = Grid(64, 64) g.line(0, "x ") g.line(1, " x") g.line(2, "xx") avatar = Grid.from_file(avatar, 2) avatar.invert() g.put(avatar, 24, 4) dino = Grid.from_file(random.choice(dinos), 1) dino.invert() if random.random()>.5: dino = dino.flip() if random.random()>.5: dino = dino.flop() g.put(dino, 3, 4) dino = Grid.from_file(random.choice(dinos), 1) dino.invert() g.put(dino, 64-dino.get_cols()-3, 4) y = 22 l = unicode(winner.upper()).split(" ") l = [s.strip() for s in l] maxname = lambda name: len(name)<11 and name or name.replace(" ", "")[0:11] x,y = f.render(g, maxname(l[0]), (0,22), center=True) y += 2 g.line(y+0, "xx") g.line(y+1, " x") g.line(y+2, "x ") y += 5 loser = loser.split(" ")[0] f2 = Font("gamedata/3x5.txt") f2.render(g, u"BEAT %s" % loser.upper(), (0,y), center=True) f2.render(g, unicode(stamp), (0,y+7), center=True) y += 14 g.line(61, "x ") g.line(62, " x") g.line(63, "xx") dinos = ["gamedata/dino_top2.png", "gamedata/dino_top5.png"] x = 3 for t in range(6): dino = Grid.from_file(random.choice(dinos), 1) dino.invert() if random.random()>0.5: dino = dino.flip() g.put(dino, x, y) x += dino.get_cols()+1 g.vline(0, "X ") g.vline(1, " X") g.vline(62, " X") g.vline(63, "X ") global seq if seq % 2 == 1: g.invert() seq += 1 base = tempfile.mkstemp()[1] base = "../output/result-%d" % time.time() g.to_file(base+".png", 10, fg=(255,255,255,255), bg=(0,0,0,255)) g = g.flip() g = g.flop() g.to_file(base+".bmp", 1, fg=(255,255,255), bg=(0,0,0),bitmap=True) return base+".png", base+".bmp"
from banjo.grid import Grid from banjo.text import Font f = Font("../art/pixelfonts/wired.txt") g = Grid(64, 64) g.line(0, "x ") g.line(1, " x") g.line(2, "xx") avatar = Grid.from_file("samples/2.png", 20) avatar.invert() g.put(avatar, 24, 4) #x,y = f.render(g, "WILLEM", (0,4)) #x,y = f.render(g, "VELTHOVEN", (0,y+1)) x,y = f.render(g, "TRAVIS", (0,22), center=True) x,y = f.render(g, "GOODSPEED", (0,y+1), center=True) y += 2 g.line(y+0, "xx") g.line(y+1, " x") g.line(y+2, "x ") y += 5 f2 = Font("../art/pixelfonts/3x5.txt")
def released(self, actor, event): self.changed() self.painting = False self.mini.grid = Grid.as_silhouette(self.grid) self.mini.repaint()
def repaint(self): self.mini.grid = Grid.as_silhouette(self.grid) self.mini.repaint() for l in self.boxes: for b in l: b.paint()
# Renders the title knitting for the banjo project. # Arjan Scherpenisse <*****@*****.**>, 2010 from banjo.grid import Grid from banjo.text import Font f = Font("../art/pixelfonts/wired.txt") g = Grid(64, 64) g.line(0, "xx") g.line(1, "x ") g.line(2, " x") g.line(3, "xx") y = 5 x,y = f.render(g, "MULTI-THREADED BANJO DINOSAUR KNITTING ADVENTURE 2D EXTREME!!!", (2,y+1)) y += 1 g.line(y+0, "xx") g.line(y+1, " x") g.line(y+2, "x ") g.line(y+3, "xx") #g.to_file("/tmp/foo.png", 10) g.to_file("/tmp/foo.bmp", 1, bitmap=True) print g