Esempio n. 1
0
    def __init__(self):
        World.__init__(self)
        self.add(Scene())
        self.add_bounds(width=(W_DIFF, H_DIFF, W_DIFF, H_DIFF))
        
        
        self.force = Vec2(0, 0)

        self.create_teams()
        self.create_goal()
        self.create_scores()
        self.moves = 0
        
        self.ball = Ball()
        self.add(self.ball)
        
        self.movement_check = CHECK_IDLE
Esempio n. 2
0
# -*- coding: utf8 -*-_

'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, AABB, Circle, Rectangle

# Cria mundo com coeficiente de atrito global não-nulo
world = World()
world.add_bounds(width=10)

stacks = []
stacks.append('aabbs')
stacks.append('circles')
stacks.append('rects')


# Cria pilha de AABBs
H = 550
dH = 200
if 'aabbs' in stacks:
    world.add(AABB(pos=(50, H), shape=(40, 40), color='red', vel=(200, 0)))
    for i in range(10):
        world.add(AABB(pos=(150 + i * 50, H), shape=(40, 40)))
    world.add(AABB(pos=(150 + 10 * 50, H), shape=(40, 40), color='red'))
    world.add(AABB(pos=(50, H - 50),
                   shape=(40, 40), color='red', vel=(200, 0)))
    H -= dH
Esempio n. 3
0
        j = y / self.tilesize
        return i, j

    @coords.setter
    def coords(self, value):
        self.pos_sw = asvector(value) * self.tilesize + self.tileorigin


if __name__ == '__main__':
    from FGAme import World

    ts = '''
    |            oo
    |        oo     xxxxxxxxxxxxxxxxxx
    |           xxx
    |       xxx
    |                                        ii
    |xxxxxxxxxxxxxxxxxxxxxxxxxxxxx    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    '''

    w = World()
    tm = TileManager((30, 30))
    tm.register_spec('brick', 'x', color='red')
    tm.register_spec('coin', 'o', shape='circle', color='yellow')
    tm.register_spec('spike', 'i', color='black')
    tm.add_tilemap(ts)

    w.add(tm)
    w.run()
Esempio n. 4
0
from FGAme import World, Rectangle, pos
from random import uniform

world = World(friction=0.2, restitution=0.9, gravity=0)
world.add_bounds(width=10)
world.add(
    Rectangle(
        pos=pos.middle - (300, +150),
        vel=(270, 420 + uniform(0, 200)), 
        shape=(50, 50),
        theta=0.2, 
        color='random',
    )
)

world.listen('key-down', 'space', world.toggle_pause)
world.register_energy_tracker()
world.run()
Esempio n. 5
0
# -*- coding: utf8 -*-_
'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, AABB, Circle, Rectangle

# Cria mundo com coeficiente de atrito global não-nulo
world = World()
world.add_bounds(width=10)

stacks = []
stacks.append('aabbs')
stacks.append('circles')
stacks.append('rects')

# Cria pilha de AABBs
H = 550
dH = 200
if 'aabbs' in stacks:
    world.add(AABB(pos=(50, H), shape=(40, 40), color='red', vel=(200, 0)))
    for i in range(10):
        world.add(AABB(pos=(150 + i * 50, H), shape=(40, 40)))
    world.add(AABB(pos=(150 + 10 * 50, H), shape=(40, 40), color='red'))
    world.add(AABB(pos=(50, H - 50), shape=(40, 40), color='red',
                   vel=(200, 0)))
    H -= dH

# Cria pilha de círculos
if 'circles' in stacks:
Esempio n. 6
0
from FGAme import World, RegularPoly

world = World()
p = RegularPoly(4, 100, pos=(400, 300), world=world, omega=2, adamping=0.1)
# FIXME: p.external_torque = lambda t: - p.inertia * p.theta
world.run()
Esempio n. 7
0
# -*- coding: utf8 -*-_

'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, AABB

