Äîêóìåíò âçÿò èç êýøà ïîèñêîâîé ìàøèíû. Àäðåñ îðèãèíàëüíîãî äîêóìåíòà : http://kodomo.cmm.msu.su/trac/tanchiki/browser/tanchiki/game.py?rev=31
Äàòà èçìåíåíèÿ: Unknown
Äàòà èíäåêñèðîâàíèÿ: Tue Apr 12 00:29:23 2016
Êîäèðîâêà: IBM-866
game.py in tanchiki òÀÓ Tanchiki

source: tanchiki/game.py @ 31:48f019a6c1c6

Revision 31:48f019a6c1c6, 1.8 KB checked in by Peter Zotov <whitequark@òÀæ>, 5 years ago (diff)

Made a working sandbox.

Lineˆà
1fromˆàbodyˆàimportˆà*
2
3classˆàGame(object):
4ˆà ˆà ˆà ˆà max_base_delta =ˆà1
5ˆà ˆà ˆà ˆà max_turret_delta =ˆà1
6ˆà ˆà ˆà ˆà max_velocity =ˆà15
7ˆà ˆà ˆà ˆà bullet_speed =ˆà3
8
9ˆà ˆà ˆà ˆà defˆà__init__(self,ˆàwidth,ˆàheight,ˆàbodies):
10ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.bodies =ˆàbodies
11ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.width =ˆàwidth
12ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.height =ˆàheight
13
14ˆà ˆà ˆà ˆà defˆàstep(self,ˆàdelta_t):
15ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.__calculate_positions(delta_t)
16ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.__check_walls()
17ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.__check_collisions()
18ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.__update_positions()
19ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.__invoke_ticks()
20
21ˆà ˆà ˆà ˆà defˆà__calculate_positions(game,ˆàdelta_t):
22ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà forˆài inˆàgame.bodies :
23ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà i.next_position =ˆài.position +ˆài.velocity*(delta_t)
24
25ˆà ˆà ˆà ˆà defˆà__update_positions(self):
26ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà forˆài inˆàself.bodies :
27ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà i.position =ˆài.next_position
28
29ˆà ˆà ˆà ˆà defˆà__collides(self,ˆàbody1,ˆàbody2):
30ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà returnˆà(abs(body1.position +ˆàbody2.position*-1)ˆà<=ˆà(body1.radius +ˆàbody2.radius))ˆà\
31ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆàandˆà(body1 !=ˆàbody2)
32
33ˆà ˆà ˆà ˆà defˆà__handle_collision(self,ˆàbody1,ˆàbody2):
34ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ifˆàisinstance(body1,ˆàTank)ˆà==ˆàTrueˆà:ˆà
35ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ifˆàisinstance(body2,ˆàTank)ˆà==ˆàTrueˆà:
36ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà body1.controller.on_collision(body2)
37ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà body2.controller.on_collision(body1)
38ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà elseˆà:
39ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà body1.controller.on_hit(body2)
40ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà body1.controller.on_death()
41ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà elseˆà:
42ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ifˆàisinstance(body2,ˆàTank)ˆà==ˆàTrueˆà:
43ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà body2.controller.on_hit(body1)
44ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà body2.controller.on_death()
45
46ˆà ˆà ˆà ˆà defˆà__check_collisions(self):
47ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà forˆài inˆàrange(len(self.bodies))ˆà:
48ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà forˆàj inˆàrange(i,ˆàlen(self.bodies))ˆà:
49ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà a,ˆàb =ˆàself.bodies[i],ˆàself.bodies[j]
50ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ifˆàself.__collides(a,ˆàb)ˆà==ˆàTrueˆà:
51ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.__handle_collision(a,ˆàb)
52
53ˆà ˆà ˆà ˆà defˆà__check_walls(self):
54ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà forˆài inˆàself.bodies :
55ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ifˆà((i.next_position.x -ˆài.radius)ˆà<=ˆà-self.width/2)ˆàorˆà\
56ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà((i.next_position.y -ˆài.radius)ˆà<=ˆà-self.width/2)ˆàorˆà\
57ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà((i.next_position.x +ˆài.radius)ˆà>=ˆàself.width/2)ˆàorˆà\
58ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà((i.next_position.y +ˆài.radius)ˆà>=ˆàself.height/2)ˆà:
59ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ifˆàisinstance(i,ˆàTank)ˆà:
60ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà i.controller.on_wall()
61ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà elseˆà:
62ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.bodies.remove(i)
63
64ˆà ˆà ˆà ˆà defˆà__invoke_ticks(self):
65ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà forˆài inˆàself.bodies :
66ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ifˆàisinstance(i,ˆàTank)ˆà:
67ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà i.controller.on_tick([],ˆà[])
Note: See TracBrowser for help on using the repository browser.