Cleanup and redifine

This commit is contained in:
2023-12-22 13:29:18 +01:00
parent 1cbcd5b69a
commit 508451ab3a
5 changed files with 302 additions and 492 deletions

3
.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,3 @@
{
"python.REPL.enableREPLSmartSend": false
}

36
Game.py Normal file
View File

@@ -0,0 +1,36 @@
import User
import Statics
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
class Game(ShowBase):
__us = User.User
# __game_mechanics = Game_Mechanics.Game_Mechanics()
loadPrcFile("conf/conf.prc") #Pfadangabe zum .prc File
def __init__(self) -> None:
ShowBase.__init__(self)
__us = User.User()

View File

@@ -1,498 +1,12 @@
from ast import If
import sqlite3
import time
import threading
import tkinter
from turtle import left, width
import Game
import User
import sys
import tkinter as tk
from direct import task
from tkinter import Scale, StringVar
from random import random
#TODO Klassen erstellten
def button_event_close():
print("Programm wird geschlossen")
return 0;
def guithread():
window_size_x = 1024
window_size_y = 786
label_logged_in = tk.Label
label_highscore = tk.Label
label_lastlogin = tk.Label
#Hauptfenster-Block
window1 = tk.Tk() #Instanzierung von Fensterelement
window1.wm_title("Snake v1.0")
window1.geometry("1024x768")
window1.attributes("-topmost", True)
print("Erstelle User-Klassen Objekt")
us = User.User()
#Mit der Parameterübergabe der Klasseninstantz Tk, kann auch in einer Methode oder Funktion die Instantz direkt manipuliert werden!
def mainwindow_test(mainwindow : tk.Tk):
mainwindow.quit()
pass
def close_mainwindow():
print("Programm wird geschlossen!")
window1.quit()
def read_user(username, schaltf2:tk.Label, label_user_exists:tk.Label, all_listed_radiob:list): #Eingabeprüfung, bei Exception bei leerem String oder Eingabefeld
unametemp = username #eingabefeld_wert.get()
if(len(unametemp) != 0):
print("Lese Nutzereingabe: ", unametemp, "\n")
if(us.select(unametemp) == True):
welcome_msg = "Willkommen, " + us.getusername()
highscore_msg = "Dein letzter Highscore lag bei: " + str(us.gethighscore()) + " Punkten"
lastlogin_msg = "Du warst das letzte Mal am: " + us.getlastlogin() + " am Spielen"
label_logged_in = tk.Label(window1, text=welcome_msg)
label_highscore = tk.Label(window1, text=highscore_msg)
label_lastlogin = tk.Label(window1, text=lastlogin_msg)
label_logged_in.place(x=180, y=50)
label_highscore.place(x=180, y=80)
label_lastlogin.place(x=180, y=110)
label_user_exists.destroy()
schaltf2.destroy()
#Zerstört alle gezeichneten Insantzen von Radiobuttons
for radiobutton in all_listed_radiob:
radiobutton.destroy()
return
else:
print("Bitte etwas eingeben... Das Feld war leer!")
return
def input_new_user(*events):
#Eingabefenster-Block
subwindow1 = tk.Toplevel(window1)
subwindow1.wm_title("Eingabe")
subwindow1.geometry("400x200")
subwindow1.resizable(0,0) #Blockiert ein Skalieren des Fensters
window1.attributes("-topmost", False)
subwindow1.attributes("-topmost", True)
subwindow1.lift() #Hebt das Child-Fenster zumsammen mit attributes in den Vordergrund
eingabewert = StringVar(subwindow1)
def check_input():
if(len(eingabewert.get()) <= 0):
print("Es wurde keine Eingabe gemacht!")
else:
print(eingabewert.get())
us.createuser(eingabewert.get())
subwindow1.destroy()
build_mainwindow(window1)
return
textlabel = tk.Label(subwindow1, text="Bitte gib deinen Benutzernamen ein: ")
label_new_user = tk.Entry(subwindow1, width=40, textvariable=eingabewert)
button_ok = tk.Button(subwindow1, text="Erstellen", height=1, width=10, command=check_input)
button_abort = tk.Button(subwindow1, text="Abbrechen", command=subwindow1.destroy)
textlabel.place(x=5, y=5)
label_new_user.place(x=6, y=25)
button_ok.place(x=5, y=150)
button_abort.place(x=140, y=150)
#label_new_user.place(x=window_size_x*0.25, y=window_size_y*0.6)
def build_mainwindow(window1 : tk.Tk):
#Programmüberschrift
label1 = tk.Label(window1, text="Snake v1.0 written by CB") #Fenster Funktion für Textausgabe
label1.grid(row=0, column=0)
#Schaltflächen und Buttons
schaltf1 = tk.Button(window1, text="Fenster schließen", command=close_mainwindow)
schaltf1.place(x=5, y=window_size_y-50)
aktuell_ausgewaehlt =""
if(us.checkuserdb() == False):
#Anmeldedialog
print("Noch kein Nutzer angelegt!")
#messagebox.Message(master=None, message="Es wurde noch kein Spieler angelegt!", type=messagebox.OK, icon=messagebox.WARNING).show()
input_new_user()
elif(us.checkuserdb() == True):
print("Nutzer bereits vorhanden, wähle einen aus!")
#us.listallusers()
users = us.listallusers()
ausgewaehlt = tk.StringVar()
ausgewaehlt.set(0)
def value_select():
aktuell_ausgewaehlt = str(ausgewaehlt.get())
print(aktuell_ausgewaehlt)
return 0
print (aktuell_ausgewaehlt)
all_listed_radiob = list()
i = 0
for einzelwert in users:
radiob = tk.Radiobutton(window1, text=einzelwert, value=einzelwert, variable=ausgewaehlt, command=value_select)
all_listed_radiob.append(radiob)
print (users)
radiob.place(x=5, y=150+i)
i+=30
print("Alle Radiobuttons gesetzt!")
def login_user():
print("Melde ausgewählten Nutzer an!\n")
read_user(ausgewaehlt.get(), schaltf2, label_user_exists, all_listed_radiob)
return 0
label_user_exists = tk.Label(window1, text="Wähle deinen Spieler aus: ")
label_user_exists.place(x=2, y=30)
#eingabefeld_wert=tk.StringVar()
#eingabefeld=tk.Entry(window1, textvariable=eingabefeld_wert)
#eingabefeld.place(x=2, y=80)
schaltf2 = tk.Button(window1, text="Auswählen", command=login_user)
schaltf2.place(x=150, y=75)
build_mainwindow(window1)
#Nützliches Feature um zeitgesteuerte Events in Mainloop ausführen zu können
def message():
print('Keep yourself hyderated.')
window1.after(2000, message)
#window1.after(2000, message)
window1.mainloop() #Hauptschleife für gezeichnetes Fenster
us.__del__() #Stellt sicher, dass User-Klassenobjekt im korrekten Thread beendet wird
return 0;
class woscht(User.User):
def __init__(self) -> None:
UserInstanz = User
print("Unterklasser der Userklasse erstellt!\n")
print("So funktioniert die Klassenvererbung in Python...")
print("Dies ermöglicht eine modulare Aufbauweise ohne sich ständig bei kleineren Abweichung wiederholen zu müssen ober ganze Abschnitte zu kopieren und einzufügen\n")
def Testfunkiton(self):
print("Das ist eine Funktion, welche ausgeführt wird in einer Kindklasse. Sie existiert nicht in der Elternklasse!\n")
pass
def Testfunktion2(self):
print("Weitere Funktion, welche bei initialisieren der Klasse aufgerufen wird.\n")
pass
class woscht2(woscht):
def __init__(self) -> None:
woscht().Testfunktion2()
print("Unterklasse der Woschtklasse\n")
print("Die stellt eine Vererbung auf eine Vererbung dar. Hier können weitere Ergänzungen vorgenommen werden\n")
pass
#Eine Schleife, welche unter Zuhilfenahme einer Rekursion entsteht.
def recursive(zahl):
if(zahl==100):
print("Vorgang abgeschlossen!")
return
elif(zahl <= 100):
zahl += 1
time.sleep(0.001)
print(zahl, end="\r")
return recursive(zahl)
else:
print("Ergeniss konnte nicht erreicht werden!")
return
def main():
#t = threading.Thread(target=guithread ,args=())
#t.start()
#recursive(0)
#while(True):
# pass
"""
test = woscht()
test.getusername()
test2 = woscht2()
test2.Testfunkiton()
testtu = list()
#Mit dieser Funktion können mehrer Instanzen einer KLasse erstellt werden und im späteren Verlauf über den Listenindex bearbeitet werden.
for i in range(5):
testtu.append(woscht2())
print("Es wurden folgenden Klassen erstellt: ")
print (len(testtu))
for i in testtu:
print(i)
"""
# FH = open("user.txt", "w")
# FH.write(us.getusername())
# FH.close()
time.sleep(1)
return 0
def __main__():
game = Game.Game()
game.run()
if __name__ == "__main__":
main()
#class Game(ShowBase):
# def __init__(self):
# ShowBase.__init__(self)
# properties = WindowProperties()
# properties.setSize(1024, 768)
# properties.setTitle("Snake v1 written by CB")
# properties.setUndecorated(False)
# self.win.requestProperties(properties)
# self.scene = self.loader.loadModel("models/environment")
# self.scene.reparentTo(self.render)
# self.pandaActor = Actor("models/panda-model",
# {"walk": "models/panda-walk4"})
# self.pandaActor.reparentTo(self.render)
#game = Game()
#game.run()
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
loadPrcFile("conf/conf.prc") #Pfadangabe zum .prc File
class User_login:
__username = str()
__us = User.User
__btn = DirectButton
def __init__(self, username:str(), us:User.User, btn:DirectButton) -> None:
print("Loginklasse erstellt")
self.__btn = btn
self.__us=us
self.__username=username
def user_select(self):
print("Wähle Spieler aus: "+self.__username)
if(self.__us.select(self.__username) == True):
print("Spieler " + self.__us.getusername() + " wurde angelegt")
print("Dein letzter Highscore: " + str(self.__us.gethighscore()))
print("Dein letzter Login: " + self.__us.getlastlogin())
print(self.__btn)
self.__btn.destroy()
#self.__btn.clearText(self.__btn)
def setButtonObject(self, btn:DirectButton):
self.__btn = btn
print(self.__btn)
class MyApp(ShowBase):
us = User.User
key_pressed = False
def button_select_click(self, *username:str()):
__username = username
def button_select_click_login(self):
print(self.__username)
def __init__(self):
ShowBase.__init__(self) #Insantziert das Hauptfenster, diese stellen immer eine Instanz der ShowBase-Klasse dar
buttonImages = (
self.loader.loadTexture("data/panda_example/UI/UIButton.png"),
self.loader.loadTexture("data/panda_example/UI/UIButtonPressed.png"),
self.loader.loadTexture("data/panda_example/UI/UIButtonHighlighted.png"),
self.loader.loadTexture("data/panda_example/UI/UIButtonDisabled.png")
)
def button_enter_pressed():
print("Die Taste Enter wurde gedrückt!")
#print(label_input.get())
us.createuser(label_input.get())
app.finalizeExit()
def user_select_button():
print("Spielerauswahl-Button wurde gedrückt!")
us = User.User()
self.pandaActor = Actor("models/panda-model",
{"walk": "models/panda-walk4"})
self.pandaActor.setScale(0.005, 0.005, 0.005)
self.pandaActor.reparentTo(self.render)
self.myAnimControl = self.pandaActor.getAnimControl('walk') #get the AnimControl
#Erstellt ein DialogFenster
self.gameOverScreen = DirectDialog(frameSize = (-0.7, 0.7, -0.7, 0.7),
fadeScreen = 0.4,
relief = DGG.FLAT, frameTexture= "data/drawing_raw/mainmenu.png")
#Erstellt einen Button zum Parent-Dialogfenster
self.btn = DirectButton(text = "Quit",
command = self.quit,
pos = (0.3, 0, -0.2),
parent = self.gameOverScreen,
scale = 0.09, frameTexture=buttonImages, relief=DGG.FLAT, frameSize = (-4, 4, -1, 1),
clickSound = self.loader.loadSfx("data/panda_example/UIClick.ogg"))
self.btn.setTransparency(True)
label_menu = DirectDialog(text="Hauptmenü", parent=self.gameOverScreen, scale = 1, pos=(0,0,0.5))
if(us.checkuserdb() == False):
#label_enter_name_msg = DirectDialog(parent=self.gameOverScreen, text="Gib deinen Namen ein:", scale=0.05, pos=(-0.6, 0.5,0))
label_input = DirectEntry(parent=self.gameOverScreen, text="Name", width=15, scale = 0.05, pos=(-0.6,0.5,0), relief=DGG.SUNKEN)
elif(us.checkuserdb() == True):
pos_button_x = 0
pos_button_y = 0
for users in us.listallusers():
label_users = DirectButton
u = User_login(str(users), us, label_users)
label_users = DirectButton(text=str(users), command=u.user_select, parent=self.gameOverScreen, scale=0.09, pos=(-0.5,0,pos_button_y))
print(label_users)
u.setButtonObject(label_users)
pos_button_y -= 0.2
#self.taskMgr.doMethodLater(0.8,self.exampleTask, "exampleTask") #Hängt einen zustäzlichen Task in den Taskmanager ein
self.gameOverScreen.hide()
self.scene1_background = self.loader.loadModel("data/panda_example/Environment/environment")
self.scene1_background.reparentTo(self.render)
# Set Camera-Position (initial)
self.scene1_background.setPos(0, 32, 0) # (X, Z, Y)
self.scene1_background.setP(90)
self.accept('r', self.test)
self.accept('r-up', self.test2)
self.taskMgr.add(self.check_keyboard_input, "check_keyboard_input")
if(us.checkuserdb() == False):
self.accept('enter', button_enter_pressed)
#self.taskMgr.add(self.spinCameraTask, "SpinCameraTask")
def spinCameraTask(self, task):
angleDegrees = task.time * 6.0
angleRadians = angleDegrees * (pi / 180.0)
self.camera.setPos(20 * sin(angleRadians), -20 * cos(angleRadians), 3)
self.camera.setHpr(angleDegrees, 20, 0)
return Task.cont
"""
# Create scene 1
self.scene1 = self.render.attachNewNode("Scene 1")
self.scene1_text = OnscreenText(text="Scene 1", pos=(0, 0), scale=0.1, align=TextNode.ACenter)
self.scene1_text.show()
# Create scene 2
self.scene2 = self.render.attachNewNode("Scene 2")
self.scene2_text = OnscreenText(text="Scene 2", pos=(0, 0), scale=0.1, align=TextNode.ACenter)
self.scene2_text.hide()
# Create toggle text
self.toggle_text = OnscreenText(text="Toggle Scene: [SPACE] if it works!", pos=(0, -0.9), scale=0.08, align=TextNode.ACenter)
# Set initial scene
self.current_scene = 1
"""
# Set key bindings
#self.accept('space', self.toggle_scene)
#self.accept('escape', self.quit)
def toggle_scene(self):
if self.current_scene == 1:
self.scene1_text.hide()
self.scene2_text.show()
self.current_scene = 2
else:
self.scene2_text.hide()
self.scene1_text.show()
self.current_scene = 1
def quit(self):
#self.taskMgr.destroy() #Bereitet unter Linux Probleme
#self.us.__del__(self.us)
app.finalizeExit()
def test(self):
print("Taste gedrückt")
self.key_pressed = True
def test2(self):
print("Taste losgelassen")
self.key_pressed = False
#Dieser Task wird bei Berechnungs jeden Frames ausgeführt
x=0
def exampleTask(self, task):
self.btn['text'] = "Woscht" + str(self.x)
print("Ich laufe im Hintergrund!\n")
if(self.x==100):
return task.done
self.x +=1
return task.again
def check_keyboard_input(self, task):
dt = globalClock.getDt()
print(self.key_pressed)
if(self.key_pressed == True):
print("Taste gedrückt gehalten!")
self.pandaActor.setPos(self.pandaActor.getPos() + Vec3(0, 5.0*dt, 0))
if(self.myAnimControl.isPlaying() != True):
self.pandaActor.play("walk")
else:
pass
return task.cont
app = MyApp()
app.run()
#TODO: Änderungen
__main__()
pass