# Cria mundo com coeficiente de atrito global não-nulo
world = World(dfriction=0.1)
world.add_bounds(width=10, col_layer=[0, 2])

# Cria objetos
A = AABB(pos=(400, 100), shape=(50, 50), color='black', col_layer=2,
         col_group=1)
B = AABB(pos=(150, 500), shape=(50, 50), vel=(200, -400), color='red',
         col_layer=2, col_group=1)


def pause():
    print('', B.bbox, '\n', A.bbox, '\n')
    world.toggle_pause()


# Inicia a simulação
world.add([A, B])
world.listen('key-down', 'space', pause)
world.run()
Esempio n. 8
0
periodic_frames = _make_scheduler('periodic_frames')
schedule = _make_scheduler('schedule')
schedule_optional = _make_scheduler('schedule_optional')
schedule_iter = _make_scheduler('schedule_iter')
schedule_dt = _make_scheduler('schedule_dt')
schedule_optional_dt = _make_scheduler('schedule_optional_dt')
schedule_iter_dt = _make_scheduler('schedule_iter_dt')
delayed = _make_scheduler('delayed')
delayed_frames = _make_scheduler('delayed_frames')
delayed_absolute = _make_scheduler('delayed_absolute')
unschedule = _make_scheduler('unschedule')


if __name__ == '__main__':
    from FGAme import World, Circle, pos
    w = World()
    c1 = Circle(10, world=w)
    c2 = Circle(10, color='red', world=w)
    c3 = Circle(10, color='blue', world=w)

    @schedule
    def move():
        c2.pos += (1, 1)

    @schedule_iter
    def move_circle():
        for _ in range(50):
            c1.pos += (2, 5)
            yield

    @periodic(1)
Esempio n. 9
0
from FGAme import World, listen, pos
from random import uniform

world = World(friction=0.2, restitution=0.9, gravity=0)
world.add.margin(10)
world.add.rectangle(
    pos=pos.middle - (300, +150),
    vel=(270, 420 + uniform(0, 200)),
    shape=(50, 50),
    theta=0.2,
    color='random',
)

listen('key-down', 'space', world.toggle_pause)
world.track.energy()
world.run()
Esempio n. 10
0
# -*- coding: utf8 -*-_
'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, AABB

# Cria mundo com coeficiente de atrito global não-nulo
world = World(dfriction=0.1)
world.add_bounds(width=10)

# Cria objetos
A = AABB(pos=(400, 100), shape=(50, 50), color='black')
B = AABB(pos=(150, 500), shape=(50, 50), vel=(200, -400), color='red')


def pause():
    print('', B.bbox, '\n', A.bbox, '\n')
    world.toggle_pause()


# Inicia a simulação
world.add([A, B])
world.listen('key-down', 'space', pause)
world.run()
Esempio n. 11
0
from FGAme import World, Circle, AABB, pos, conf, on_key_down
import random
conf.set_framerate(60)


world = World()
circle_list = []
for _ in range(5):
    circle = Circle(50, pos=pos.middle, world=world, color='random')
    circle_list.append(circle)

o1 = AABB(pos=pos.middle, shape=(80, 71))
o2 = AABB(pos=pos.middle, shape=(80, 71), image='alien1')
world.add(o1)
world.add(o2, layer=2)


@world.listen('frame-enter')
def frame_enter_handler():
    for circle in circle_list:
        x = random.random() * 800
        y = random.random() * 600
        circle.pos = x, y


@on_key_down('space')
def space():
    world.toggle_pause()

world.run()
Esempio n. 12
0
'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, AABB, Circle, RegularPoly, Rectangle, pi

stacks = []
stacks.append('aabbs')
stacks.append('rects')
stacks.append('circles')
stacks.append('polys')


# Cria mundo com coeficiente de atrito global não-nulo
world = World(dfriction=0.5, gravity=500, restitution=0.7, adamping=0.1)
world.add_bounds(width=10)

