Files
python-tests/pygame-tests/User.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

130 lines
3.2 KiB
Python

import sqlite3
#from sqlite3.dbapi2 import Cursor
# Start einer Userklasse
# Lade, sofern vorhanden, Spieler aus der Datenbank
class User:
__usercount = 0
__highscore = 0
__uid = -1
__username = ""
__db_player_exist = 0
__lastlogin = ""
__played_time = 0
__all_listed_users = list()
#__sql_create_table = "CREATE TABLE IF NOT EXISTS user ( `id` INTEGER PRIMARY KEY, `username` VARCHAR(100) NOT NULL , `highscore` INT NOT NULL)"
__sql_create_table = """CREATE TABLE IF NOT EXISTS "user" (
"id" INTEGER UNIQUE,
"username" VARCHAR(100) NOT NULL,
"highscore" INT NOT NULL,
"lastlogin" TEXT,
"played_time" INTEGER,
PRIMARY KEY("id")
);"""
__sqlhandle = 0 #Statichandle
def __init__(self) -> None:
print("Userklasse erstellt")
if(len(self.__username) <= 0 or self.__user == "") and (self.__uid == -1):
#print("Es existieren noch keine Daten!")
if(self.__sqlhandle == 0):
self.__sqlhandle = sqlite3.connect("user.db")
cursor = self.__sqlhandle.cursor()
cursor.execute(self.__sql_create_table)
self.__sqlhandle.commit()
def __del__(self):
print("Userklasse zerstört")
if(self.__sqlhandle != 0):
print(self.__sqlhandle)
print("Datenbank wird ordentlich geschlossen\n")
self.__sqlhandle.close()
#self.__sqlhandle = 0
#print(self.__sqlhandle) Debug only
def createuser(self, username :str):
if(len(username) > 0):
cursor = self.__sqlhandle.cursor()
if(cursor != 0):
if(self.__username == ""):
print("SQLHANDLE:", self.__sqlhandle)
sql = "INSERT INTO user (username, highscore, lastlogin) VALUES('"+username+"', 0, datetime())"
try:
cursor.execute(sql)
self.__sqlhandle.commit()
print("User hinzugefügt!")
except:
print("Es ist beim Erstellen es Spielers ein Fehler aufgetreten!")
else:
print("Scheinbar besteht keine Verbindung zur Datenbank")
else:
print("Es wurde kein Name übergeben")
def select(self, username):
sql = "SELECT * FROM user WHERE username ='"+username+"'"
sql_update_login_date = "UPDATE user SET lastlogin = datetime() WHERE username = '"+username+"'"
try:
c = self.__sqlhandle.cursor()
row = c.execute(sql)
res = row.fetchone()
c.execute(sql_update_login_date)
self.__sqlhandle.commit()
self.__uid = res[0]
self.__username = res[1]
self.__highscore = res[2]
self.__lastlogin = res[3]
except:
print("Fehler bei der Nutzerauswahl")
return False
return True
def getplayed_time(self):
return self.__played_time
def getlastlogin(self):
return self.__lastlogin
def getusername(self):
return self.__username
def gethighscore(self):
return self.__highscore
def getuid(self):
return self.__uid
def listallusers(self):
cursor = self.__sqlhandle.cursor()
for row in cursor.execute("SELECT * FROM user"):
print("ID:",row[0],", Username:", row[1], ", Highscore:", row[2])
self.__all_listed_users.append(row[1])
print (self.__all_listed_users)
cursor.close()
self.__sqlhandle.commit()
return self.__all_listed_users
def checkuserdb(self):
cursor = self.__sqlhandle.cursor()
rows=cursor.execute("SELECT * FROM user")
rows_count =len(list(rows))
if(rows_count >= 1):
#print("Es gibt", rows_count, "Datensätze")
return True
else:
return False