Type definition

This commit is contained in:
2024-03-26 11:58:59 +01:00
parent edbe857325
commit b74de735f0
11 changed files with 168 additions and 1 deletions
+15
View File
@@ -0,0 +1,15 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python Debugger: Current File",
"type": "debugpy",
"request": "launch",
"program": "src/main.py",
"console": "internalConsole"
}
]
}
+1 -1
View File
@@ -1,5 +1,5 @@
gevent==24.2.1 gevent==24.2.1
greenlet==3.0.3 greenlet==3.0.3
websocket==0.2.1 websockets==12.0
zope.event==5.0 zope.event==5.0
zope.interface==6.2 zope.interface==6.2
+42
View File
@@ -0,0 +1,42 @@
from enum import Enum
class CardType(str, Enum):
"""Playable card types"""
HERO = "hero"
HERO_ABILITY = "hero_ability"
CURRENCY = "currency"
WEAPON = "weapon"
CHAMPION = "champion"
ACTION = "action"
class CardFaction(str, Enum):
"""Playable card factions"""
BLUE = "blue"
RED = "red"
GREEN = "green"
YELLOW = "yellow"
class Card:
"""Represents any playable card"""
sprite: str
name: str
text: str
cost: int
card_type: CardType
faction: CardFaction
def __init__(self):
pass
class CardGuard(Card):
"""Represents any guard card"""
defense: int
guard: bool
+31
View File
@@ -0,0 +1,31 @@
#!/usr/bin/env python
from typing import List
from game.Card import Card
from game.Team import Team
class Game:
"""Instance of the game, with players and a market"""
market_stack: List[Card]
market: List[Card]
gem_stack: List[Card]
teams: List[Team]
started: bool
default_health = 80
def __init__(self):
self.market_stack = []
self.market = []
self.gem_stack = []
self.teams = []
self.started = False
def create_team(self):
if self.started:
return False
team = Team(self, health=self.default_health)
self.teams.append(team)
+16
View File
@@ -0,0 +1,16 @@
from typing import List
from game.Card import Card
from game.Team import Team
class Player:
"""Game player, controller by a Client"""
stack_pile: List[Card]
discard_pile: List[Card]
team: Team
def __init__(self, team: Team):
self.stack_pile = []
self.discard_pile = []
self.team = team
+33
View File
@@ -0,0 +1,33 @@
from typing import List
from game.Game import Game
from game.Player import Player
class Team:
_team_id = 1
game: Game
players: List[Player]
health: int
color: str
name: str
def __init__(self, game, health=80, color="red", name="Team " + _team_id):
Team._team_id += 1
self.game = game
self.players = []
self.health = health
self.color = color
self.name = name
def delete(self):
"""Get garbage collected you idiot"""
if len(self.players) == 0:
self.game.teams.remove(self)
else:
raise Warning("Tried to delete an empty team!")
def removePlayer(self):
pass
View File
+3
View File
@@ -0,0 +1,3 @@
#!/usr/bin/env python
from game.Game import Game
View File
+15
View File
@@ -0,0 +1,15 @@
import asyncio
from websockets.server import serve
async def echo(websocket):
async for message in websocket:
await websocket.send(message)
async def main():
async with serve(echo, "localhost", 8765):
await asyncio.Future() # run forever
asyncio.run(main())
+12
View File
@@ -0,0 +1,12 @@
import asyncio
from websockets.server import serve
async def echo(websocket):
async for message in websocket:
await websocket.send(message)
async def main():
async with serve(echo, "localhost", 8765):
await asyncio.Future() # run forever