Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from kivy.app import App
- from kivy.uix.widget import Widget
- from kivy.clock import Clock
- from kivy.core.window import Window
- import kivent
- from random import randint
- from math import radians
- class TestGame(Widget):
- def __init__(self, **kwargs):
- super(TestGame, self).__init__(**kwargs)
- Clock.schedule_once(self.init_game)
- self.asteroids = []
- def init_game(self, dt):
- self.setup_map()
- self.setup_states()
- self.set_state()
- self.draw_some_stuff()
- Clock.schedule_interval(self.update, 0)
- def draw_some_stuff(self):
- size = Window.size
- for x in range(50):
- pos = (randint(0, size[0]), randint(0, size[1]))
- self.create_asteroid(pos)
- def create_asteroid(self, pos):
- x_vel = randint(-100, 100)
- y_vel = randint(-100, 100)
- angle = radians(randint(-360, 360))
- angular_velocity = radians(randint(-150, -150))
- shape_dict = {'inner_radius': 0, 'outer_radius': 32,
- 'mass': 50, 'offset': (0, 0)}
- col_shape = {'shape_type': 'circle', 'elasticity': .5,
- 'collision_type': 1, 'shape_info': shape_dict, 'friction': 1.0}
- col_shapes = [col_shape]
- physics_component = {'main_shape': 'circle',
- 'velocity': (x_vel, y_vel),
- 'position': pos, 'angle': angle,
- 'angular_velocity': angular_velocity,
- 'vel_limit': 250,
- 'ang_vel_limit': radians(200),
- 'mass': 50, 'col_shapes': col_shapes}
- create_component_dict = {'physics': physics_component,
- 'physics_renderer': {'texture': 'asteroid1', 'size': (64 , 64)},
- 'position': pos, 'rotate': 0}
- component_order = ['position', 'rotate',
- 'physics', 'physics_renderer']
- asteroidID = self.gameworld.init_entity(create_component_dict, component_order)
- self.asteroids.append(asteroidID)
- return asteroidID
- def setup_map(self):
- gameworld = self.gameworld
- gameworld.currentmap = gameworld.systems['map']
- def on_touch_move(self, touch):
- pos = (touch.x, touch.y)
- self.create_asteroid(pos)
- for aid in self.asteroids:
- apos = self.gameworld.entities[aid].position
- dvecx = touch.x-apos.x
- dvecy = touch.y-apos.y
- self.gameworld.entities[aid].physics.body.apply_impulse((dvecx,dvecy))
- print len(self.gameworld.entities)
- def on_touch_down(self, touch):
- pos = (touch.x, touch.y)
- self.create_asteroid(pos)
- def update(self, dt):
- self.gameworld.update(dt)
- def setup_states(self):
- self.gameworld.add_state(state_name='main',
- systems_added=['renderer', 'physics_renderer'],
- systems_removed=[], systems_paused=[],
- systems_unpaused=['renderer', 'physics_renderer'],
- screenmanager_screen='main')
- def set_state(self):
- self.gameworld.state = 'main'
- class YourAppNameApp(App):
- def build(self):
- Window.clearcolor = (0, 0, 0, 1.)
- if __name__ == '__main__':
- YourAppNameApp().run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement