class main(dragonfly.pandahive.pandahive): blocks = blocks gridx = 10 gridy = 20 mainarea = box2d(100, 150, 225, 375) mainarea_id = "main" mainarea_parameters = parameters(color=(0.5, 0.5, 0.5, 0)) scorearea = box2d(170, 100, 80, 40) scorearea_id = "score" # define bee.attribute derivatives, allowing proper inheritance blocks_ = attribute("blocks") gridx_ = attribute("gridx") gridy_ = attribute("gridy") mainarea_ = attribute("mainarea") mainarea_parameters_ = attribute("mainarea_parameters") mainarea_id_ = attribute("mainarea_id") scorearea_ = attribute("scorearea") scorearea_id_ = attribute("scorearea_id") maingrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid) maingridcontrol = dragonfly.grid.bgridcontrol() connect(maingrid, maingridcontrol.grid) blockgrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid) blockgridcontrol = dragonfly.grid.bgridcontrol() connect(blockgrid, blockgridcontrol.grid) select_block = tetris_select_block(blocks=blocks_) test = dragonfly.std.trigger() connect(test, select_block) connect(select_block, blockgrid)
class main(dragonfly.pandahive.pandahive): blocks = blocks gridx = 10 gridy = 20 mainarea = box2d(100, 150, 225, 375) mainarea_id = "main" mainarea_parameters = parameters(color=(0.5, 0.5, 0.5, 0)) scorearea = box2d(170, 100, 80, 40) scorearea_id = "score" canvas = dragonfly.pandahive.pandacanvas() blocks_ = attribute("blocks") gridx_ = attribute("gridx") gridy_ = attribute("gridy") mainarea_ = attribute("mainarea") mainarea_parameters_ = attribute("mainarea_parameters") mainarea_id_ = attribute("mainarea_id") scorearea_ = attribute("scorearea") scorearea_id_ = attribute("scorearea_id") c0 = configure("canvas") # must have a lower-alphabet name than "canvas" c0.reserve(mainarea_id_, ("object", "bgrid"), box=mainarea_, parameters=mainarea_parameters_) maingrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid) maingridcontrol = dragonfly.grid.bgridcontrol() connect(maingrid, maingridcontrol.grid) blockgrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid) blockgridcontrol = dragonfly.grid.bgridcontrol() connect(blockgrid, blockgridcontrol.grid) select_block = tetris_select_block(blocks=blocks_) connect(select_block, blockgridcontrol.set) init_main = tetris_init_main(gridx_, gridy_) connect(init_main, maingridcontrol.set) draw = tetris_draw() connect(maingrid, draw.maingrid) connect(blockgrid, draw.blockgrid) control = tetris_control() connect(maingrid, control.maingrid) connect(blockgrid, control.blockgrid) start = dragonfly.sys.startsensor() connect(start, select_block) connect(start, init_main.start) connect(start, control.place_init) connect(start, draw.start) connect(start, draw.draw) raiser = bee.raiser() connect("evexc", raiser)
class myscene(dragonfly.pandahive.spyderframe): pandaicon_ = bee.get_parameter("pandaicon") a = Spyder.AxisSystem() a *= 0.25 a.origin += (-8, 42, 0) env = Spyder.Model3D("models/environment", "egg", a) a = Spyder.AxisSystem() a *= 0.005 mypanda = Spyder.Actor3D("models/panda-model", "egg", [("walk", "models/panda-walk4", "egg")], a, entityname="mypanda") a = Spyder.AxisSystem() a *= 0.005 pandaclass = Spyder.ActorClass3D("models/panda-model", "egg", [("walk", "models/panda-walk4", "egg")], a, actorclassname="pandaclass") box = box2d(50, 470, 96, 96) params = parameters() params.transparency = True args = canvasargs("pandaicon.png", pandaicon_, box, params) plugin = plugin_single_required(args) pattern = ("canvas", "draw", "init", ("object", "image")) d1 = dummydrone(plugindict={pattern: plugin}) i1 = bee.init("mousearea") i1.register(pandaicon_, box) del a, box, params, args, plugin, pattern
def __init__(self, canvasdrone, ctb, identifier, parameters): if panda3d is None: raise ImportError("Cannot locate Panda3D") from dragonfly.canvas import box2d if identifier is None: identifier = "" self.node = None box = box2d(ctb.posx, ctb.posy, ctb.sizex, ctb.sizey, ctb.sizemode) self.pnode = canvasdrone._get_parent_nodepath(identifier, box) self._show(ctb, identifier)
def __init__(self, canvasdrone, ctb, identifier, parameters): if not has_bgl: raise ImportError("Cannot import bgl") from dragonfly.canvas import box2d if identifier is None: identifier = "" box = box2d(ctb.posx, ctb.posy, ctb.sizex, ctb.sizey, ctb.sizemode) self.pnode = canvasdrone._get_parent_bglnode(identifier, box) #register self as a child of pnode: pnode will now invoke self.draw() every frame self.pnode.children = [self] self.update(ctb, identifier, parameters)
class myscene(bee.frame): pandaclassname_ = bee.get_parameter("pandaclassname") pandaname_ = bee.get_parameter("pandaname") pandaicon_ = bee.get_parameter("pandaicon") c1 = bee.configure("scene") c1.import_mesh_EGG("models/environment") a = NodePath("") a.setScale(0.25) a.setPos(-8, 42, 0) mat = a.getMat() m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2)) c1.add_model_MATRIX(matrix=m) c2 = bee.configure("scene") c2.import_mesh_EGG("models/panda-model") a = NodePath("") a.setScale(0.005) mat = a.getMat() m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2)) c2.add_actor_MATRIX(matrix=m, entityname=pandaname_) c2.import_mesh_EGG("models/panda-walk4") c2.add_animation("walk") c3 = bee.configure("scene") c3.import_mesh_EGG("models/panda-model") a = NodePath("") a.setScale(0.005) mat = a.getMat() m = (mat.getRow3(3), mat.getRow3(0), mat.getRow3(1), mat.getRow3(2)) c3.add_actorclass_MATRIX(matrix=m, actorclassname=pandaclassname_) c3.import_mesh_EGG("models/panda-walk4") c3.add_animation("walk") box = box2d(50, 470, 96, 96) params = parameters() params.transparency = True args = canvasargs("pandaicon.png", pandaicon_, box, params) plugin = plugin_single_required(args) pattern = ("canvas", "draw", "init", ("object", "image")) d1 = dummydrone(plugindict={pattern: plugin}) i1 = bee.init("mousearea") i1.register(pandaicon_, box) del a, m, mat, box, params, args, plugin, pattern
def reserve_slot(slot): import bee from bee.types import stringtupleparser from dragonfly.canvas import box2d c = bee.configure(slot.canvasname) b = slot.box box = box2d(b.x, b.y, b.sizex, b.sizey, b.mode) params = None col = slot.color if col is not None: params = parameters(color=(col.r,col.g,col.b,col.a)) c.reserve ( slot.slotname, stringtupleparser(slot.slottype), box=box, parameters=params, ) return c
class myscene(bee.frame): pandaclassname_ = bee.get_parameter("pandaclassname") pandaname_ = bee.get_parameter("pandaname") pandaicon_ = bee.get_parameter("pandaicon") c1 = bee.configure("scene") c1.import_mesh_EGG("models/environment") a = Spyder.AxisSystem() a *= 0.25 a.origin += (-8, 42, 0) c1.add_model_SPYDER(axissystem=a) c2 = bee.configure("scene") c2.import_mesh_EGG("models/panda-model") a = Spyder.AxisSystem() a *= 0.005 c2.add_actor_SPYDER(axissystem=a, entityname=pandaname_) c2.import_mesh_EGG("models/panda-walk4") c2.add_animation("walk") c3 = bee.configure("scene") c3.import_mesh_EGG("models/panda-model") a = Spyder.AxisSystem() a *= 0.005 c3.add_actorclass_SPYDER(axissystem=a, actorclassname=pandaclassname_) c3.import_mesh_EGG("models/panda-walk4") c3.add_animation("walk") box = box2d(50, 470, 96, 96) params = parameters() params.transparency = True args = canvasargs("pandaicon.png", pandaicon_, box, params) plugin = plugin_single_required(args) pattern = ("canvas", "draw", "init", ("object", "image")) d1 = dummydrone(plugindict={pattern: plugin}) i1 = bee.init("mousearea") i1.register(pandaicon_, box) del a, box, params, args, plugin, pattern
class main(dragonfly.pandahive.pandahive): blocks = blocks gridx = 10 gridy = 20 mainarea = box2d(100, 150, 225, 375) mainarea_id = "main" mainarea_parameters = parameters(color=(0.5, 0.5, 0.5, 0)) scorearea = box2d(170, 100, 80, 40) scorearea_id = "score" canvas = dragonfly.pandahive.pandacanvas() blocks_ = attribute("blocks") gridx_ = attribute("gridx") gridy_ = attribute("gridy") mainarea_ = attribute("mainarea") mainarea_parameters_ = attribute("mainarea_parameters") mainarea_id_ = attribute("mainarea_id") scorearea_ = attribute("scorearea") scorearea_id_ = attribute("scorearea_id") c0 = configure("canvas") # must have a lower-alphabet name than "canvas" c0.reserve(mainarea_id_, ("object", "bgrid"), box=mainarea_, parameters=mainarea_parameters_) maingrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid) maingridcontrol = dragonfly.grid.bgridcontrol() connect(maingrid, maingridcontrol.grid) blockgrid = dragonfly.std.variable(("object", "bgrid"))(emptygrid) blockgridcontrol = dragonfly.grid.bgridcontrol() connect(blockgrid, blockgridcontrol.grid) select_block = tetris_select_block(blocks=blocks_) connect(select_block, blockgridcontrol.set) init_main = tetris_init_main(gridx_, gridy_) connect(init_main, maingridcontrol.set) draw = tetris_draw() connect(maingrid, draw.maingrid) connect(blockgrid, draw.blockgrid) control = tetris_control() connect(maingrid, control.maingrid) connect(blockgrid, control.blockgrid) start = dragonfly.sys.startsensor() connect(start, select_block) connect(start, init_main.start) connect(start, control.place_init) connect(start, draw.start) connect(start, draw.draw) period = dragonfly.std.variable("float")(0.3) cycle = dragonfly.time.cycle() connect(period, cycle) connect(cycle, control.move_down) connect(cycle, draw.draw) connect(control.dropped, select_block) connect(control.dropped, control.place_init) connect(control.lost, "exitactuator") k_left = dragonfly.io.keyboardsensor_trigger("LEFT") connect(k_left, control.move_left) connect(k_left, draw.draw) k_right = dragonfly.io.keyboardsensor_trigger("RIGHT") connect(k_right, control.move_right) connect(k_right, draw.draw) k_return = dragonfly.io.keyboardsensor_trigger("RETURN") connect(k_return, control.rotate_cw) connect(k_return, draw.draw) k_space = dragonfly.io.keyboardsensor_trigger("SPACE") connect(k_space, control.rotate_ccw) connect(k_space, draw.draw) k_down = dragonfly.io.keyboardsensor_trigger("DOWN") connect(k_down, control.drop) connect(k_down, draw.draw) raiser = bee.raiser() connect("evexc", raiser)
for n in range(grid.minx, grid.maxx + 1): for nn in range(grid.miny, grid.maxy + 1): if random.random() < 0.5: grid.set_true(n, nn) #create our main hive class class myhive(dragonfly.pandahive.pandahive): canvas = dragonfly.pandahive.pandacanvas() #initialize our hive m = myhive().getinstance() m.build("myhive") m.place() m.close() m.init() #set up drawing parameters for the grid class parameters(object): pass box = box2d(x=100, y=50, sizex=500, sizey=500) params = parameters() params.color = (0.7, 0.7, 0.7, 0) #draw the grid and run m.canvas._draw1(("object", "bgrid"), grid, box, params) m.run()
class main(dragonfly.pandahive.pandahive): blocks = blocks gridx = 10 gridy = 20 mainarea = box2d(100, 150, 300, 500) scorearea = box2d(170, 100, 80, 40)
class myhive(dragonfly.pandahive.pandahive): canvas = dragonfly.pandahive.pandacanvas() #initialize our hive m = myhive().getinstance() m.build("myhive") m.place() m.close() m.init() #set up drawing parameters for the grid class parameters(object): pass box = box2d(x=100, y=50, sizex=500, sizey=500) params = parameters() params.color = (0.7, 0.7, 0.7, 0) #draw the grid and run gridid = m.canvas._draw1(("object", "bgrid"), grid, box, params) try: m.app.finished = False while not m.doexit: m.window.taskMgr.step() m.canvas._update1(gridid) randomize_grid() m.pacemaker.tick() finally: m.cleanup()