[Pygame | Pyopengl] Mit Objekten interagieren
Verfasst: Samstag 4. Juli 2015, 20:35
Liebe Leser,
ich würde gerne wissen, wie bzw. ob man mit Pygame und PyopenGL (und ggf. noch anderen Modulen) mit objekten im Pygame Fenster agieren kann.
Beispiel:
Wenn man dieses Skript ausführt, soll man Beispielsweise auf den Würfel klicken, sodass dessen Farbe wird dann neu zufällig generiert wird.
Hat jemand eine Idee oder weiß wie's geht?
Vielen Dank für eure Hilfe!
ich würde gerne wissen, wie bzw. ob man mit Pygame und PyopenGL (und ggf. noch anderen Modulen) mit objekten im Pygame Fenster agieren kann.
Beispiel:
Code: Alles auswählen
import pygame, os
from pygame.locals import *
from OpenGL.GL import *
from OpenGL.GLU import *
vertices = (
(1, -1, -1),
(1, 1, -1),
(-1, 1, -1),
(-1, -1, -1),
(1, -1, 1),
(1, 1, 1),
(-1, -1, 1),
(-1, 1, 1)
)
edges = (
(0,1),
(0,3),
(0,4),
(2,1),
(2,3),
(2,7),
(6,3),
(6,4),
(6,7),
(5,1),
(5,4),
(5,7),
)
surfaces = (
(0,1,2,3),
(3,2,7,6),
(6,7,5,4),
(4,5,1,0),
(1,5,7,2),
(4,0,3,6)
)
colors = (
(1,0,0),
(0,1,0),
(0,0,1),
(1,0,0),
(1,1,1),
(0,1,1),
(1,0,0),
(0,1,0),
(0,0,1),
(1,0,0),
(1,1,1),
(0,1,1)
)
def Cube():
glBegin(GL_QUADS)
for surface in surfaces:
x = 0
for vertex in surface:
x += 1
glColor3fv(colors[x])
glVertex3fv(vertices[vertex])
glEnd()
glBegin(GL_LINES)
for edge in edges:
for vertex in edge:
glVertex3fv(vertices[vertex])
glEnd()
def main():
pygame.init()
display = (800,600)
pygame.display.set_mode(display,DOUBLEBUF|OPENGL)
gluPerspective(45, float(display[0])/float(display[1]), 0.1, 50.0)
glTranslatef(0.0, 0.0, -5)
while True:
for event in pygame.event.get():
if event.type == pygame.QUIT:
os._exit(0)
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
glTranslatef(-0.1,0,0)
if event.key == pygame.K_RIGHT:
glTranslatef(0.1,0,0)
if event.key == pygame.K_UP:
glTranslatef(0,0.1,0)
if event.key == pygame.K_DOWN:
glTranslatef(0,-0.1,0)
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 4:
glTranslatef(0,0,-1)
if event.button == 5:
glTranslatef(0,0,1)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
Cube()
pygame.display.flip()
pygame.time.wait(10)
main()
Hat jemand eine Idee oder weiß wie's geht?
Vielen Dank für eure Hilfe!