# Cria pilha de AABBs
if 'aabbs' in stacks:
    A = AABB(pos=(100, 70), shape=(100, 50), color='red', mass='inf')
    B = AABB(pos=(125, 150), shape=(50, 50))
    C = AABB(pos=(125, 250), shape=(70, 50))
    D = AABB(pos=(125, 300), shape=(100, 20))
    aabbs = [B, C, D]
    world.add([A, B, C, D])

# Cria pilha de Retângulos
if 'rects' in stacks:
    A = Rectangle(pos=(100, 370), shape=(100, 50), color='red', mass='inf')
    B = Rectangle(pos=(125, 450), shape=(50, 50))
Esempio n. 13
0
from FGAme import World, RegularPoly, draw

world = World()
p = RegularPoly(4, 100, pos=(400, 300), world=world, omega=2, adamping=0.1)
a = draw.Image('gaussiana.png', pos=(400, 300))
world.add(a, layer=-1)
p.torque = lambda t: -p.inertia * p.theta
world.run()
Esempio n. 14
0
# -*- coding: utf8 -*-_
'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, Circle

# Cria mundo com coeficiente de atrito global não-n'ulo
world = World(dfriction=0.5, gravity=300, restitution=0.0)
world.add_bounds(width=10)

N = 5
aabbs = []
for i in range(N):
    aabbs.append(
        Circle(25 + 5 * i, pos=(400, 50 + i * 100), world=world, color='red'))
aabbs[0].make_static()
#aabbs[0].boost((0, 700))

#@world.listen('frame-enter')
# def print_vels():
#    meansqr = sum(x.vel.y ** 2 for x in aabbs) ** 0.5
# print('  vels: (%5.3f)' % meansqr +
#      '; '.join(['%5.3f' % x.vel.y for x in aabbs]))

# print('  pos: ' +
#      '; '.join(['%5.3f' % x.pos.y for x in aabbs]))

world.register_energy_tracker()
# Inicia a simulação
Esempio n. 15
0
        j = y / self.tilesize
        return i, j
    
    @coords.setter
    def coords(self, value):
        self.pos_sw = asvector(value) * self.tilesize + self.tileorigin


if __name__ == '__main__':
    from FGAme import World

    ts = '''
    |            oo
    |        oo     xxxxxxxxxxxxxxxxxx
    |           xxx
    |       xxx
    |                                        ii
    |xxxxxxxxxxxxxxxxxxxxxxxxxxxxx    xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    |xxxxxxxxxxxxxxxxxxxxxxxxxxxxxiiiixxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    '''

    w = World()
    tm = TileManager((30, 30))
    tm.register_spec('brick', 'x', color='red')
    tm.register_spec('coin', 'o', shape='circle', color='yellow')
    tm.register_spec('spike', 'i', color='black')
    tm.add_tilemap(ts)

    w.add(tm)
    w.run()
Esempio n. 16
0
# -*- coding: utf8 -*-_

'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, AABB

# Cria mundo com coeficiente de atrito global não-nulo
world = World(dfriction=0.1)
world.add_bounds(width=10)

# Cria objetos
A = AABB(pos=(400, 100), shape=(50, 50), color='black')
B = AABB(pos=(150, 500), shape=(50, 50), vel=(200, -400), color='red')


def pause():
    print('', B.bbox, '\n', A.bbox, '\n')
    world.toggle_pause()


# Inicia a simulação
world.add([A, B])
world.listen('key-down', 'space', pause)
world.run()
Esempio n. 17
0
from FGAme import Poly, World
from FGAme.draw import RenderTree


class Pointer(RenderTree):

    def __init__(self, button_center, mouse_pos):
        RenderTree.__init__(self)
        vertices = []
        x = button_center[0]
        y = button_center[1]
        vertices.append((x, y + 1))
        vertices.append((x + mouse_pos[0], y + mouse_pos[1]))
        vertices.append((x + mouse_pos[0], y + mouse_pos[1] - 2))
        vertices.append((x, y - 1))

        self.pointer = Poly(vertices, color='white')
        self.add(self.pointer)


