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()
按+号显示

效果(可能无法播放):

只是加了一个移动的对象

posted @ 2022-03-22 11:49  steven-eleven  阅读(99)  评论(0编辑  收藏  举报