Python:pyglet学习(4):弹球游戏
简简单单
代码:
import pyglet as p from pyglet.gl import * win=p.window.Window(800,800) x=0 y=0 z=0 xs=0.1 ys=0.1 zs=0.1 s=1 pos = [0, 0, -20] rot_y = 0 rot_x=0 rot_z=0 #@win.event def on_draw(a): global pos_z, rot_y,rot_z,rot_x global x,y,z,xs,ys,zs,s win.clear() glMatrixMode(GL_PROJECTION) glLoadIdentity() gluPerspective(90, 1, 0.1, 100) glMatrixMode(GL_MODELVIEW) glLoadIdentity() glTranslatef(*pos) glRotatef(rot_y, 0, 1, 0) glRotatef(rot_z,0,0,1) glRotatef(rot_x,1,0,0) glBegin(GL_LINE_LOOP) glVertex3f(-10,-15,0) glVertex3f(10,-15,0) glVertex3f(10,15,0) glVertex3f(-10,15,0) glVertex3f(-10,15,-15) glVertex3f(-10,-15,-15) glVertex3f(-10,-15,0) glVertex3f(-10,-15,-15) glVertex3f(10,-15,-15) glVertex3f(10,-15,0) glVertex3f(10,-15,-15) glVertex3f(10,15,-15) glVertex3f(10,15,0) glVertex3f(10,15,-15) glVertex3f(-10,15,-15) glVertex3f(-10,15,0) glEnd()#out glBegin(GL_LINE_LOOP) glVertex3f(x,y,z+s) glVertex3f(x+s,y,z+s) glVertex3f(x+s,y+s,z+s) glVertex3f(x,y+s,z+s) glVertex3f(x,y+s,z) glVertex3f(x,y,z) glVertex3f(x,y,z+s) glVertex3f(x,y,z) glVertex3f(x+s,y,z) glVertex3f(x+s,y,z+s) glVertex3f(x+s,y,z) glVertex3f(x+s,y+s,z) glVertex3f(x+s,y+s,z+s) glVertex3f(x+s,y+s,z) glVertex3f(x,y+s,z) glVertex3f(x,y+s,z+s) glEnd() x+=xs y+=ys z+=zs print(x,y,z,xs,ys,zs) if(x>9 or x<-10): xs=-xs x+=xs if(y>14 or y<-15): ys=-ys y+=ys if(z>-15 or z<-1): zs=-zs z+=zs glFlush() @win.event def on_key_press(s,m): global pos_z, rot_y,rot_z,rot_x if s == pyglet.window.key.W: pos[2] -= 1 if s == pyglet.window.key.S: pos[2] += 1 if s == pyglet.window.key.A: pos[0]-=1 if s == pyglet.window.key.D: pos[0] += 1 if s == pyglet.window.key.R: pos[1]-=1 if s == pyglet.window.key.F: pos[1] += 1 if s == pyglet.window.key.I: rot_z -= 5 if s == pyglet.window.key.K: rot_z += 5 if s == pyglet.window.key.J: rot_x-=5 if s == pyglet.window.key.L: rot_x+= 5 if s == pyglet.window.key.O: rot_y-=5 if s == pyglet.window.key.P: rot_y += 5 p.clock.schedule_interval(on_draw, 1/30.0) p.app.run()
效果(可能无法播放):
只是加了一个移动的对象