from math import * def standard_wave_1(enemy_type, x_speed = 2, landing_speed = 4, nb_h = 6, nb_v = 4, margin_h = 16, margin_v = 10, size = [20, 12], screen_borders = [13, 305, 12, 90]): #rectangular disposition, enemies land by the up of the screen #bounce_on_borders must be false for this enemy type! tab = " " res = tab + "{ --Standard wave 1 with enemy type " + enemy_type + "\n" + 2 * tab + "{\n" + 3 * tab + '"' + enemy_type + '",\n' + 3 * tab + "{" landing_x_offset = (screen_borders[0] + screen_borders[1]) / 2 - (nb_h * size[0] + margin_h * (nb_h - 1)) / 2 landing_y_offset = - size[1] for i in range(nb_h): #initial positions for j in range(nb_v): res += "{" + str(landing_x_offset + i * (size[0] + margin_h)) + ", " + str(landing_y_offset - j * (size[1] + margin_v)) + "}, " res += "},\n" + 3 * tab duration = (screen_borders[1] - screen_borders[0] - nb_h * (size[0] + margin_h) + margin_h) / x_speed res += "{{" + str(x_speed) + ", 0, " + str(duration) + ", 0}, {" + str(-x_speed) + ", 0, " + str(duration) + ", 0}}," res += "\n" + 3 * tab landing_duration = (screen_borders[2] - landing_y_offset + nb_v * (size[1] + margin_v) - margin_v) / landing_speed res += "{{0, " + str(landing_speed) + ", " + str(landing_duration) + ", 0}, {" + str(-x_speed) + ", 0, " + str(duration / 2) + ", 0}}" res += "\n" + 2 * tab + "},\n" + tab + "}," return res def standard_wave_2(enemy_type, x_speed = 2, landing_speed = 4, nb_h = 6, nb_v = 4, margin_h = 16, margin_v = 10, size = [20, 12], screen_borders = [12, 306, 12, 90]): #enemies land by the sides tab = " " res = tab + "{ --Standard wave 2 with enemy type " + enemy_type + "\n" + 2 * tab + "{\n" + 3 * tab + '"' + enemy_type + '",\n' + 3 * tab + "{" landing_x_offset = - size[0] landing_y_offset = screen_borders[2] for i in range(nb_h): #initial positions for j in range((nb_v+1) / 2): res += "{" + str(landing_x_offset - i * (size[0] + margin_h)) + ", " + str(landing_y_offset + 2 * j * (size[1] + margin_v)) + "}, " res += "},\n" + 3 * tab duration = (screen_borders[1] - screen_borders[0] - nb_h * (size[0] + margin_h) + margin_h - (size[0] + margin_h) / 2) / x_speed res += "{{" + str(x_speed) + ", 0, " + str(duration) + ", 0}, {" + str(-x_speed) + ", 0, " + str(duration) + ", 0}}," res += "\n" + 3 * tab landing_duration = (- landing_x_offset + (nb_h * (size[0] + margin_h) - margin_h + screen_borders[0] + screen_borders[1] - (size[0] + margin_h) / 2 - size[0]) / 2) / landing_speed res += "{{" + str(landing_speed) + ", 0, " + str(landing_duration) + ", 0}, {" + str(-x_speed) + ", 0, " + str(duration / 2) + ", 0}}" res += "\n" + 2 * tab + "},\n" res += 2 * tab + "{\n" + 3 * tab + '"' + enemy_type + '",\n' + 3 * tab + "{" landing_x_offset = 318 for i in range(nb_h): #initial positions for j in range(nb_v / 2): res += "{" + str(landing_x_offset + i * (size[0] + margin_h)) + ", " + str(landing_y_offset + (2 * j + 1) * (size[1] + margin_v)) + "}, " res += "},\n" + 3 * tab res += "{{" + str(x_speed) + ", 0, " + str(duration) + ", 0}, {" + str(-x_speed) + ", 0, " + str(duration) + ", 0}}," res += "\n" + 3 * tab res += "{{" + str(-landing_speed) + ", 0, " + str(landing_duration) + ", 0}, {" + str(-x_speed) + ", 0, " + str(duration / 2) + ", 0}}" res += "\n" + 2 * tab + "},\n" + tab + "}," return res def standard_boss_wave(boss_type, enemy_type, nb_boss = 1, boss_init_speed = [1, 0.5], boss_box = [10, 308, 12, 55], boss_size = [30, 18], boss_landing_speed = 2, boss_margin = 100, nb_enemy_h = 6, nb_enemy_v = 2, enemy_box = [12, 306, 80, 140], enemy_size = [20, 12], enemy_margin_h = 16, enemy_margin_v = 10, enemy_landing_speed = 4, enemy_speed = 2): tab = " " res = tab + "{ --Standard boss wave with enemy type " + enemy_type + " and boss " + boss_type + "\n" + 2 * tab + "{\n" + 3 * tab + '"' + enemy_type + '",\n' + 3 * tab + "{" landing_x_offset = - enemy_size[0] landing_y_offset = enemy_box[2] for i in range((nb_enemy_h+1) / 2): #initial positions for j in range(nb_enemy_v): res += "{" + str(landing_x_offset - i * (enemy_size[0] + enemy_margin_h)) + ", " + str(landing_y_offset + j * (enemy_size[1] + enemy_margin_v)) + "}, " res += "},\n" + 3 * tab duration = (enemy_box[1] - enemy_box[0] - nb_enemy_h * (enemy_size[0] + enemy_margin_h) + enemy_margin_h) / enemy_speed res += "{{" + str(enemy_speed) + ", 0, " + str(duration) + ", 0}, {" + str(-enemy_speed) + ", 0, " + str(duration) + ", 0}}," res += "\n" + 3 * tab wave_width = nb_enemy_h * (enemy_size[0] + enemy_margin_h) - enemy_margin_h landing_duration = (- landing_x_offset + ((nb_enemy_h + 1) / 2) * (enemy_size[0] + enemy_margin_h) - enemy_margin_h + (enemy_box[1] - enemy_box[0] - wave_width) / 2) / enemy_landing_speed res += "{{" + str(enemy_landing_speed) + ", 0, " + str(landing_duration) + ", 0}, {" + str(-enemy_speed) + ", 0, " + str(duration / 2) + ", 0}}" res += "\n" + 2 * tab + "},\n" res += 2 * tab + "{\n" + 3 * tab + '"' + enemy_type + '",\n' + 3 * tab + "{" landing_x_offset = landing_x_offset + 2 * landing_duration * enemy_landing_speed + enemy_size[0] + enemy_margin_h for i in range(nb_enemy_h / 2): #initial positions for j in range(nb_enemy_v): res += "{" + str(landing_x_offset + i * (enemy_size[0] + enemy_margin_h)) + ", " + str(landing_y_offset + j * (enemy_size[1] + enemy_margin_v)) + "}, " res += "},\n" + 3 * tab res += "{{" + str(enemy_speed) + ", 0, " + str(duration) + ", 0}, {" + str(-enemy_speed) + ", 0, " + str(duration) + ", 0}}," res += "\n" + 3 * tab res += "{{" + str(-enemy_landing_speed) + ", 0, " + str(landing_duration) + ", 0}, {" + str(-enemy_speed) + ", 0, " + str(duration / 2) + ", 0}}" res += "\n" + 2 * tab + "},\n" for i in range(nb_boss): res += 2 * tab + "{\n" + 3 * tab + '"' + boss_type + '",\n' + 3 * tab + "{" res += "{" + str(boss_box[0] + 1) + ", " + str(-boss_size[1] - i * boss_margin) + "}},\n" + 3 * tab res += "{{" + str(boss_init_speed[0]) + ", " + str(boss_init_speed[1]) + "}},\n" + 3 * tab res += "{" + str(boss_box[0]) + ", " + str(boss_box[1]) + ", " + str(boss_box[2]) + ", " + str(boss_box[3]) + "},\n" res += 3 * tab + "{{0, " + str(boss_landing_speed) + ", " + str((boss_size[1] + i * boss_margin + boss_box[2] + 2) / boss_landing_speed) + "}}\n" + 2 * tab + "},\n" res += tab + "}," return res def helper_1(): #used in custom wave 2 ret = "" for i in range(3): ret += "{" + str(- 20 - 35 * (3 - i)) + ", " + str(10 + 20 * i) + "}, " ret += "{" + str(- 20 - 35 * (3 - i)) + ", " + str(130 - 20 * i) + "}, " ret += "{-20, 70}" speeds = "{" + 7 * "{4, 0}, " + "}," print ret print speeds def helper_1b(): #used in custom wave 2 ret = "" for i in range(3): ret += "{" + str(298 - (- 20 - 35 * (3 - i))) + ", " + str(10 + 20 * i) + "}, " ret += "{" + str(298 - (- 20 - 35 * (3 - i))) + ", " + str(130 - 20 * i) + "}, " ret += "{" + str(298 - (-20)) + ", 70}" speeds = "{" + 7 * "{-4, 0}, " + "}," print ret print speeds def cw3(): r = "" for i in range(16): r += "{" + str(4*cos(i * pi / 8)) + ", " + str(4*sin(i*pi / 8)) + "}, " return r def cw5(): r = "" for i in range(7): r += "{" + str(4*cos(2 * i * pi / 7)) + ", " + str(4*sin(2 * i * pi / 7)) + "}, " return r