Beispiel #1
0
Datei: ui.py Projekt: fbz/banjo
 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)
Beispiel #2
0
Datei: ui.py Projekt: fbz/banjo
    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
Beispiel #3
0
Datei: ui.py Projekt: fbz/banjo
    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()
Beispiel #4
0
Datei: ui.py Projekt: fbz/banjo
    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
Beispiel #5
0
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"
Beispiel #6
0
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")
Beispiel #7
0
Datei: ui.py Projekt: fbz/banjo
 def released(self, actor, event):
     self.changed()
     self.painting = False
     self.mini.grid = Grid.as_silhouette(self.grid)
     self.mini.repaint()
Beispiel #8
0
Datei: ui.py Projekt: fbz/banjo
 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()
Beispiel #9
0
# 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