def testTut2(): return Level((4,8),[ Block([0,2],[ Segment(0,0,0,0), Segment(3,0,0,0), Segment(0,2,0,0), Segment(3,2,0,0), Segment(0,0,1,0), Segment(3,0,1,0), Segment(0,2,1,0), Segment(3,4,0,0), Segment(0,4,1,0), Segment(3,4,1,0) ], False, constants.DIRECTION_BOTH, [0, 0, 0]), Block((1, 5), [ Segment(0, 0, 0, 0), Segment(1, 0, 0, 4), Segment(0, 0, 1, 0), Segment(1, 0, 1, 4) ], True, constants.DIRECTION_HORIZONTAL, [255, 10, 100]), Block((1, 3), [ Segment(0, 0, 0, 3), Segment(1, 0, 0, 0), Segment(0, 0, 1, 3), Segment(1, 0, 1, 0) ], True, constants.DIRECTION_HORIZONTAL, [10, 255, 100]) ], [ Player(1, 7, 0, [66, 134, 244]), Player(1, 7, 1, [244, 83, 65]) ], [ (0,0,0), (0,0,1) ])
def test1(): block = Block((3, 3), [ Segment(0, 0, 0, 1), Segment(0, 1, 0, 0), ], True, constants.DIRECTION_VERTICAL, [255, 10, 100]) block2 = Block((3, 3), [ Segment(0, 0, 0, 3), Segment(1, 0, 0, 0), ], True, constants.DIRECTION_HORIZONTAL, [10, 255, 100]) return Level((8, 8), [block, block2], [ Player(5, 5, 0, [66, 134, 244]), Player(5, 5, 1, [244, 83, 65]), ])
def testshit(): block = Block( (4, 4), [Segment(0, 0, 0, 1), Segment(0, 1, 0, 0), Segment(0, 2, 0, 3)], True, constants.DIRECTION_VERTICAL, [255, 10, 100]) block2 = Block((4, 4), [ Segment(0, 0, 0, 3), Segment(1, 0, 0, 0), Segment(1, 0, 1, 0), Segment(0, -1, 0, 2), Segment(1, -1, 0, 0) ], True, constants.DIRECTION_HORIZONTAL, [10, 255, 100]) block3 = Block( (4, 2), [Segment(0, 0, 0, 2), Segment(0, 1, 0, 4)], True, constants.DIRECTION_VERTICAL, [25, 160, 10]) block4 = Block( (2, 2), [Segment(0, 0, 0, 3), Segment(1, 0, 0, 0), Segment(2, 0, 0, 4)], True, constants.DIRECTION_HORIZONTAL, [200, 100, 10]) block5 = Block( (2, 2), [Segment(0, 0, 0, 1), Segment(0, 1, 0, 0)], True, constants.DIRECTION_VERTICAL, [10, 10, 200]) block6 = Block( (2, 6), [Segment(0, 0, 0, 2), Segment(1, 0, 0, 0), Segment(2, 0, 0, 1)], True, constants.DIRECTION_HORIZONTAL, [100, 200, 200]) block7 = Block( (2, 5), [ #Segment(0, 0, 0, 0), Segment(0, 1, 0, 4) ], True, constants.DIRECTION_VERTICAL, [200, 200, 10]) immovable = Block((0, 0), [ Segment(0, 7, 0, 0), Segment(1, 7, 0, 0), Segment(2, 7, 0, 0), Segment(5, 2, 0, 0), Segment(6, 2, 0, 0), Segment(7, 2, 0, 0) ], True, constants.DIRECTION_BOTH, [0, 0, 0]) return Level( (8, 8), [block, block2, block3, block4, block5, block6, block7, immovable], [Player(6, 6, 0, [66, 134, 244]), Player(6, 6, 1, [244, 83, 65])], [(0, 0, 0), (0, 0, 1)])
def testTut(): return Level((3,7),[ Block([1,3],[ Segment(0,0,0,0), Segment(1,0,0,4) ], True, constants.DIRECTION_HORIZONTAL, [255, 10, 100]), Block([2,4],[ Segment(0,0,0,2), Segment(0,1,0,0) ], True, constants.DIRECTION_VERTICAL, [105, 210, 50]), Block([0,4],[ Segment(0,0,1,1), Segment(0,1,1,0) ], True, constants.DIRECTION_VERTICAL, [35, 150, 100]), Block([0,2],[ Segment(0,0,0,0) ], False, constants.DIRECTION_BOTH, [0, 0, 0]), Block([2,2],[ Segment(0,0,1,0) ], False, constants.DIRECTION_BOTH, [0, 0, 0]), Block([0,3],[ Segment(0,0,1,3), Segment(1,0,1,0) ], True, constants.DIRECTION_HORIZONTAL, [25, 120, 10]), ], [ Player(1, 6, 0, [66, 134, 244]), Player(1, 6, 1, [244, 83, 65]) ], [ (1,0,0), (1,0,1) ])
def update(self, events): for event in events: if event.type == pygame.KEYDOWN: if event.key == pygame.K_ESCAPE: self.game.pop_state() elif event.key == pygame.K_1: level = Level((10, 10), [ Block([Segment(3, 3, 0, 1), Segment(3, 4, 0, 0)], True, 0, [255, 10, 100]) ]) level.add_player(Player(5, 5, 0, [66, 134, 244])) level.add_player(Player(5, 5, 1, [244, 83, 65])) self.game.push_state(GameState(level))
def object_hook(self, obj): if "type" in obj: t = obj["type"] if t == "segment": return Segment(obj["rx"], obj["ry"], obj["z"], obj["t"]) elif t == "block": return Block((obj["x"], obj["y"]), self.object_hook(obj["segments"]), obj["movable"], obj["direction"], obj["color"]) elif t == "level": return Level((obj["w"], obj["h"]), self.object_hook(obj["blocks"]), self.object_hook(obj["players"]), obj["goals"]) elif t == "player": return Player(obj["x"], obj["y"], obj["z"], obj["color"]) return obj
def add_block(self): color = [max(0,min(255,self.cinputs[0].num)), \ max(0,min(255,self.cinputs[1].num)), \ max(0,min(255,self.cinputs[2].num))] for block in self.level.blocks: same = True for ix in range(len(color)): if block.color[ix] != color[ix]: same = False break if same: return pos = self.active_segment.position block = Block(pos, [], True, constants.DIRECTION_HORIZONTAL, color) self.level.add_block(block) xinput = constants.SCREEN_WIDTH * .66 yinput = self.yoff self.buttons.append( Button(xinput, yinput+90 + 35 * (len(self.buttons)-8), 170, 30, \ str(block.color), self.change_block, color=block.color, val=block, right=self.delete_block) ) self.change_block(block)
def __init__(self, init_level=None): if init_level: self.level = init_level else: self.level = Level((5, 5), [], [], []) seg = Segment(0, 0, 0, 0) self.ghost = Block((0, 0), [seg], True, constants.DIRECTION_HORIZONTAL, [1, 1, 1]) seg.block = self.ghost self.scale = scale = min(int((constants.SCREEN_WIDTH*.66) // (2 * self.level.dim[0] + 6)), \ int((constants.SCREEN_WIDTH*.66) // (2 * self.level.dim[1] + 6))) self.yoff = constants.SCREEN_HEIGHT / 2 - (self.level.dim[1] + 4) * self.scale / 2 xinput = constants.SCREEN_WIDTH * .66 yinput = self.yoff self.filename = TextInputBox(constants.SCREEN_WIDTH * 2 // 5, 20, 100, 30, text="Filename.txt") self.cinputs = [InputBox(xinput, yinput-70, 140, 30), InputBox(xinput, yinput-30, 140, 30), \ InputBox(xinput, yinput+10, 140, 30)] self.dinputs = [ InputBox(220, constants.SCREEN_HEIGHT * .75, 200, 30, text="5", minval=1, maxval=16), InputBox(220, constants.SCREEN_HEIGHT * .75 + 40, 200, 30, text="5", minval=1, maxval=16) ] self.texts = [ TextBox(xinput, yinput - 100, 120, 20, "New Color"), TextBox(xinput, yinput + 50, 10, 20, "Col:"), TextBox(10, yinput - 70, 50, 30, "0"), TextBox(xinput + 50, yinput + 50, 100, 20, "None") ] self.buttons = [ Button(xinput + 130, yinput - 100, 50, 30, "Add", self.add_block), Button(10, yinput - 30, 50, 30, "0", self.change_type, val=0), Button(70, yinput - 30, 50, 30, "1", self.change_type, val=1), Button(130, yinput - 30, 50, 30, "2", self.change_type, val=2), Button(190, yinput - 30, 50, 30, "3", self.change_type, val=3), Button(250, yinput - 30, 50, 30, "4", self.change_type, val=4), Button(10, constants.SCREEN_HEIGHT * .75, 200, 30, "Change Direction", self.change_direction), Button(10, constants.SCREEN_HEIGHT * .75 + 40, 200, 30, "Change Moveable", self.change_moveable) ] self.active_block = None self.active_segment = seg self.ghost_loc = None self.ghost_t = 0 self.states = ["normal"]
def test3(): return Level((11,11),[ Block([0,0],[ #Segment(2,0,0,0), Segment(4,0,0,0), Segment(6,0,0,0), Segment(8,0,0,0), Segment(10,0,0,0), Segment(0,2,0,0), Segment(2,2,0,0), Segment(4,2,0,0), Segment(6,2,0,0), Segment(8,2,0,0), Segment(10,2,0,0), Segment(0,4,0,0), Segment(2,4,0,0), Segment(4,4,0,0), Segment(6,4,0,0), Segment(8,4,0,0), Segment(10,4,0,0), Segment(0,6,0,0), Segment(2,6,0,0), Segment(4,6,0,0), Segment(6,6,0,0), Segment(8,6,0,0), Segment(10,6,0,0), Segment(0,8,0,0), Segment(2,8,0,0), Segment(4,8,0,0), Segment(6,8,0,0), Segment(8,8,0,0), Segment(10,8,0,0), Segment(0,10,0,0), Segment(2,10,0,0), Segment(4,10,0,0), Segment(6,10,0,0), Segment(8,10,0,0), Segment(10,10,0,0), #Segment(2,0,1,0), Segment(4,0,1,0), Segment(6,0,1,0), Segment(8,0,1,0), Segment(10,0,1,0), Segment(0,2,1,0), Segment(2,2,1,0), Segment(4,2,1,0), Segment(6,2,1,0), Segment(8,2,1,0), Segment(10,2,1,0), Segment(0,4,1,0), Segment(2,4,1,0), Segment(4,4,1,0), Segment(6,4,1,0), Segment(8,4,1,0), Segment(10,4,1,0), Segment(0,6,1,0), Segment(2,6,1,0), Segment(4,6,1,0), Segment(6,6,1,0), Segment(8,6,1,0), Segment(10,6,1,0), Segment(0,8,1,0), Segment(2,8,1,0), Segment(4,8,1,0), Segment(6,8,1,0), Segment(8,8,1,0), Segment(10,8,1,0), Segment(0,10,1,0), Segment(2,10,1,0), Segment(4,10,1,0), Segment(6,10,1,0), Segment(8,10,1,0), Segment(10,10,1,0), Segment(7,7,0,0), Segment(7,7,1,0), Segment(5,5,0,0), Segment(5,5,1,0), Segment(3,1,0,0), Segment(3,1,1,0), Segment(1,5,0,0), Segment(1,5,1,0) ], False, constants.DIRECTION_HORIZONTAL, [0, 0, 0]), Block((9, 9), [ Segment(0, 0, 0, 0), Segment(0, 0, 1, 0), Segment(0,-6, 0, 0), Segment(0, -6, 1, 0), Segment(0, -8, 0, 0), Segment(0, -8, 1, 0), Segment(-2, -6, 0, 0), Segment(-2, -6, 1, 0), Segment(-4,-8,0,0), Segment(-4,-8,1,0), Segment(-8,-6,0,0), Segment(-8,-6,1,0), Segment(-4,0,0,0), Segment(-4,0,1,0), Segment(-8,0,0,0), Segment(-8,0,1,0), Segment(-6,-2,0,0), Segment(-6,-2,1,0), Segment(-6,-6,0,0), Segment(-6,-6,1,0), Segment(-7,-9,1,0), Segment(-7,-9,0,0) ], True, constants.DIRECTION_HORIZONTAL, [255, 10, 100]), Block((9, 5), [ Segment(0, 0, 0, 0), Segment(0, 0, 1, 0), Segment(0, 2, 0, 0), Segment(0, 2, 1, 0), Segment(-2, -4, 0, 0), Segment(-2, -4, 1, 0), Segment(-2,4,0,0), Segment(-2,4,1,0), Segment(-2,0,0,0), Segment(-2,0,1,0), Segment(-4,2,0,0), Segment(-4,2,1,0), Segment(-6,0,0,0), Segment(-6,0,1,0), Segment(-8,2,0,0), Segment(-8,2,1,0), Segment(-8,4,0,0), Segment(-8,4,1,0), Segment(-4,-2,0,0), Segment(-4,-2,1,0), Segment(-6,4,0,0), Segment(-6,4,1,0) ], True, constants.DIRECTION_VERTICAL, [25, 160, 10]) ], [ Player(9, 0, 0, [66, 134, 244]), Player(10, 9, 1, [244, 83, 65]) ], [ (0,0,0), (0,0,1) ])
def test2(): return Level((8, 8), [ Block([6,5],[ Segment(0, -1, 0, 2), Segment(0, 0, 0, 0), ], True, constants.DIRECTION_VERTICAL, [255, 10, 100]), Block([6,3],[ Segment(0, 0, 1, 4), Segment(-1, 0, 1, 0), Segment(0, 0, 0, 4), Segment(-1, 0, 0, 0), Segment(-2,0,0,2), Segment(-2,0,1,2) ], True, constants.DIRECTION_HORIZONTAL, [0, 255, 100]), Block([6,2],[ Segment(0, 0, 1, 4), Segment(0, -1, 1, 0), Segment(0, 0, 0, 4), Segment(0, -1, 0, 0) ], True, constants.DIRECTION_VERTICAL, [20, 25, 100]), Block([7,4],[ Segment(0,0,0,0), Segment(0,0,1,0), Segment(0,1,0,0), Segment(0,1,1,0), Segment(0,2,0,0), Segment(0,2,1,0), Segment(0,3,0,0), Segment(0,3,1,0) ], False, constants.DIRECTION_BOTH, [0,0,0]), Block([3,5],[ Segment(0,0,0,4), Segment(0,0,1,4), Segment(-1,0,0,0), Segment(-1,0,1,0), Segment(-2,0,0,0), Segment(-2,0,1,0) ], True, constants.DIRECTION_HORIZONTAL, [110,30,230]), Block([2,0],[ Segment(0,0,0,0), Segment(0,0,1,0), Segment(0,1,0,0), Segment(0,1,1,0), Segment(0,2,0,0), Segment(0,2,1,0), Segment(0,3,0,0), Segment(0,3,1,0) ], False, constants.DIRECTION_BOTH, [0,0,0]), Block([3,5],[ Segment(0,0,0,2), Segment(0,1,0,0), ], True, constants.DIRECTION_VERTICAL, [240,50,60]), Block([3,3],[ Segment(0,0,1,4), Segment(0,-1,1,0) ], True, constants.DIRECTION_VERTICAL, [120,220,20]), Block([4,4],[ Segment(0,0,0,0), Segment(0,0,1,0), Segment(0,1,0,0), Segment(0,1,1,0), Segment(0,2,0,0), Segment(0,2,1,0), Segment(0,3,0,0), Segment(0,3,1,0) ], False, 0 , [0,0,0]) ], [ Player(5, 5, 0, [66, 134, 244]), Player(5, 5, 1, [244, 83, 65]) ], [ (0,0,0), (0,0,1) ])