scoretab.py

Created by golem64

Created on December 22, 2021

3.48 KB

Scoretab est un script vous permettant de compter vos points dans les jeux de société par exemple

Fonctionnalités : - Affichage visuel - Calculs automatiques - Prise en charge de mods (voir bowlib et tarotlib) (fonctionne aussi sur Epsilon)

Commandes : - Se déplacer dans la grille : flèches directionnelles - Ajouter un joueur : se positionner sur + et appuyer sur OK - Ajouter une entrée : se positionner sur la colonne du joueur concerné et appuyer sur var - Supprimer une entrée : se positionner sur l’entrée à supprimer, appuyer sur la touche “supprimer” et entrer quelque chose dans la boite de dialogue (pour annuler, n’écrivez rien et appuyez simplement sur entrer) - Modifier une valeur : positionnez vous sur la valeur à modifier et appuyez sur OK - Charger un mod : appuyez sur la touche “Boite à outils” et entrez le nom du mod

https://my.numworks.com/python/golem64/bowlib https://my.numworks.com/python/golem64/tarotlib

Des améliorations du script et de la compatibilité arriveront bientôt.


from math import *
from kandinsky import *
from ion import *
#from os import *
from time import *
from random import *

lib=""

def drawTab(tab,offsetx,offsety,selected=None,width=61,height=17):
  try: lib.draw()
  except:
    fill_rect(0,0,320,222,(255,255,255))
    j=-1
    for j in range(len(tab)):
      player=tab[j]
      draw_string((player[0]+" "*100)[0:int(width/10)],130+(j-offsetx)*width+1,-1,(255,255,255),(100,100,100))
      fill_rect(130+(j-offsetx)*width,0,1,222,(0,0,0))
      fill_rect(130+(j-offsetx)*width+width,0,1,222,(0,0,0))
      if offsety+1<len(player):
        for i in range(offsety+1,len(player)):
          if j-offsetx==0 and i==selected: sel=(255,0,0)
          else: sel=(255,255,255)
          draw_string((str(player[i])+" "*120)[0:int(width/10)],130+(j-offsetx)*width+1,height*(i-offsety),(0,0,0),sel)
          fill_rect(130+(j-offsetx)*width,height*(i-offsety),width,1,(0,0,0))
        fill_rect(130+(j-offsetx)*width,height*(i-offsety+1),width,1,(0,0,0))
      tot=0
      for i in range(1,len(player)): tot+=player[i]
      draw_string((str(tot)+" "*120)[0:int(width/10)],130+(j-offsetx)*width+1,222-height,(0,0,0),(200,100,0))
      fill_rect(130+(j-offsetx)*width,222-height-1,width,1,(0,0,0))
    fill_rect(130+(j+1-offsetx)*width,0,width,222,(0,0,0))
    if j-offsetx+1==0: sel=(255,0,0)
    else: sel=(255,255,255)
    fill_rect(130+(j+1-offsetx)*width+1,0,width-2,222,sel)
    draw_string("+",130+(j+1-offsetx)*width+int(width/2)-5,105,(0,0,0),sel)

def e(): print("\n"*12)

scores=[]
p={"x":0,"y":0,"s":1,"w":61}
drawTab(scores,p['x'],p['y'],p['s'])
stop=0
key=[]
hold=0
tick=monotonic()

while not KEY_ONOFF in key and not stop:
  key=[]
  for i in range(53):
    if keydown(i): key.append(i)
  if key:
    if not hold: hold=monotonic()
    elif monotonic()-hold<0.5: key=[]
  else: hold=0
  if monotonic()-tick>0.2: key=[]
  tick=monotonic()
  try: lib.main()
  except: pass
  try: lib.move()
  except:
    x=p["x"]
    y=p["y"]
    s=p["s"]
    w=p["w"]
    if KEY_RIGHT in key: x+=1
    if KEY_LEFT in key: x-=1
    if p["x"]!=len(scores):
      if KEY_DOWN in key: s+=1
      if KEY_UP in key: s-=1
    if KEY_PLUS in key: w+=10
    if KEY_MINUS in key: w-=10
    if KEY_ANS in key: w=61
    if x<0: x=len(scores)
    if x>len(scores): x=0
    if x!=len(scores):
      if s<1: s=len(scores[x])-1
      if s>len(scores[x])-1: s=1
    if s-y<1:
      while s-y<1: y-=1
    if s-y>11:
      while s-y>11: y+=1
    if y<0: y=0
    if w<21: w=21
    p={"x":x,"y":y,"s":s,"w":w}
  if KEY_OK in key:
    try: lib.edit()
    except:
      if p["x"]==len(scores):
        e()
        v=input("Joueur "+str(len(scores)+1)+" > ")
        if v: scores.append([v,0])
      else:
        e()
        v=input("Modifier valeur > ")
        if v: scores[p['x']][p['s']]=int(v)
  if KEY_VAR in key:
    try: lib.add()
    except:
      if p["x"]!=len(scores):
        e()
        v=input("Ajouter valeur > ")
        if v: scores[p['x']].append(int(v))
  if KEY_BACKSPACE in key:
    try: lib.rem()
    except:
      if p["x"]!=len(scores):
        e()
        v=input("Supprimer valeur ? > ")
        if v: scores[x].pop(p['s'])
        p['s']=1
        if not len(scores[p['x']])-1: scores.pop(p['x'])
  if KEY_TOOLBOX in key:
    e()
    v=input("Nom du mod > ")
    if v:
      try:
        scores=[]
        p['x']=0
        p['y']=0
        p['s']=1
        lib=__import__(v)
      except:
        print("Impossible de charger le mod")
        sleep(1)
  if key: drawTab(scores,p['x'],p['y'],p['s'],p['w'])