Check out the Pastebin Gadgets Shop. We have thousands of fun, geeky & affordable gadgets on sale :-)Want more features on Pastebin? Sign Up, it's FREE!
tweet

# KivEventTut3Mod

By: a guest on Apr 27th, 2014  |  syntax: Python  |  size: 3.17 KB  |  views: 46  |  expires: Never
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
1. from kivy.app import App
2. from kivy.uix.widget import Widget
3. from kivy.clock import Clock
4. from kivy.core.window import Window
5. import kivent
6. from random import randint
7. from math import radians
8.
9.
10. class TestGame(Widget):
11.     def __init__(self, **kwargs):
12.         super(TestGame, self).__init__(**kwargs)
13.         Clock.schedule_once(self.init_game)
14.         self.asteroids = []
15.
16.     def init_game(self, dt):
17.         self.setup_map()
18.         self.setup_states()
19.         self.set_state()
20.         self.draw_some_stuff()
21.         Clock.schedule_interval(self.update, 0)
22.
23.     def draw_some_stuff(self):
24.         size = Window.size
25.         for x in range(50):
26.             pos = (randint(0, size[0]), randint(0, size[1]))
27.             self.create_asteroid(pos)
28.
29.     def create_asteroid(self, pos):
30.         x_vel = randint(-100, 100)
31.         y_vel = randint(-100, 100)
32.         angle = radians(randint(-360, 360))
33.         angular_velocity = radians(randint(-150, -150))
34.         shape_dict = {'inner_radius': 0, 'outer_radius': 32,
35.             'mass': 50, 'offset': (0, 0)}
36.         col_shape = {'shape_type': 'circle', 'elasticity': .5,
37.             'collision_type': 1, 'shape_info': shape_dict, 'friction': 1.0}
38.         col_shapes = [col_shape]
39.         physics_component = {'main_shape': 'circle',
40.             'velocity': (x_vel, y_vel),
41.             'position': pos, 'angle': angle,
42.             'angular_velocity': angular_velocity,
43.             'vel_limit': 250,
45.             'mass': 50, 'col_shapes': col_shapes}
46.         create_component_dict = {'physics': physics_component,
47.             'physics_renderer': {'texture': 'asteroid1', 'size': (64 , 64)},
48.             'position': pos, 'rotate': 0}
49.         component_order = ['position', 'rotate',
50.             'physics', 'physics_renderer']
51.         asteroidID = self.gameworld.init_entity(create_component_dict, component_order)
52.         self.asteroids.append(asteroidID)
53.         return asteroidID
54.
55.     def setup_map(self):
56.         gameworld = self.gameworld
57.         gameworld.currentmap = gameworld.systems['map']
58.
59.     def on_touch_move(self, touch):
60.         pos = (touch.x, touch.y)
61.         self.create_asteroid(pos)
62.         for aid in self.asteroids:
63.           apos = self.gameworld.entities[aid].position
64.           dvecx = touch.x-apos.x
65.           dvecy = touch.y-apos.y
66.           self.gameworld.entities[aid].physics.body.apply_impulse((dvecx,dvecy))
67.         print len(self.gameworld.entities)
68.     def on_touch_down(self, touch):
69.         pos = (touch.x, touch.y)
70.         self.create_asteroid(pos)
71.     def update(self, dt):
72.         self.gameworld.update(dt)
73.
74.     def setup_states(self):
77.             systems_removed=[], systems_paused=[],
78.             systems_unpaused=['renderer', 'physics_renderer'],
79.             screenmanager_screen='main')
80.
81.     def set_state(self):
82.         self.gameworld.state = 'main'
83.
84.
85. class YourAppNameApp(App):
86.     def build(self):
87.         Window.clearcolor = (0, 0, 0, 1.)
88.
89.
90. if __name__ == '__main__':
91.     YourAppNameApp().run()
clone this paste RAW Paste Data
Top