ya2 · news · projects · code · about

unit test: pyflakes
[pmachines.git] / pmachines / scenes / scene_teeter_domino_box_basketball.py
CommitLineData
4586cbf6
FC
1from pmachines.scene import Scene
2from pmachines.items.box import Box
3from pmachines.items.shelf import Shelf
c991401b 4from pmachines.items.domino import Domino, DownStrategy
4586cbf6
FC
5from pmachines.items.basketball import Basketball
6from pmachines.items.teetertooter import TeeterTooter
a5fddddc
FC
7
8
9class SceneTeeterDominoBoxBasketball(Scene):
10
a5fddddc
FC
11 @staticmethod
12 def name():
13 return _('Teeter tooter, domino, box and basket ball')
14
15 def _set_items(self):
a5fddddc
FC
16 self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=3, count=2, friction=1)]
17 self.items += [Basketball(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, pos=(.98, 1, 1.02))]
18 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-6.24, 0, -1.45))]
19 self.items += [TeeterTooter(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-6.24, 0, -1.20))]
20 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, r=24.60, friction=1, pos=(-6.15, 0, -.93))]
21 self.items += [Box(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.3, friction=1, model_scale=.5, pos=(-5.38, 0, -.93), r=24.60)]
22 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(5.37, 0, -.78))]
23 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(7.48, 0, -.78))]
24 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(4.74, 0, -1.95))]
25 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(6.88, 0, -1.95))]
26 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, pos=(4.83, 0, -1.39))]
27 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
28 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, pos=(5.67, 0, -1.39))]
29 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
30 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=1, pos=(6.59, 0, -1.39))]
31 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
32 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(.53, 0, -1.95), restitution=.95)]
33 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(2.63, 0, -1.95), restitution=.95)]
34 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-3.65, 0, 1.05), r=28, friction=0)]
35 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-1.27, 0, 1.72), restitution=.95)]
36 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(.88, 0, 1.72), restitution=.95)]
37 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(-1.67, 0, .55), restitution=.95)]
38 self.items += [Shelf(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=0, pos=(.52, 0, .55), restitution=.95)]
39 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.5, pos=(-1.73, 0, 1.11))]
40 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
41 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.5, pos=(-.97, 0, 1.11))]
42 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
43 self.items += [Domino(self._world, self._mouse_plane_node, self.cb_inst, self.current_bottom, self.repos, mass=.5, pos=(-.1, 0, 1.11))]
44 self.items[-1].set_strategy(DownStrategy(self.items[-1]._np, 35))
45
067a36db
FC
46 def _define_test_items(self):
47 self._pos_mgr.register('drag_start_0', (60, 60))
48 self._set_test_item('drag_stop_0', (-7.33, 4.24))
49 self._set_test_item('drag_stop_1', (-7.12, 4.24))
50 self._set_test_item('drag_start_1', (-6.77, 4.66))
51 self._set_test_item('drag_stop_2', (-6.77, 4.24))
52
a5fddddc
FC
53 def _instr_txt(self):
54 txt = _('Scene: ') + self.name() + '\n\n'
55 txt += _('Goal: every domino piece must be hit\n\n')
56 txt += _('keep \5mouse_l\5 pressed to drag an item\n\n'
57 'keep \5mouse_r\5 pressed to rotate an item')
58 return txt
59
60 def _win_condition(self):
61 return all(itm.strategy.win_condition() for itm in self.items) and not self._paused