0
Statics.py Normal file
View File

257
gui-tests.py Normal file
View File

@@ -0,0 +1,257 @@
from ast import If
import sqlite3
import time
import threading
import tkinter
from turtle import left, width
import User
import sys
import tkinter as tk
from direct import task
from tkinter import Scale, StringVar
from random import random
#TODO Klassen erstellten
def button_event_close():
print("Programm wird geschlossen")
return 0;
def guithread():
window_size_x = 1024
window_size_y = 786
label_logged_in = tk.Label
label_highscore = tk.Label
label_lastlogin = tk.Label
#Hauptfenster-Block
window1 = tk.Tk() #Instanzierung von Fensterelement
window1.wm_title("Snake v1.0")
window1.geometry("1024x768")
window1.attributes("-topmost", True)
print("Erstelle User-Klassen Objekt")
us = User.User()
#Mit der Parameterübergabe der Klasseninstantz Tk, kann auch in einer Methode oder Funktion die Instantz direkt manipuliert werden!
def mainwindow_test(mainwindow : tk.Tk):
mainwindow.quit()
pass
def close_mainwindow():
print("Programm wird geschlossen!")
window1.quit()
def read_user(username, schaltf2:tk.Label, label_user_exists:tk.Label, all_listed_radiob:list): #Eingabeprüfung, bei Exception bei leerem String oder Eingabefeld
unametemp = username #eingabefeld_wert.get()
if(len(unametemp) != 0):
print("Lese Nutzereingabe: ", unametemp, "\n")
if(us.select(unametemp) == True):
welcome_msg = "Willkommen, " + us.getusername()
highscore_msg = "Dein letzter Highscore lag bei: " + str(us.gethighscore()) + " Punkten"
lastlogin_msg = "Du warst das letzte Mal am: " + us.getlastlogin() + " am Spielen"
label_logged_in = tk.Label(window1, text=welcome_msg)
label_highscore = tk.Label(window1, text=highscore_msg)
label_lastlogin = tk.Label(window1, text=lastlogin_msg)
label_logged_in.place(x=180, y=50)
label_highscore.place(x=180, y=80)
label_lastlogin.place(x=180, y=110)
label_user_exists.destroy()
schaltf2.destroy()
#Zerstört alle gezeichneten Insantzen von Radiobuttons
for radiobutton in all_listed_radiob:
radiobutton.destroy()
return
else:
print("Bitte etwas eingeben... Das Feld war leer!")
return
def input_new_user(*events):
#Eingabefenster-Block
subwindow1 = tk.Toplevel(window1)
subwindow1.wm_title("Eingabe")
subwindow1.geometry("400x200")
subwindow1.resizable(0,0) #Blockiert ein Skalieren des Fensters
window1.attributes("-topmost", False)
subwindow1.attributes("-topmost", True)
subwindow1.lift() #Hebt das Child-Fenster zumsammen mit attributes in den Vordergrund
eingabewert = StringVar(subwindow1)
def check_input():
if(len(eingabewert.get()) <= 0):
print("Es wurde keine Eingabe gemacht!")
else:
print(eingabewert.get())
us.createuser(eingabewert.get())
subwindow1.destroy()
build_mainwindow(window1)
return
textlabel = tk.Label(subwindow1, text="Bitte gib deinen Benutzernamen ein: ")
label_new_user = tk.Entry(subwindow1, width=40, textvariable=eingabewert)
button_ok = tk.Button(subwindow1, text="Erstellen", height=1, width=10, command=check_input)
button_abort = tk.Button(subwindow1, text="Abbrechen", command=subwindow1.destroy)
textlabel.place(x=5, y=5)
label_new_user.place(x=6, y=25)
button_ok.place(x=5, y=150)
button_abort.place(x=140, y=150)
#label_new_user.place(x=window_size_x*0.25, y=window_size_y*0.6)
def build_mainwindow(window1 : tk.Tk):
#Programmüberschrift
label1 = tk.Label(window1, text="Snake v1.0 written by CB") #Fenster Funktion für Textausgabe
label1.grid(row=0, column=0)
#Schaltflächen und Buttons
schaltf1 = tk.Button(window1, text="Fenster schließen", command=close_mainwindow)
schaltf1.place(x=5, y=window_size_y-50)
aktuell_ausgewaehlt =""
if(us.checkuserdb() == False):
#Anmeldedialog
print("Noch kein Nutzer angelegt!")
#messagebox.Message(master=None, message="Es wurde noch kein Spieler angelegt!", type=messagebox.OK, icon=messagebox.WARNING).show()
input_new_user()
elif(us.checkuserdb() == True):
print("Nutzer bereits vorhanden, wähle einen aus!")
#us.listallusers()
users = us.listallusers()
ausgewaehlt = tk.StringVar()
ausgewaehlt.set(0)
def value_select():
aktuell_ausgewaehlt = str(ausgewaehlt.get())
print(aktuell_ausgewaehlt)
return 0
print (aktuell_ausgewaehlt)
all_listed_radiob = list()
i = 0
for einzelwert in users:
radiob = tk.Radiobutton(window1, text=einzelwert, value=einzelwert, variable=ausgewaehlt, command=value_select)
all_listed_radiob.append(radiob)
print (users)
radiob.place(x=5, y=150+i)
i+=30
print("Alle Radiobuttons gesetzt!")
def login_user():
print("Melde ausgewählten Nutzer an!\n")
read_user(ausgewaehlt.get(), schaltf2, label_user_exists, all_listed_radiob)
return 0
label_user_exists = tk.Label(window1, text="Wähle deinen Spieler aus: ")
label_user_exists.place(x=2, y=30)
#eingabefeld_wert=tk.StringVar()
#eingabefeld=tk.Entry(window1, textvariable=eingabefeld_wert)
#eingabefeld.place(x=2, y=80)
schaltf2 = tk.Button(window1, text="Auswählen", command=login_user)
schaltf2.place(x=150, y=75)
build_mainwindow(window1)
#Nützliches Feature um zeitgesteuerte Events in Mainloop ausführen zu können
def message():
print('Keep yourself hyderated.')
window1.after(2000, message)
#window1.after(2000, message)
window1.mainloop() #Hauptschleife für gezeichnetes Fenster
us.__del__() #Stellt sicher, dass User-Klassenobjekt im korrekten Thread beendet wird
return 0;
class woscht(User.User):
def __init__(self) -> None:
UserInstanz = User
print("Unterklasser der Userklasse erstellt!\n")
print("So funktioniert die Klassenvererbung in Python...")
print("Dies ermöglicht eine modulare Aufbauweise ohne sich ständig bei kleineren Abweichung wiederholen zu müssen ober ganze Abschnitte zu kopieren und einzufügen\n")
def Testfunkiton(self):
print("Das ist eine Funktion, welche ausgeführt wird in einer Kindklasse. Sie existiert nicht in der Elternklasse!\n")
pass
def Testfunktion2(self):
print("Weitere Funktion, welche bei initialisieren der Klasse aufgerufen wird.\n")
pass
class woscht2(woscht):
def __init__(self) -> None:
woscht().Testfunktion2()
print("Unterklasse der Woschtklasse\n")
print("Die stellt eine Vererbung auf eine Vererbung dar. Hier können weitere Ergänzungen vorgenommen werden\n")
pass
#Eine Schleife, welche unter Zuhilfenahme einer Rekursion entsteht.
def recursive(zahl):
if(zahl==100):
print("Vorgang abgeschlossen!")
return
elif(zahl <= 100):
zahl += 1
time.sleep(0.001)
print(zahl, end="\r")
return recursive(zahl)
else:
print("Ergeniss konnte nicht erreicht werden!")
return
def main():
t = threading.Thread(target=guithread ,args=())
t.start()
#recursive(0)
#while(True):
# pass
"""
test = woscht()
test.getusername()
test2 = woscht2()
test2.Testfunkiton()
testtu = list()
#Mit dieser Funktion können mehrer Instanzen einer KLasse erstellt werden und im späteren Verlauf über den Listenindex bearbeitet werden.
for i in range(5):
testtu.append(woscht2())
print("Es wurden folgenden Klassen erstellt: ")
print (len(testtu))
for i in testtu:
print(i)
"""
# FH = open("user.txt", "w")
# FH.write(us.getusername())
# FH.close()
time.sleep(1)
return 0
if __name__ == "__main__":
main()