Sélectionner une révision Git
DARE.py 7,92 Kio
#!/usr/bin/env python
"""
File that implements DARE dice-system for my tabletop game
"""
import dice
import codecs
class SpecialDice(dice.Dice):
def __init__(self, n, name):
"""init a special dice"""
super().__init__(n)
self.name=str(name)
return None
def __str__(self):
if self.value != None:
return self.name+str(self.n)+"["+str(self.value)+"]"
else:
return self.name+str(self.n)
def __repr__(self):
return "SDice object : "+str(self)
def __lt__(self, otherdice):
return self.n <= otherdice.n
class LatencyQueue():
def __init__(self):
"""init the Latency Queue"""
self.oneQueue = []
self.twoQueue = []
def add(elt, index):
"""put elt in the indexQueue"""
if index == 1:
self.oneQueue.append(elt)
return None
elif index == 2:
self.oneQueue.append(elt)
return None
else:
return None
def move(self):
ret = self.oneQueue
self.oneQueue = self.twoQueue
self.twoQueue = []
return ret
def __str__(self):
return "2:"+str(self.twoQueue)+"1:"+str(self.oneQueue)
def __repr__(self):
return "Latency Queue Object :"+str(self)
def logo():
print(
"""
\033[38;5;195m
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⣀⣀⣀⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣶⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣶⣦⣄⡀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠠⢴⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣧⠢⣀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⡠⣼⣿⣿⣿⣿⢿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣷⣄⡀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢹⣿⣿⠽⠿⢛⢻⢟⡽⣛⣿⢿⣿⣿⣿⠿⣿⣿⣿⣿⣿⣟⣻⠿⣿⣻⣙⠛⠾⣄⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢀⣽⡈⡋⠠⠀⡀⣈⢚⣥⢽⢫⢦⣷⣾⢋⣺⣷⣻⣿⠫⢿⣿⣿⣿⣖⡸⣿⣝⠿⣧⣘⡷⡀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⢿⣶⣾⣿⣿⣁⣣⣾⡞⠚⢂⡤⠂⠃⡗⢾⢿⣯⡾⢿⣿⣿⣿⣶⣿⡿⣿⡟⣓⢧⣛⡗⢹⣿⣿⣷⡀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠙⣿⠋⡿⠉⢩⣿⢟⣀⡍⠀⠀⠘⣿⣬⣶⣷⣿⣿⣿⣿⣝⣿⠇⠣⠿⣿⣶⠋⡽⢽⠽⢣⣿⣧⠑⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⢻⡀⠅⠀⢹⠟⠿⠊⢉⢀⢘⣮⣿⣿⣿⣿⣿⣏⡈⢙⣽⣛⡄⡇⠂⠘⢾⢟⡓⠒⠿⡁⢉⣿⡦⣇\033[38;5;193m
██████ █████ ██████ ███████
██ ██ ██ ██ ██ ██ ██
██ ██ ███████ ██████ █████
██ ██ ██ ██ ██ ██ ██
██████ ██ ██ ██ ██ ███████⠀⠀⠀\033[38;5;214m ⠀⠀⠀⠀
⠀ Dice As REssources (v0.1)⠀⠀⠀⠀⠀⠀\033[38;5;195m ⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠐⠐⠲⣦⣀⣄⡀⠀⡀⢀⢀⣠⣀⢆⡒⡀⢢⣶⣶⣶⠖⣴⠤⣆⣲⢖⣆⣶⣦⣤⣐⠒⠀⠀⠠⠠⣤⢶⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠂⠡⣿⣿⠦⣄⣒⣿⡁⢠⣍⡳⠈⢸⣼⣿⣽⣹⣿⡽⠉⢾⣷⣸⠙⢞⣝⡿⠲⣒⣀⠔⠋⢀⠃⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⢋⣦⡀⠀⠋⠁⠀⠀⠥⠀⠀⠁⢀⡀⡸⣿⣼⣳⢴⡻⡣⣄⡌⣿⣏⣶⠾⢓⠾⠶⠁⣁⣤⡤⠁⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠨⠿⣷⠀⠀⢀⠀⠀⠀⠄⠀⣴⡟⠻⣿⡊⡦⢮⢁⡅⠀⠁⠈⠁⠀⠀⣀⣤⣤⣶⣿⣿⠟⠁⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⠀⠁⠀⠀⢀⣀⣉⣉⡭⡻⢇⠀⢀⢠⣀⣤⣤⣶⣾⣾⣷⣿⣿⣿⣿⠟⠋⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠁⠀⠐⣦⣶⣚⠻⢿⣿⣿⣷⣗⣤⠊⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠿⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠉⠛⠟⣺⡟⡾⣯⣛⣿⣿⣿⣚⣛⣛⣿⡿⣛⠿⠛⠋⠁⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠉⠉⠛⠛⠓⠒⠋⠉⠉⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀
\033[0m
"""
)
def art():
f = codecs.open("art", "r", encoding="utf-8")
art = f.read()
f.close()
print("\033[2J\033[0;0H",end="")
print(art)
print(
"""
\033[38;5;148m\033[11;10H ██████ █████ ██████ ███████
\033[38;5;149m\033[12;10H ██ ██ ██ ██ ██ ██ ██
\033[38;5;150m\033[13;10H ██ ██ ███████ ██████ █████
\033[38;5;151m\033[14;10H ██ ██ ██ ██ ██ ██ ██
\033[38;5;152m\033[15;10H ██████ ██ ██ ██ ██ ███████
\033[38;5;223m\033[16;16H Dice As REssources \033[0m\033[25;0H"""
)
return None
def line():
print("\033[38;5;240m------------------------------------------------\033[0m",end="")
return None
def ask(symbol):
out = input("\033[38;5;217m"+symbol+">\033[0m")
return out
if __name__=="__main__":
from types import SimpleNamespace
##INITVAR
S = SimpleNamespace()
S.PHIdicepool = []
S.PSIdicepool = []
S.PDiceTray = dice.DiceTray() #PHI DiceTray
S.pDiceTray = dice.DiceTray() #pSI DiceTray
S.Latency = LatencyQueue()
S.PHIqueue = [SpecialDice(2,"Ψ"),SpecialDice(6,"Ψ")]
S.PSIqueue = [SpecialDice(2,"Ψ"),SpecialDice(6,"Ψ")]
S.thro = ["dx"]
S.name = ""
S.PDiceTray.add(SpecialDice(2,"Ψ"))
art()
## get init param :
print(
"""
Please give your (sur)name"""
)
S.name=ask("name?")
if S.name == "": S.name = "Ninten"
print(
"""
Please give your PHI dice pool
formatting is expected to be such as :
d4,d4,d6,d4,d8 (no spaces at the start !)"""
)
uinput = ask("Φ?")
if uinput=="":uinput="d4,d4,d4,d6,d6,d6"
argsdice = uinput.split(",")
S.PHIdicepool = []
for e in argsdice:
dval = int(e[1:])
S.PHIdicepool.append(SpecialDice(dval,"Φ"))
S.PHIdicepool.sort()
print(
"""
Please give your PSI dice pool
(same format)"""
)
uinput=ask("Ψ?")
if uinput=="":uinput="d4,d4,d4,d6,d8"
argsdice = uinput.split(",")
S.PSIdicepool = []
for e in argsdice:
dval = int(e[1:])
S.PSIdicepool.append(SpecialDice(dval,"Ψ"))
S.PSIdicepool.sort()
def stupidPrint(mlist):
out = ""
for e in mlist:
out += str(e)+" "
return out
def printDiceTray():
print(" ROL [ \033[38;5;214m"+stupidPrint(S.PDiceTray)+"\033[38;5;159m"+stupidPrint(S.pDiceTray)+"\033[0m] ")
def printallstat(ShowDiceTray=False):
print("\033[38;5;214m PHI \033[38;5;10m [ "+stupidPrint(S.PHIdicepool)+"]\033[0m "
,end="")
if not S.PHIqueue: print("") #list is empty
else:
print("\033[38;5;64m < "+str(S.PHIqueue[0])+"\033[38;5;242m "+stupidPrint(S.PHIqueue[1:])+"< \033[0m " )
print("\033[38;5;214m PSI \033[38;5;159m [ "+stupidPrint(S.PSIdicepool)+"]\033[0m "
,end="")
if not S.PSIqueue: print("")
else:
print("\033[38;5;67m < "+str(S.PSIqueue[0])+"\033[38;5;242m "+stupidPrint(S.PSIqueue[1:])+"< \033[0m " )
if S.Latency.oneQueue or S.Latency.twoQueue: # not empty
print("\033[38;5;202 LAT \033[38;5;242m 1[ "+stupidPrint(S.Latency.oneQueue)+"] 2[ "+stupidPrint(S.Latency.twoQueue)+"]")
if ShowDiceTray:
printDiceTray()
if S.thro:
print("\033[38;5;242m DEL [ "+stupidPrint(S.thro)+"]\033[0m")
line()
print("\nWelcome "+S.name+" !")
while True:
printallstat(True)
print(
"""
Please type your command. Type \033[1m help \033[0m
To see available command or \033[1m help <command> \033[0m
To get an explanation of a command"""
)
ask("command?")