<s> SCREEN_SIZE = ( <NUM_LIT> , <NUM_LIT> ) <EOL> from math import radians <EOL> from OpenGL . GL import * <EOL> from OpenGL . GLU import * <EOL> import pygame <EOL> from pygame . locals import * <EOL> import model3d <EOL> def resize ( width , height ) : <EOL> glViewport ( <NUM_LIT:0> , <NUM_LIT:0> , width , height ) <EOL> glMatrixMode ( GL_PROJECTION ) <EOL> glLoadIdentity ( ) <EOL> gluPerspective ( <NUM_LIT> , float ( width ) / height , <NUM_LIT> , <NUM_LIT> ) <EOL> glMatrixMode ( GL_MODELVIEW ) <EOL> glLoadIdentity ( ) <EOL> def init ( ) : <EOL> glEnable ( GL_DEPTH_TEST ) <EOL> glEnable ( GL_LIGHTING ) <EOL> glEnable ( GL_COLOR_MATERIAL ) <EOL> glEnable ( GL_TEXTURE_2D ) <EOL> glEnable ( GL_CULL_FACE ) <EOL> glShadeModel ( GL_SMOOTH ) <EOL> glClearColor ( <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:0.0> ) <EOL> glMaterial ( GL_FRONT , GL_AMBIENT , ( <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:1.0> ) ) <EOL> glMaterial ( GL_FRONT , GL_DIFFUSE , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:1.0> ) ) <EOL> glMaterial ( GL_FRONT , GL_SPECULAR , ( <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> ) ) <EOL> glMaterial ( GL_FRONT , GL_SHININESS , <NUM_LIT> ) <EOL> glLight ( GL_LIGHT0 , GL_AMBIENT , ( <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:0.0> , <NUM_LIT:1.0> ) ) <EOL> glLight ( GL_LIGHT0 , GL_DIFFUSE , ( <NUM_LIT> , <NUM_LIT> , <NUM_LIT> , <NUM_LIT:1.0> ) ) <EOL> glLight ( GL_LIGHT0 , GL_SPECULAR , ( <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> ) ) <EOL> glEnable ( GL_LIGHT0 ) <EOL> glLight ( GL_LIGHT0 , GL_POSITION , ( <NUM_LIT:0> , <NUM_LIT> , <NUM_LIT:1> , <NUM_LIT:0> ) ) <EOL> glEnable ( GL_FOG ) <EOL> glFogfv ( GL_FOG_COLOR , ( <NUM_LIT:1.0> , <NUM_LIT:1.0> , <NUM_LIT:1.0> ) ) <EOL> glFogi ( GL_FOG_MODE , GL_LINEAR ) <EOL> glFogf ( GL_FOG_START , <NUM_LIT> ) <EOL> glFogf ( GL_FOG_END , <NUM_LIT> ) <EOL> glFogfv ( GL_FOG_COLOR , ( <NUM_LIT:1.0> , <NUM_LIT> , <NUM_LIT> ) ) <EOL> glFogi ( GL_FOG_MODE , GL_EXP2 ) <EOL> glFogf ( GL_FOG_DENSITY , <NUM_LIT> ) <EOL> def run ( ) : <EOL> pygame . init ( ) <EOL> screen = pygame . display . set_mode ( SCREEN_SIZE , HWSURFACE | OPENGL | DOUBLEBUF ) <EOL> resize ( * SCREEN_SIZE ) <EOL> init ( ) <EOL> clock = pygame . time . Clock ( ) <EOL> tank_model = model3d . Model3D ( ) <EOL> tank_model . read_obj ( '<STR_LIT>' ) <EOL> rotation = <NUM_LIT:0.0> <EOL> while True : <EOL> for event in pygame . event . get ( ) : <EOL> if event . type == QUIT : <EOL> pygame . quit ( ) <EOL> quit ( ) <EOL> glClear ( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ) <EOL> time_passed = clock . tick ( ) <EOL> time_passed_seconds = time_passed / <NUM_LIT> <EOL> glLoadIdentity ( ) <EOL> glRotatef ( <NUM_LIT:15> , <NUM_LIT:1> , <NUM_LIT:0> , <NUM_LIT:0> ) <EOL> tank_distance = pygame . mouse . get_pos ( ) [ <NUM_LIT:1> ] / <NUM_LIT> <EOL> glTranslatef ( <NUM_LIT:0.0> , - <NUM_LIT> , - tank_distance ) <EOL> rotation += time_passed_seconds * <NUM_LIT> <EOL> glRotatef ( rotation , <NUM_LIT:0> , <NUM_LIT:1> , <NUM_LIT:0> ) <EOL> tank_model . draw_quick ( ) <EOL> pygame . display . flip ( ) <EOL> if __name__ == "<STR_LIT:__main__>" : <EOL> run ( ) </s>
