ono_sendai - wip
This commit is contained in:
parent
ca982b07a7
commit
e7d1f0ea03
3 changed files with 50 additions and 13 deletions
|
@ -59,20 +59,25 @@ class FrameFactory:
|
||||||
def newHandFrame(self, cards):
|
def newHandFrame(self, cards):
|
||||||
assert type(cards) is list, type(cards)
|
assert type(cards) is list, type(cards)
|
||||||
h = 27 # height ?
|
h = 27 # height ?
|
||||||
self.d.add(1, 1, WColoredFrame(12, h, 'HAND', red))
|
self.d.add(1, 1, WColoredFrame(12, h, 'HAND', blue))
|
||||||
w = WCardRadioButton([f'{Fore.RED}'+cards[0]] + cards[1:-1] + [cards[-1]+f'{Style.RESET_ALL}'], isHand=True)
|
w = WCardRadioButton([f'{Fore.BLUE}'+cards[0]] + cards[1:-1] + [cards[-1]+f'{Style.RESET_ALL}'], isHand=True)
|
||||||
self.d.add(2, 2, w)
|
self.d.add(2, 2, w)
|
||||||
self.hand = w
|
self.hand = w
|
||||||
|
|
||||||
def getChoices(self):
|
def getChoices(self):
|
||||||
src = -1; dst = -1
|
src = (None, None); dst = None
|
||||||
|
|
||||||
if self.widgets[0].choice == 0:
|
if self.widgets[0].choice == 0:
|
||||||
dst = 'Empty'
|
dst = 'Empty'
|
||||||
|
if self.hand.choice > 1:
|
||||||
|
src = 'Hand', self.hand.choice-2
|
||||||
|
|
||||||
for i, w in enumerate(self.widgets[1:]):
|
for i, w in enumerate(self.widgets[1:]):
|
||||||
if w.choice == 0:
|
if w.choice == 0:
|
||||||
assert dst != 'Empty'
|
assert dst != 'Empty'
|
||||||
dst = i
|
dst = i
|
||||||
elif w.choice > 1:
|
elif w.choice > 1:
|
||||||
|
assert src[0] != 'Hand'
|
||||||
src = i, w.choice-2
|
src = i, w.choice-2
|
||||||
return src, dst
|
return src, dst
|
||||||
|
|
||||||
|
@ -82,6 +87,7 @@ c = ['asd', 'asd']
|
||||||
|
|
||||||
import state
|
import state
|
||||||
table = state.table
|
table = state.table
|
||||||
|
hand = state.hand
|
||||||
|
|
||||||
exit = False
|
exit = False
|
||||||
while not exit:
|
while not exit:
|
||||||
|
@ -118,7 +124,7 @@ while not exit:
|
||||||
f.emptyFrame()
|
f.emptyFrame()
|
||||||
for cards in table.widget_repr():
|
for cards in table.widget_repr():
|
||||||
f.newFrame(cards)
|
f.newFrame(cards)
|
||||||
# f.newHandFrame()
|
f.newHandFrame(hand.widget_repr())
|
||||||
|
|
||||||
tableDialog.redraw()
|
tableDialog.redraw()
|
||||||
res = tableDialog.loop()
|
res = tableDialog.loop()
|
||||||
|
@ -127,7 +133,7 @@ while not exit:
|
||||||
else:
|
else:
|
||||||
print(*f.getChoices())
|
print(*f.getChoices())
|
||||||
sleep(2)
|
sleep(2)
|
||||||
table = state.update_table(table, *f.getChoices())
|
table, hand = state.update_table(table, hand, *f.getChoices())
|
||||||
|
|
||||||
|
|
||||||
print('TODO: massimo due scelte')
|
print('TODO: sempre due scelte')
|
||||||
|
|
|
@ -36,15 +36,45 @@ table = Table([
|
||||||
Card("Tiles", 1)]),
|
Card("Tiles", 1)]),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
|
class Hand:
|
||||||
|
def __init__(self, cards):
|
||||||
|
self.cards = cards
|
||||||
|
|
||||||
|
def widget_repr(self):
|
||||||
|
yi = [sym.big['hat']]
|
||||||
|
seed = self.cards[0][0].lower()
|
||||||
|
yi.append(sym.big[seed])
|
||||||
|
yi.append(sym.big[self.cards[0][1]])
|
||||||
|
for card in self.cards[1:]:
|
||||||
|
seed = card[0].lower()
|
||||||
|
yi.append(sym.sym[seed][card[1]])
|
||||||
|
return yi
|
||||||
|
|
||||||
|
hand = Hand([
|
||||||
|
Card("Pikes", 12),
|
||||||
|
Card("Clovers", 12),
|
||||||
|
Card("Tiles", 12),
|
||||||
|
Card("Hearts", 12),
|
||||||
|
Card("Hearts", 13),
|
||||||
|
Card("Clovers", 13),
|
||||||
|
Card("Pikes", 13),
|
||||||
|
Card("Tiles", 13)
|
||||||
|
])
|
||||||
|
|
||||||
# TODO: refactor language
|
# TODO: refactor language
|
||||||
def gioca(tavolo, src, dst):
|
def gioca(tavolo, hand, src, dst):
|
||||||
giocata = [] if dst == 'Empty' else tavolo.cards[dst]
|
giocata = [] if dst == 'Empty' else tavolo.cards[dst]
|
||||||
da_muovere = tavolo.cards[src[0]].cards[src[1]]
|
da_muovere = hand.cards[src[1]] if src[0] == 'Hand' else tavolo.cards[src[0]].cards[src[1]]
|
||||||
assert type(dst) is int or dst == 'Empty' or dst == 'Hand'
|
hcards = hand.cards[:src[1]] + hand.cards[src[1]+1:] if src[0] == 'Hand' else hand.cards
|
||||||
|
|
||||||
|
assert type(dst) is int or dst == 'Empty'
|
||||||
|
assert type(src[0]) is int or src[0] == 'Hand'
|
||||||
assert type(da_muovere) is Card
|
assert type(da_muovere) is Card
|
||||||
assert type(giocata) is TaggedCards or giocata == []
|
assert type(giocata) is TaggedCards or giocata == []
|
||||||
|
|
||||||
idx = -1 if dst == 'Empty' else tavolo.cards.index(giocata)
|
idx = -1 if dst == 'Empty' else tavolo.cards.index(giocata)
|
||||||
news = [TaggedCards([da_muovere])] if giocata == [] else []
|
news = [TaggedCards([da_muovere])] if type(giocata) is list else []
|
||||||
rimpiazzata = False
|
rimpiazzata = False
|
||||||
for i, t in enumerate(tavolo.cards):
|
for i, t in enumerate(tavolo.cards):
|
||||||
if i == idx:
|
if i == idx:
|
||||||
|
@ -57,7 +87,7 @@ def gioca(tavolo, src, dst):
|
||||||
rimpiazzata = True
|
rimpiazzata = True
|
||||||
else:
|
else:
|
||||||
news.append(t)
|
news.append(t)
|
||||||
return Table(news)
|
return Table(news), Hand(hcards)
|
||||||
|
|
||||||
def update_table(table, src, dst):
|
def update_table(table, hand, src, dst):
|
||||||
return gioca(table, src, dst)
|
return gioca(table, hand, src, dst)
|
||||||
|
|
|
@ -3,6 +3,7 @@ from picotui.defs import *
|
||||||
from colorama import Style, Fore
|
from colorama import Style, Fore
|
||||||
|
|
||||||
red = f'{Fore.RED}'.encode('utf-8')
|
red = f'{Fore.RED}'.encode('utf-8')
|
||||||
|
blue = f'{Fore.BLUE}'.encode('utf-8')
|
||||||
green = f'{Fore.GREEN}'.encode('utf-8')
|
green = f'{Fore.GREEN}'.encode('utf-8')
|
||||||
white = f'{Fore.WHITE}'.encode('utf-8')
|
white = f'{Fore.WHITE}'.encode('utf-8')
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue