def demo(): global exitdemo exitdemo = False while not exitdemo: engine.init_engine() engine.set_keyboard_handler(demo_keypress_cb) play(demo_postinit_cb)
def play(): global s s = S() engine.init_engine() engine.set_keyboard_handler(input_cb) engine.set_mouse_handler(fire_cb) s.me = Me() engine.add_obj(s.me) s.playing = True engine.engine()
def load_level_selection_menu(): print("Loading the level selection menu...") pos_arrow = - game.Game.LENGTH // 5, 3 * Menu.LEVEL_LINE_HEIGHT + Menu.FONT_SIZE rect_p1 = game.Game.LENGTH // 2, game.Game.LENGTH // 2 rect_p2 = - game.Game.LENGTH // 2, - game.Game.LENGTH // 2 engine.init_engine() engine.set_keyboard_handler(Menu.keyboard_lvl) Menu.cursor_position = Menu.cursor_position_on_screen = 1 assert Menu.select_arrow is None, "Select arrow already initialized" Menu.lvl_rect = shapes.Rectangle(rect_p1, rect_p2, color_edge="white") Menu.select_arrow = engine.GameObject(*pos_arrow, 0, 0, "select_arrow", "black") engine.add_obj(Menu.select_arrow) Menu.display_level()
def play(): global s s = S() engine.init_engine() engine.set_keyboard_handler(input_cb) engine.add_random_event(1.0, newpipe_cb) engine.register_collision(Me, Pipe, coll_cb) engine.register_collision(Pipe, Me, coll_cb2) s.me = Me() engine.add_obj(s.me) s.playing = True engine.engine()
def load_skin_selection_menu(): print("Loading the skin selection menu...") x_arrow, y_arrow = game.Game.LENGTH / 3.5, - game.Game.LENGTH / 6 arrow_height, arrow_width = 34.6, 30 rect_txt_p1 = - (y_arrow + arrow_height / 2), - x_arrow + arrow_width / 2 rect_txt_p2 = - (y_arrow - arrow_height / 2), x_arrow - arrow_width / 2 rect_window_p1 = rect_txt_p1[0] - 20, rect_txt_p1[1] # 20 : shift between the two rectangles rect_window_p2 = rect_txt_p1[0] - 20 - Menu.SKIN_WINDOW_HEIGHT, rect_txt_p2[1] engine.init_engine() engine.set_keyboard_handler(Menu.keyboard_skin) _ = engine.GameObject(x_arrow, y_arrow, 0, 0, "arrow_right_skin", "gray", True) _ = engine.GameObject(- x_arrow, y_arrow, 0, 0, "arrow_left_skin", "gray", True) _ = shapes.Rectangle(rect_window_p1, rect_window_p2) Menu.skin_rect = shapes.Rectangle(rect_txt_p1, rect_txt_p2) Menu.display_skin()
def start_game(): global score engine.init_engine() engine.set_keyboard_handler(keyboard_cb) # Adds Ground and Car and Mountains engine.add_obj(Mountain('Mountain2', 'ivory4', (-SPEED/4))) engine.add_obj(Mountain('Mountain1', 'bisque', (-SPEED/2))) engine.add_obj(Ground(MIN_X, GROUND_Y, MAX_X, MIN_Y)) engine.add_obj(Car()) # Adds Wheels engine.add_obj(Wheel(2, GROUND_Y, -3)) engine.add_obj(Wheel(15, GROUND_Y, 3)) engine.add_obj(Wheel(28, GROUND_Y, -3)) # Random Events engine.add_random_event(0.006, hole_cb) engine.add_random_event(0.007, turtle_cb) engine.add_random_event(0.004, UFO_cb) # Collision Detection engine.register_collision(Car, Hole, hole_collision_cb) engine.register_collision(Hole, Car, hole_collision_cb2) engine.register_collision(Car, EnemyTurtle, turt_collision_cb) engine.register_collision(EnemyTurtle, Car, turt_collision_cb2) engine.register_collision(MissileRight, EnemyTurtle, miss_turt_collision_cb) engine.register_collision(EnemyTurtle, MissileRight, miss_turt_collision_cb2) engine.register_collision(MissleVertical, UFO, miss_ufo_collision_cb) engine.register_collision(UFO, MissleVertical, miss_ufo_collision_cb2) engine.register_collision(Car, UFO, car_ufo_collision_cb) engine.register_collision(UFO, Car, car_ufo_collision_cb2) engine.register_collision(Car, MissleVertical, car_miss_collision_cb) engine.register_collision(MissleVertical, Car, car_miss_collision_cb2) # Score and Stars drawn draw_score(False) draw_random_stars(50) engine.engine()
def keyboard_lvl(key): """keyboard manager for the level selection menu""" total_lvl_number = len(listdir("Files/lvls/")) y0 = 4 * Menu.LEVEL_LINE_HEIGHT + Menu.FONT_SIZE if key == "Up": if Menu.cursor_position_on_screen > 0: Menu.cursor_position_on_screen -= 1 elif Menu.cursor_position == 0: # and Menu.cursor_position_on_screen == 0 Menu.cursor_position_on_screen = Menu.MAX_NB_LVL_PER_PAGE - 1 # in other cases, the arrow remains on the top Menu.cursor_position = (Menu.cursor_position - 1) % (total_lvl_number + 1) # + 1 for the return button Menu.select_arrow.y = y0 - Menu.LEVEL_LINE_HEIGHT * Menu.cursor_position_on_screen Menu.display_level() if key == "Down": if Menu.cursor_position_on_screen < Menu.MAX_NB_LVL_PER_PAGE - 1: Menu.cursor_position_on_screen += 1 elif Menu.cursor_position == total_lvl_number: # and Menu.cursor_position_on_screen == MAX_NB_LVL_PER_PAGE - 1 Menu.cursor_position_on_screen = 0 # in other cases, the arrow remains on the bottom Menu.cursor_position = (Menu.cursor_position + 1) % (total_lvl_number + 1) # + 1 for the return button Menu.select_arrow.y = y0 - Menu.LEVEL_LINE_HEIGHT * Menu.cursor_position_on_screen Menu.display_level() if key == "Return": engine.del_obj(Menu.select_arrow) engine.del_obj(Menu.lvl_rect) Menu.select_arrow = Menu.lvl_rect = None if Menu.cursor_position == 0: Menu.load_main_menu() else: lvl = "lvl" + str(Menu.cursor_position) engine.init_engine() game.Game.init_all(lvl) engine.add_obj(game.Game.ground) engine.add_obj(game.Game.rocket) game.cheat() engine.set_keyboard_handler(game.keyboard_cb) game.load()
def init(): global score score = 0 engine.init_screen(W, H) engine.init_engine() turtle.bgcolor('black') engine.set_keyboard_handler(inputs) engine.add_random_event(0.01, rock) engine.add_random_event(0.01, hole) engine.add_random_event(0.1, newStar) engine.add_obj(buggy1) engine.add_obj(_ground(120, 320, -320, 240)) draw_score() engine.add_obj(_starstuff(1, 1)) engine.register_collision(_buggy, _rock, collbr) engine.register_collision(_rock, _buggy, collrb) engine.register_collision(_buggy, _hole, collbh) engine.register_collision(_hole, _buggy, collhb) engine.register_collision(_rocket, _rock, collrtr) engine.register_collision(_rock, _rocket, collrrt)
def play(): global s s = S() engine.init_engine() engine.set_keyboard_handler(input_cb) engine.add_obj(Ground(MINX, GROUNDY, MAXX, MINY)) s.me = Me(0, GROUNDY + 10) engine.add_obj(s.me) # the grid o' evil for i in range(INVADERROWS): for j in range(INVADERCOLS): enemy = Invader(XGRIDSTART + j * INVADERHSPACE, YGRIDSTART - i * INVADERVSPACE, INVADERSPEED, 0) s.invaders.append(enemy) engine.add_obj(enemy) engine.add_random_event(FIREPROB, fire_cb) engine.add_random_event(UFOPROB, ufo_cb) # not quite so random - do this at start of each time step # order is important - if no invaders left, gridmove won't be happy engine.add_random_event(1.0, winlose_cb) engine.add_random_event(1.0, gridmove_cb) engine.register_collision(Ground, Bomb, coll_ground1) engine.register_collision(Bomb, Ground, coll_ground2) engine.register_collision(UFO, MyShot, coll_air2air_bonus) engine.register_collision(MyShot, UFO, coll_air2air_bonus) engine.register_collision(Invader, MyShot, coll_air2air) engine.register_collision(MyShot, Invader, coll_air2air) engine.register_collision(Ground, Invader, coll_gameover1) engine.register_collision(Invader, Ground, coll_gameover2) engine.register_collision(Me, Bomb, coll_loselife1) engine.register_collision(Bomb, Me, coll_loselife2) draw_score() engine.engine()
def play(): global s s = S() engine.init_engine() engine.set_keyboard_handler(input_cb) s.me = Me() engine.add_obj(s.me) engine.add_random_event(0.01, spawn_asteroid_cb) engine.register_collision(Asteroid, MyShot, col_asteroid) engine.register_collision(MyShot, Asteroid, col_asteroid2) engine.register_collision(Me, Asteroid, col_gameover) engine.register_collision(Asteroid, Me, col_gameover) draw_score() s.playing = True engine.engine()
def play(): global s s = S() engine.init_engine() engine.set_keyboard_handler(input_cb) s.me = Me() engine.add_random_event(0.01, leftturn_straight_cb) engine.add_random_event(0.01, rightturn_straight_cb) engine.add_obj(s.me) place_default_post_cb() engine.register_collision(Me, Post, col_post) engine.register_collision(Post, Me, col_post2) draw_text() draw_score() s.playing = True engine.engine()
def load_main_menu(): print("Loading the main menu...") pos_arrow = - game.Game.LENGTH / 5, game.Game.LENGTH / 9 pos_title = 0, game.Game.LENGTH / 3 x0, y0 = pos_arrow[0] + 40, pos_arrow[1] - Menu.LINE_HEIGHT / 2 + 5 # + 5 to have arrow and text aligned font_size_title = 55 engine.set_keyboard_handler(Menu.keyboard_main) assert Menu.select_arrow is None, "Select arrow already initialized" Menu.select_arrow = engine.GameObject(*pos_arrow, 0, 0, "select_arrow", "black") engine.add_obj(Menu.select_arrow) Menu.cursor_position = 0 turtle.clear() turtle.setpos(*pos_title) # options to select turtle.write("Name of the game", align="center", font=("Arial", font_size_title, "normal")) str_list = ["Choose a level", "Tutorial", "Choose a skin", "Quit game"] for i in range(len(str_list)): turtle.setpos(x0, y0 - i * Menu.LINE_HEIGHT) turtle.write(str_list[i], font=("Arial", Menu.FONT_SIZE, "normal")) if not Menu.engine_launched: Menu.engine_launched = True engine.engine()
def circle_cb(): obj = Circle(0, 0, 1, 1) engine.add_obj(obj) def quit_cb(key): if key == 'q' or key == 'Q': engine.exit_engine() # main routine if __name__ == '__main__': #random.seed(86753) engine.init_screen(WIDTH, HEIGHT) engine.init_engine() engine.set_keyboard_handler(quit_cb) engine.add_random_event(0.005, circle_cb) engine.register_collision(Circle, Circle, coll_circle) engine.register_collision(Boom, Circle, coll_boom1) engine.register_collision(Circle, Boom, coll_boom2) for i in range(4): ypos = engine.MAXY - i * HEIGHT/3 obj = DelayedBox(engine.MINX, ypos, i*250) engine.add_obj(obj) engine.add_obj(PulsingCircle(50, 50, 100)) engine.add_obj(BigRect(engine.MINX + 25, 0, engine.MAXX - 25, engine.MINY + 25)) engine.add_obj(BigRect(0, 100, 25, 25)) engine.add_obj(BigRect(-200, 150, -100, 125)) engine.engine()
engine.add_obj(obj) def quit_cb(key): if key == 'q' or key == 'Q': engine.exit_engine() # main routine if __name__ == '__main__': #random.seed(86753) engine.init_screen(WIDTH, HEIGHT) engine.init_engine() engine.set_keyboard_handler(quit_cb) engine.add_random_event(0.005, circle_cb) engine.register_collision(Circle, Circle, coll_circle) engine.register_collision(Boom, Circle, coll_boom1) engine.register_collision(Circle, Boom, coll_boom2) for i in range(4): ypos = engine.MAXY - i * HEIGHT / 3 obj = DelayedBox(engine.MINX, ypos, i * 250) engine.add_obj(obj) engine.add_obj(PulsingCircle(50, 50, 100)) engine.add_obj( BigRect(engine.MINX + 25, 0, engine.MAXX - 25, engine.MINY + 25)) engine.add_obj(BigRect(0, 100, 25, 25)) engine.add_obj(BigRect(-200, 150, -100, 125)) engine.engine()
def game(): engine.init_engine() engine.set_mouse_handler(fire_cb) engine.set_keyboard_handler(quit_cb) play()
y = HEIGHT//2 - row * B tile = Tile(x, y) engine.add_obj(tile) def recalcdeltas(): global deltax, deltay deltay = SPEED * math.sin(math.radians(heading)) deltax = SPEED * math.cos(math.radians(heading)) def input_cb(key): global heading if key == 'q' or key == 'Q': engine.exit_engine() elif key == 'Left': heading = (heading + HEADINGSTEP) % 360 elif key == 'Right': heading = (heading - HEADINGSTEP) % 360 recalcdeltas() if __name__ == '__main__': engine.init_screen(WIDTH, HEIGHT) engine.init_engine(delay=0) # no delay needed with so many objects! engine.set_keyboard_handler(input_cb) recalcdeltas() makeshipshape() maketileshape() maketilegrid() engine.add_obj(Me()) # needs to be after tile grid created engine.engine()
engine.del_obj(target) ntargets -= 1 if ntargets == 0: win(timer.gettime()) def draw_score(time): turtle.goto(0, HEIGHT//2 - 25) turtle.dot(50, ROOFCOLOR) turtle.color('black') turtle.write(time, align='center', font=('Arial', 14, 'normal')) def win(time): mesg = 'Time to complete: %d' % time turtle.goto(0, -30) turtle.color('black') turtle.write(mesg, True, align='center', font=('Arial', 24, 'italic')) if __name__ == '__main__': engine.init_screen(WIDTH, HEIGHT) engine.init_engine() engine.set_keyboard_handler(input_cb) makescenery() makeguns() me = Gun() engine.add_obj(me) timer = Timer() engine.add_obj(timer) engine.register_collision(Shot, Target, coll1) engine.register_collision(Target, Shot, coll2) engine.engine()
# moving boxes, added in response to space bar being pressed import engine WIDTH = 640 HEIGHT = 480 class Box(engine.GameObject): def __init__(self): super().__init__(0, 0, +1, 0, 'square', 'red') def keyboard_cb(key): if key == 'space': box = Box() engine.add_obj(box) if key == 'Escape' : engine.exit_engine() if __name__ == '__main__': engine.init_screen(WIDTH, HEIGHT) engine.init_engine() engine.set_keyboard_handler(keyboard_cb) engine.engine()
def game(): engine.init_engine() engine.set_keyboard_handler(input_cb) play()
closest_dist = abs(i[0] - zero_pos) ret = [x if x[0] > zero_pos + 100 or x[0] < zero_pos else (x[0], closest_point[1]) for x in mnt_sort] # make the flat spot just like a bulldozer would do!! ret.append((width, 0)) ret.append((0, 0)) return tuple(ret) if __name__ == '__main__': engine.init_screen(WIDTH, HEIGHT) engine.init_engine() engine.set_keyboard_handler(keyboard_cb) # build the level lvl = build_random_map(wlength) # we're on the moon... turtle.bgcolor("#000044") # register the shapes reg_ground() reg_ship() reg_sun() reg_enemy() reg_bullet() reg_fuel_bar(100) reg_speed_bar(0)
def keyboard_callback(key): if key == 'space': lunar_lander.toggleMotor() if key == 'h': lunar_lander.turnLeft() if key == 'l': lunar_lander.turnRight() return keyboard_callback if __name__ == '__main__': engine.init_screen(WIDTH, HEIGHT) engine.init_engine() addShapesToEngine() screen = Screen(WIDTH, HEIGHT) engine.add_obj(screen) lander = LunarLander() engine.add_obj(lander) engine.add_obj(Sun()) engine.add_obj(Ground()) registerCollisionCallbacks() engine.set_keyboard_handler(getLunarLanderKeyboardCallback(lander)) engine.engine()