|
|
@ -39,6 +39,7 @@ import lever |
|
|
|
import trigger |
|
|
|
import worldobject |
|
|
|
|
|
|
|
import logic.teleportermap |
|
|
|
import logic.rollingstone |
|
|
|
import logic.colourboxes |
|
|
|
|
|
|
@ -82,64 +83,61 @@ class Level1(level.Level): |
|
|
|
|
|
|
|
### Task 1: Teleporters |
|
|
|
|
|
|
|
task5_size = 5, 8 # y, x -- Note, inverted. |
|
|
|
task5_size = 8, 5 |
|
|
|
task5_pos = (64 * 12, 48 * 19) |
|
|
|
|
|
|
|
task5_nturns = random.randint(2, 4) * 2 - 1 |
|
|
|
tmap = logic.teleportermap.generate_teleporter_map3(*task5_size) |
|
|
|
|
|
|
|
playfield, nsteps, directions = ( |
|
|
|
logic.rollingstone.generate_simple_unsolved_solvable_extra( |
|
|
|
task5_size[0], task5_size[1], task5_nturns, |
|
|
|
task5_size[0]*task5_size[1])) |
|
|
|
|
|
|
|
for x in range(task5_size[1]): |
|
|
|
for y in range(task5_size[0]): |
|
|
|
for x in range(task5_size[0]): |
|
|
|
for y in range(task5_size[1]): |
|
|
|
# if not (x, y) in tmap: |
|
|
|
# continue |
|
|
|
self.add_tile(task5_pos[0] - 64 * (x - 1), |
|
|
|
task5_pos[1] - 48 * y, |
|
|
|
'indoor%d' % random.randint(1, 6), blocking=False) |
|
|
|
|
|
|
|
|
|
|
|
for i, j in playfield: |
|
|
|
for x, y in tmap: |
|
|
|
self.objects.append( |
|
|
|
trigger.Trigger(self, |
|
|
|
task5_pos[0] - 64 * (j - 1), |
|
|
|
task5_pos[1] - 48 * i, |
|
|
|
task5_pos[0] - 64 * (x - 1), |
|
|
|
task5_pos[1] - 48 * y, |
|
|
|
[lambda x: self.player.set_pos( |
|
|
|
task5_pos[0] + 2 * 64, |
|
|
|
(task5_pos[1] |
|
|
|
- random.randint(0, task5_size[0] - 1) * 48))], |
|
|
|
- random.randint(0, task5_size[1] - 1) * 48))], |
|
|
|
self.imgs['hole'], |
|
|
|
[self.player], |
|
|
|
visible=False)) |
|
|
|
visible=False, |
|
|
|
no_stop=True)) |
|
|
|
|
|
|
|
for i in range(task5_size[1] + 1): |
|
|
|
for i in range(task5_size[0] + 1): |
|
|
|
self.add_tile(task5_pos[0] - 64 * i, |
|
|
|
task5_pos[1] + 48, |
|
|
|
'moat_horizontal') |
|
|
|
self.add_tile(task5_pos[0] - 64 * i, |
|
|
|
task5_pos[1] - task5_size[0] * 48, |
|
|
|
task5_pos[1] - task5_size[1] * 48, |
|
|
|
'moat_horizontal') |
|
|
|
self.add_tile(task5_pos[0] + 64, |
|
|
|
task5_pos[1] + 48, |
|
|
|
'moat_end_horizontal_flip') |
|
|
|
# self.add_tile(task5_pos[0] + 64, |
|
|
|
# task5_pos[1] - task5_size[0] * 48, |
|
|
|
# task5_pos[1] - task5_size[1] * 48, |
|
|
|
# 'moat_end_horizontal_flip') |
|
|
|
self.add_tile(task5_pos[0] - 64 * (task5_size[1] + 1), |
|
|
|
self.add_tile(task5_pos[0] - 64 * (task5_size[0] + 1), |
|
|
|
task5_pos[1] + 48, |
|
|
|
'moat_corner_south') |
|
|
|
self.add_tile(task5_pos[0] - 64 * (task5_size[1] + 1), |
|
|
|
task5_pos[1] - task5_size[0] * 48, |
|
|
|
self.add_tile(task5_pos[0] - 64 * (task5_size[0] + 1), |
|
|
|
task5_pos[1] - task5_size[1] * 48, |
|
|
|
'moat_corner_north') |
|
|
|
for i in range(task5_size[0]): |
|
|
|
self.add_tile(task5_pos[0] - 64 * (task5_size[1] + 1), |
|
|
|
self.add_tile(task5_pos[0] - 64 * (task5_size[0] + 1), |
|
|
|
task5_pos[1] - 48 * i, |
|
|
|
'moat_vertical') |
|
|
|
|
|
|
|
self.objects.append( |
|
|
|
lever.Lever(self, |
|
|
|
task5_pos[0] - 64 * (task5_size[1]), |
|
|
|
task5_pos[1] - (task5_size[0] / 2) * 48, |
|
|
|
task5_pos[0] - 64 * (task5_size[0]), |
|
|
|
task5_pos[1] - (task5_size[1] / 2) * 48, |
|
|
|
[lambda *x: self.complete_task(1)])) |
|
|
|
|
|
|
|
### Task 2: Rolling stone |
|
|
|