Files
python-tests/modules/Game.py
administrator 45c730a174 Changed Projectstructure + Some changes on pygame-test
Added Username function
Added Gameobjectposition lastframe
Added prototype function  stepping_movement
Code cleanup
2024-01-07 10:42:15 +01:00

106 lines
4.2 KiB
Python

import modules.User as User
import modules.Statics as Statics
import Controls
from math import pi, sin, cos
from direct.showbase.ShowBase import ShowBase
from direct.task import Task
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import Sequence
from panda3d.core import Point3
from panda3d.core import WindowProperties
from panda3d.core import Loader
from direct.showbase.ShowBase import ShowBase #Grundmodul zum Starten eines Fenster mit Grundszene
from direct.gui.OnscreenText import OnscreenText #Ermöglicht die direkte Einblendung von Texten
from direct.gui.DirectGui import * #Ermöglicht das Einblenden von Menüs und deren Manipulation
from panda3d.core import TextNode #Texte
from direct.task import Task
from panda3d.core import Vec4, Vec3
from panda3d.core import loadPrcFile #Ermöglicht das Laden eigener Konfigurationsdatein zur Panda3D API
import random
class game(ShowBase):
__debug_mode = [0,1,2,3,4]
__debuglevel = 0
__us = User.User
__statics = Statics.statics
#__ctrl = Controls.controls
# __game_mechanics = Game_Mechanics.Game_Mechanics()
__onscreentext1 = OnscreenText
__actor1 = 0
__p3d_conf = loadPrcFile("conf/conf.prc") #Pfadangabe zum .prc File
__keymap = {"up":False,
"down":False,
"left":False,
"right":False
}
def __init__(self) -> None:
ShowBase.__init__(self)
self.__us = User.User()
self.__statics = Statics.statics()
#self.__ctrl = Controls.controls(self)
#font1 = self.loader.load_font("/usr/share/fonts/TTF/Inconsolata-UltraExpandedExtraBold.ttf")
font1 = self.loader.load_font("data/fonts/Inconsolata-UltraExpandedExtraBold.ttf")
self.__onscreentext1 = OnscreenText(self.__statics._menupoints[0], font=font1, pos= (0.1,0))
self.__onscreentext1.setText("Ich bewege mich fortlaufen!")
#self.actor1 = Actor("data/models/myfile.bam")
self.__actor1 = self.loader.load_model("data/models/myfile.bam")
self.__actor1.getPos()
self.__actor1.reparentTo(self.render)
self.accept('arrow_up', self.update_keystate, ["up", True])
self.accept('arrow_up-up', self.update_keystate, ["up", False])
self.accept('arrow_down', self.update_keystate, ["down", True])
self.accept('arrow_down-up', self.update_keystate, ["down", False])
self.accept('arrow_left', self.update_keystate, ["left", True])
self.accept('arrow_left-up', self.update_keystate, ["left", False])
self.accept('arrow_right', self.update_keystate, ["right", True])
self.accept('arrow_right-up', self.update_keystate, ["right", False])
self.taskMgr.add(self.task1, "task1")
self.taskMgr.add(self.keyboard_event, "keyboard_event")
#Zusatzfunktionen innerhalb instanzierter ShowBase-Klasse
def update_keystate(self, controlName, controlState):
self.__keymap[controlName] = controlState
def setDebugMode(self, debugmode:int):
"""DEBUGLEVEL"""
self.__debuglevel = debugmode
#Taskfunctions and definitions
def task1(self, task):
_x = -2.8 + (task.time*0.3)
#print("Task läuft seit: " + str(_x))
#print(str(self.__actor1.getPos()))
#self.__actor1.setPos(1*_x,1*_x,0)
if (_x >= 2.8000):
print("Finished")
return Task.again
return Task.cont
def keyboard_event(self, task):
if(self.__debuglevel == 4): print(self.__keymap)
if (self.__keymap['up']):
self.__actor1.setPos(self.__actor1.getPos() + Vec3(0,0.2,0))
if(self.__debuglevel >= 3): print("Nach oben!")
if (self.__keymap['down']):
self.__actor1.setPos(self.__actor1.getPos() - Vec3(0,0.2,0))
if(self.__debuglevel >= 3): print("Nach unten!")
if (self.__keymap['left']):
self.__actor1.setPos(self.__actor1.getPos() - Vec3(0.2,0,0))
if(self.__debuglevel >= 3): print("Nach links!")
if (self.__keymap['right']):
self.__actor1.setPos(self.__actor1.getPos() + Vec3(0.2,0,0))
if(self.__debuglevel >= 3): print("Nach rechts!")
return Task.cont