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

source: tanchiki/game.py @ 28:4ef6336d1707

Revision 28:4ef6336d1707, 1.6 KB checked in by Peter Zotov <whitequark@òÀæ>, 5 years ago (diff)

Merge changes.

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