91 lines
2.2 KiB
Python
91 lines
2.2 KiB
Python
import pygame
|
|
from OpenGL.GL import *
|
|
from OpenGL.GLU import *
|
|
from OpenGL.GLUT import *
|
|
import sys
|
|
import os
|
|
|
|
|
|
# Pet Attribute
|
|
class VirtualPet:
|
|
def __init__(self):
|
|
self.happiness = 50
|
|
self.hunger = 50
|
|
|
|
def feed(self):
|
|
self.hunger -= 10
|
|
self.happiness += 5
|
|
|
|
def pet(self):
|
|
self.happiness += 10
|
|
|
|
def update(self):
|
|
self.hunger += 0.1
|
|
self.happiness -= 0.05
|
|
|
|
|
|
# OpenGL-Setup
|
|
def init_opengl():
|
|
glEnable(GL_BLEND) # Aktiviert Transparenz
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
|
|
glEnable(GL_DEPTH_TEST)
|
|
glClearColor(0.2, 0.6, 0.8, 0.0) # Himmelblau mit Transparenz (Alpha = 0.5)
|
|
gluPerspective(45, (800 / 600), 0.1, 50.0)
|
|
|
|
|
|
# Pet zeichnen (Würfel als Platzhalter)
|
|
def draw_pet():
|
|
glPushMatrix()
|
|
glColor4f(0, 0, 0, 0.2)
|
|
glTranslatef(0.0, 0.0, -5)
|
|
glRotatef(pygame.time.get_ticks() * 0.05, 0, 1, 0) # Rotation
|
|
glutWireCube(1) # Zeichnet den Würfel
|
|
glPopMatrix()
|
|
|
|
|
|
# Hauptprogramm
|
|
def main():
|
|
# Setze Umgebungsvariablen für transparentes Fenster
|
|
os.environ['SDL_VIDEODRIVER'] = 'x11'
|
|
os.environ['SDL_VIDEO_WINDOW_POS'] = '0,0'
|
|
os.environ['SDL_VIDEO_CENTERED'] = '1'
|
|
|
|
pygame.init()
|
|
display = pygame.display.set_mode((48, 48), pygame.DOUBLEBUF | pygame.OPENGL | pygame.NOFRAME | pygame.SRCALPHA)
|
|
pygame.display.set_caption("Transparent Virtual Pet")
|
|
clock = pygame.time.Clock()
|
|
display.set
|
|
|
|
pet = VirtualPet()
|
|
glutInit() # Initialisiert GLUT
|
|
init_opengl()
|
|
|
|
# Setze Transparenz für das Fenster
|
|
# pygame.display.set_mode((800, 600), pygame.OPENGL | pygame.DOUBLEBUF | pygame.NOFRAME | pygame.SRCALPHA)
|
|
|
|
running = True
|
|
while running:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
running = False
|
|
elif event.type == pygame.KEYDOWN:
|
|
if event.key == pygame.K_f:
|
|
pet.feed()
|
|
elif event.key == pygame.K_p:
|
|
pet.pet()
|
|
|
|
pet.update()
|
|
|
|
# OpenGL Rendering
|
|
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT)
|
|
draw_pet()
|
|
pygame.display.flip()
|
|
clock.tick(60)
|
|
|
|
pygame.quit()
|
|
sys.exit()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|