Aqui viene lo interesante, el codigo
import pygame
from pygame import *
from OpenGL.GL import *
class Character:
def __init__(self):
#--Position
self.posX = 0.0
self.posY = 0.0
self.posZ = 0.0
#--Movement
self.rot = 0.0
self.speed_left = 0.0
self.speed_right = 0.0
self.speed_top = 0.0
self.speed_down = 0.0
#--General
self.color = (1.0, 0.0, 0.0)
self.size = 0.2
def Update(self):
self.posX -= self.speed_left
self.posX += self.speed_right
self.posY += self.speed_top
self.posY -= self.speed_down
def Draw(self):
glBegin(GL_QUADS)
glColor3f(self.color[0], self.color[1], self.color[2])
glVertex3f(self.posX - self.size , self.posY - self.size , self.posZ)
glVertex3f(self.posX - self.size , self.posY + self.size , self.posZ)
glVertex3f(self.posX + self.size , self.posY + self.size , self.posZ)
glVertex3f(self.posX + self.size , self.posY - self.size , self.posZ)
glEnd()
def UpdateScreen ():
glClearColor(0.0, 0.0, 0.0, 0.0)
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT)
# Select GL_MODELVIEW matrix
glMatrixMode(GL_MODELVIEW)
glLoadIdentity()
character.Draw();
# Save current GL_MODELVIEW matrix state
glPushMatrix()
# Restore last GL_MODELVIEW matrix state
glPopMatrix()
# Flush everything to screen
glFlush()
# Flip the double-buffer
pygame.display.flip()
def SetUp():
pygame.init()
# we want a fullscreen, 1280x1024, SDL surface that supports doublebuffered OpenGL
pygame.display.set_mode((500,500),OPENGL|DOUBLEBUF)
# Select GL_PROJECTION matrix
glMatrixMode(GL_PROJECTION)
# Reset GL_PROJECTION matrix
glLoadIdentity()
def Main():
SetUp()
global character
character = Character()
while True:
character.Update()
UpdateScreen()
for event in pygame.event.get():
if event.type == QUIT:
return
if event.type == KEYDOWN:
if event.key == K_LEFT:
character.speed_left += 0.01
if event.key == K_RIGHT:
character.speed_right += 0.01
if event.key == K_DOWN:
character.speed_down += 0.01
if event.key == K_UP:
character.speed_top += 0.01
if event.type == KEYUP:
if event.key == K_LEFT:
character.speed_left = 0
if event.key == K_RIGHT:
character.speed_right = 0
if event.key == K_DOWN:
character.speed_down = 0
if event.key == K_UP:
character.speed_top = 0
Main()
Voy a seguir trabajando en este mismo tema, asi que cualquier comentario es bienvenido.
No hay comentarios:
Publicar un comentario