1 | importˆàmath |
---|
2 | |
---|
3 | fromˆàOpenGL.GLUTˆàimportˆà* |
---|
4 | fromˆàOpenGL.GLUˆàimportˆà* |
---|
5 | fromˆàOpenGL.GLˆàimportˆà* |
---|
6 | |
---|
7 | fromˆàbodyˆàimportˆà* |
---|
8 | fromˆàvectorˆàimportˆà* |
---|
9 | fromˆàgameˆàimportˆà* |
---|
10 | importˆàgameˆàasˆàgame_module |
---|
11 | |
---|
12 | glutInit() |
---|
13 | glutInitDisplayMode(GLUT_RGBA |ˆàGLUT_DOUBLE |ˆàGLUT_DEPTH) |
---|
14 | |
---|
15 | classˆàGLWindow(object): |
---|
16 | ˆà ˆà ˆà ˆà defˆà__init__(self,ˆàgame,ˆàtank): |
---|
17 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.game,ˆàself.tank =ˆàgame,ˆàtank |
---|
18 | |
---|
19 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà window =ˆàglutCreateWindow('hello') |
---|
20 | |
---|
21 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà circle =ˆàglGenLists(1) |
---|
22 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glNewList(circle,ˆàGL_COMPILE) |
---|
23 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glPolygonMode(GL_FRONT,ˆàGL_LINE) |
---|
24 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glBegin(GL_POLYGON) |
---|
25 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà forˆài inˆàrange(100)ˆà: |
---|
26 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glVertex2f(math.cos(i*2*math.pi/100.0),ˆàmath.sin(i*2*math.pi/100.0)) |
---|
27 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glEnd() |
---|
28 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glEndList(circle) |
---|
29 | |
---|
30 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà defˆàdisplay(): |
---|
31 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glutSetWindow(window) |
---|
32 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glClear(GL_COLOR_BUFFER_BIT |ˆàGL_DEPTH_BUFFER_BIT) |
---|
33 | |
---|
34 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glLoadIdentity() |
---|
35 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glScalef(1/game.width,ˆà1/game.height,ˆà0) |
---|
36 | |
---|
37 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà forˆàbody inˆàgame.bodies : |
---|
38 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glPushMatrix() |
---|
39 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà #glTranslatef(body.position.x, body.position.y, 0) |
---|
40 | |
---|
41 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà #glScalef(body.radius, body.radius, 0) |
---|
42 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ifˆàbody isˆàtank : |
---|
43 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glColor3f(255,ˆà255,ˆà0) |
---|
44 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà elifˆàbody.__class__ isˆàTank : |
---|
45 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glColor3f(0,ˆà255,ˆà0) |
---|
46 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà elifˆàbody.__class__ isˆàTank : |
---|
47 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glColor3f(255,ˆà0,ˆà0) |
---|
48 | |
---|
49 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glCallList(circle) |
---|
50 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glPopMatrix() |
---|
51 | |
---|
52 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glutSwapBuffers() |
---|
53 | |
---|
54 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glutDisplayFunc(display) |
---|
55 | |
---|
56 | classˆàUi(object): |
---|
57 | ˆà ˆà ˆà ˆà defˆà__init__(self): |
---|
58 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà bodies =ˆà[ˆàTank(Vector.null,ˆàNone)ˆà] |
---|
59 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.game =ˆàGame(100,ˆà100,ˆàbodies) |
---|
60 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà self.window =ˆàGLWindow(self.game,ˆàbodies[0]) |
---|
61 | |
---|
62 | ˆà ˆà ˆà ˆà defˆàloop(self): |
---|
63 | ˆà ˆà ˆà ˆà ˆà ˆà ˆà ˆà glutMainLoop() |
---|
64 | |
---|
65 | ui =ˆàUi() |
---|
66 | ui.loop() |
---|