if __name__ == '__main__':
    game = World()
    game.add(Pointer())
    game.run()
Esempio n. 18
0
'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, AABB, Circle, RegularPoly, Rectangle, pi

stacks = []
stacks.append('aabbs')
stacks.append('rects')
stacks.append('circles')
stacks.append('polys')


# Cria mundo com coeficiente de atrito global não-nulo
world = World(friction=0.5, gravity=500, restitution=0.7, adamping=0.1)
world.add_bounds(width=10)

# Cria pilha de AABBs
if 'aabbs' in stacks:
    A = AABB(pos=(100, 70), shape=(100, 50), color='red', mass='inf')
    B = AABB(pos=(125, 150), shape=(50, 50))
    C = AABB(pos=(125, 250), shape=(70, 50))
    D = AABB(pos=(125, 300), shape=(100, 20))
    aabbs = [B, C, D]
    world.add([A, B, C, D])

# Cria pilha de Retângulos
if 'rects' in stacks:
    A = Rectangle(pos=(100, 370), shape=(100, 50), color='red', mass='inf')
    B = Rectangle(pos=(125, 450), shape=(50, 50))
Esempio n. 19
0
from FGAme import World, Circle, AABB, pos, conf, on_key_down
import random
conf.set_framerate(60)

world = World()
circle_list = []
for _ in range(5):
    circle = Circle(50, pos=pos.middle, world=world, color='random')
    circle_list.append(circle)

o1 = AABB(pos=pos.middle, shape=(80, 71))
o2 = AABB(pos=pos.middle, shape=(80, 71), image='alien1')
world.add(o1)
world.add(o2, layer=2)


@world.listen('frame-enter')
def frame_enter_handler():
    for circle in circle_list:
        x = random.random() * 800
        y = random.random() * 600
        circle.pos = x, y


@on_key_down('space')
def space():
    world.toggle_pause()


world.run()
Esempio n. 20
0
from FGAme import World, AABB, pos

world = World(friction=0.1, restitution=1, gravity=0)
world.add_bounds(width=10)
world.add(
    AABB(
        pos=pos.middle - (300, +150),
        vel=(270, 370), 
        shape=(50, 50), 
        color='random',
    )
)

world.register_energy_tracker()
world.run()
Esempio n. 21
0
# -*- coding: utf8 -*-_

'''
Este exemplo demonstra a resposta a colisões com atrito utilizando duas caixas
AABB.
'''

from FGAme import World, AABB

print(AABB)

# Cria mundo com coeficiente de atrito global não-nulo
world = World(dfriction=0.1)
world.set_bounds(width=10)

# Cria objetos
A = AABB(pos=(400, 100), shape=(50, 50), color='black')
B = AABB(pos=(150, 500), shape=(50, 50), vel=(200, -400), color='red')

# Inicia a simulação
world.add([A, B])
world.listen('key-down', 'p', world.toggle_pause)
world.run()
Esempio n. 22
0
from FGAme import World, RegularPoly, draw

world = World()
p = RegularPoly(4, 100, pos=(400, 300), world=world, omega=2, adamping=0.1)
a = draw.Image("gaussiana.png", pos=(400, 300))
world.add(a, layer=-1)
p.torque = lambda t: -p.inertia * p.theta
world.run()
Esempio n. 23
0
# -*- coding: utf8 -*-_

'''
Este exemplo demonstra o empilhamento de círculos.
'''

from FGAme import World, Circle

# Cria mundo com coeficiente de atrito global não-n'ulo
world = World(friction=0.5, gravity=300, restitution=0.0)
world.add_bounds(width=10)

N = 5
aabbs = []
for i in range(N):
    aabbs.append(Circle(25 + 5 * i,
                        pos=(400, 50 + i * 100), world=world, color='red'))
aabbs[0].make_static()
world.register_energy_tracker()
world.run()