fixed a bunch of shit

This commit is contained in:
steev 2023-12-17 22:51:25 +01:00
parent 0b447f9505
commit 2055786d4a
15 changed files with 120 additions and 25 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 612 B

View File

@ -0,0 +1,22 @@
{
"id": 1,
"name": "Test Monster",
"image": "Assets/Cards/testmonstercard/cards.png",
"description": "can attack other monsters",
"costs": 30,
"defense": 40,
"attacks":[
{
"id": 1,
"name":"test attack",
"description": "can attack another Monster",
"damage": 80
},
{
"id": 2,
"name":"test attack",
"description": "can attack another Monster",
"damage": 80
}
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,6 @@
{
"name": "testspell",
"image":"Assets/Cards/testspelltcard/artwork.png",
"costs": 30,
"description":"this is a test spell card"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

@ -0,0 +1,6 @@
{
"name": "testtrap",
"image":"Assets/Cards/testtrapcard/artwork.png",
"costs": 30,
"description":"this is a test tryp card"
}

View File

@ -0,0 +1,37 @@
import random
class Player:
__id:int
__hp:int
__name:str
__handCards:list
def __init__(self, name:str, hp:int=1000):
self.__hp = hp
self.__name = name
self.__handCards = []
self.__id = random.randint(3, 99999)
def getName(self) -> str:
return self.__name
def getHP(self) -> int:
return self.__hp
def adjustHP(self, hp:int) -> int:
self.__hp = self.__hp + hp
def getID(self) -> int:
return self.__id
def getHand(self) -> list:
return self.__handCards
def AddToHand(self, card) -> list:
self.__handCards.append(card)
return self.__handCards
def removeFromHand(self, pos:int) -> list:
self.__handCards.remove(pos)
return self.__handCards

View File

@ -1,5 +1,5 @@
import json
from Classes.Objects.Player import Player
class Player:
__queue:list
@ -29,8 +29,8 @@ class Player:
self.__users.append(user)
def createUser(self, user:json):
if self.getUser(user["id"]) == None:
self.__users.append(user)
if self.getUser(user["username"]) == None:
self.__users.append(Player(user["username"]))
def removeUser(self, user:int):
self.__users.remove(user)

View File

@ -9,12 +9,13 @@ class Server:
__udpPort:str
__tcpSocket:socket
__udpSocket:socket
__clientThread:threading.Thread
__TCPclientThread:threading.Thread
__UDPclientThread:threading.Thread
def __init__(self, address:str, tcpPort:str, udpPort:str):
self.__address = address
self.__tcpPort = tcpPort
self.__udpPort = tcpPort
self.__udpPort = udpPort
self.__tcpSocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.__udpSocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
@ -34,15 +35,15 @@ class Server:
while True:
# accept incoming connection
# TODO: validate this connection is a valid game connection
client_tcpSocket, client_tcpAddress = self.__tcpSocket.accept()
clientTcpSocket, clientTcpAddress = self.__tcpSocket.accept()
# create network thread for connection
self.__TCPclientThread = threading.Thread(target=self.handleTCPConnection, args=(client_tcpSocket, client_tcpAddress))
self.__TCPclientThread.start()
self.__TCPClientThread = threading.Thread(target=self.handleTCPConnection, args=(clientTcpSocket, clientTcpAddress))
self.__TCPClientThread.start()
client_udpSocket, client_udpAddress = self.__udpSocket.accept()
self.__UDPclientThread = threading.Thread(target=self.handleUDPConnection, args=(client_udpSocket, client_udpAddress))
self.__UDPclientThread.start()
clientUdpSocket, clientUdpAddress = self.__udpSocket.accept()
self.__UDPClientThread = threading.Thread(target=self.handleUDPConnection, args=(clientUdpSocket, clientUdpAddress))
self.__UDPClientThread.start()
# handles ticking the game loop server side converting data and passing of to the event handler
@ -104,6 +105,16 @@ class Server:
pass
def handleUDPEvents(self, event):
if event["event"] == "gameAction":
# pass of to own handler function which handles game logic
pass
if event["event"] == "placeCard":
pass
elif event["event"] == "removeCard":
pass
elif event["event"] == "attackCard":
pass
elif event["event"] == "attackPlayer":
pass
elif event["event"] == "activateeffectCard":
pass
elif event["event"] == "activatemonstereffect":
pass

View File

@ -1,16 +1,17 @@
import os
import dotenv
from Classes.Server import Server
from Classes.System.Server import Server
def main(self):
dotenv.load_dotenv()
# retrieves host data from environment
HOST = os.getenv("HOST")
PORT = os.getenv("PORT")
TCPPORT = os.getenv("TCPPORT")
UDPPORT = os.getenv("UDPPORT")
Server(HOST, PORT)
Server(HOST, TCPPORT, UDPPORT)
if __name__ == "__main__":

View File

@ -2,6 +2,7 @@ import os
import pygame
class BoardField(pygame.sprite.Sprite):
__fieldID:str
__name:str
__side:str
__type:str
@ -12,13 +13,14 @@ class BoardField(pygame.sprite.Sprite):
image:pygame.image
rect:pygame.rect
def __init__(self, name:str, side:str, type:str, pos:pygame.Vector2, imagePath:str):
def __init__(self, name:str, side:str, type:str, pos:pygame.Vector2, imagePath:str, fid:str):
pygame.sprite.Sprite.__init__(self)
self.__name = name
self.__side = side
self.__type = type
self.__pos = pos
self.__holdsCard = None
self.__fieldID = fid
# Überprüfen des Dateipfads
if not os.path.exists(imagePath):
@ -78,4 +80,7 @@ class BoardField(pygame.sprite.Sprite):
return self.__color
def setCardHolding(self, card):
self.__holdsCard = card
self.__holdsCard = card
def getFieldID(self) -> str:
return self.__fieldID

View File

@ -1,6 +1,7 @@
import pygame
class Player:
__id:int
__hp:int
__name:str
__handCards:pygame.Sprite.Group
@ -9,6 +10,12 @@ class Player:
self.__hp = hp
self.__name = name
def setID(self, id:int):
self.__id = id
def getID(self) -> int:
return self.__id
def getName(self) -> str:
return self.__name
@ -21,7 +28,8 @@ class Player:
def getHand(self) -> pygame.Sprite.Group:
return self.__handCards
def getAddToHand(self, card) -> pygame.Sprite.Group:
def AddToHand(self, card) -> pygame.Sprite.Group:
self.__handCards.add(card)
return self.__handCards
def removeFromHand(self, pos:int) -> pygame.Sprite.Group:

View File

@ -61,12 +61,11 @@ class World():
eMonsterPos = pygame.Vector2((self.__cardOffset + (((self.__cardWidth + 10) - 30) * (i+1)), eRow1Height))
eEffectPos = pygame.Vector2((self.__cardOffset + (((self.__cardWidth + 10) - 30) * (i+1))), eRow2Height)
self.__boardFields.append(BoardField("PlayerMonsterField-"+str(i), "Player", "MonsterField", pMonsterPos, "Assets/Cards/Arena/field.png"))
self.__boardFields.append(BoardField("PlayerEffectField-"+str(i), "Player", "EffectField", pEffectPos, "Assets/Cards/Arena/field.png"))
self.__boardFields.append(BoardField("EnemyMonsterField-"+str(i), "Enemy", "MonsterField", eMonsterPos, "Assets/Cards/Arena/field.png"))
self.__boardFields.append(BoardField("EnemySpellTrapField-"+str(i), "Enemy", "EffectField", eEffectPos, "Assets/Cards/Arena/field.png"))
self.__boardFields.append(BoardField("PlayerMonsterField-"+str(i), "Player", "MonsterField", pMonsterPos, "Assets/Cards/Arena/field.png", "pm"+str(id)))
self.__boardFields.append(BoardField("PlayerEffectField-"+str(i), "Player", "EffectField", pEffectPos, "Assets/Cards/Arena/field.png", "pe"+str(id)))
self.__boardFields.append(BoardField("EnemyMonsterField-"+str(i), "Enemy", "MonsterField", eMonsterPos, "Assets/Cards/Arena/field.png", "em"+str(id)))
self.__boardFields.append(BoardField("EnemySpellTrapField-"+str(i), "Enemy", "EffectField", eEffectPos, "Assets/Cards/Arena/field.png", "ee"+str(id)))
def getBoardFields(self) -> list:
return self.__boardFields