Az alábbi kódot Linux Mint -n írtam. A Linux kezdeti felfedezéséhez a Gemini és Linux Mint Fórum nyújtott segítséget. Az alábbi kód szimulálja minden lehetséges kézkártyák variációját, a húsz és negyven megtalálásához. Fejlesztői környezet a szokásos PyCharm community.
import itertools
import os
import random
import pygame as pyg
import pygame_gui
class SnapszerJelentes:
"""Megkeresi az összes lehetséges adatot a változókhoz."""
def __init__(self):
os.environ['SDL_VIDEO_WINDOW_POS'] = "660,150"
pyg.init()
self.SZELES = 700
self.MAGAS = 500
self.ablak = pyg.display.set_mode((self.SZELES, self.MAGAS))
pyg.display.set_caption('Snapszer jelentést készítő.')
self.hatter = pyg.Surface((self.SZELES, self.MAGAS))
self.hatter.fill(pyg.Color(1, 38, 5))
self.mester = pygame_gui.UIManager(
(self.SZELES, self.MAGAS))
self.pakli_lista = [
'm02', 'm03', 'm04', 'm10', 'm11',
'p02', 'p03', 'p04', 'p10', 'p11',
't02', 't03', 't04', 't10', 't11',
'z02', 'z03', 'z04', 'z10', 'z11'
]
random.shuffle(self.pakli_lista)
self.kez_lista_kombinaciok = None
self.adu_kartya = []
self.adu_kartya_szine = []
self.makk_husz_elemek = () # ('m03, m04')
self.piros_husz_elemek = () # ('p03, p04')
self.tok_husz_elemek = () # ('t03, t04')
self.zold_husz_elemek = () # ('z03, z04')
self.makk_negyven_elem = () # ('m03, m04') + adu kártya színe 'm'
self.piros_negyven_elem = () # ('p03, p04') + adu kártya színe 'p'
self.tok_negyven_elem = () # ('t03, t04') + adu kártya színe 't'
self.zold_negyven_elem = () # ('z03, z04') + adu kártya színe 'z'
self.makk_husz_pont = 0 # 20
self.piros_husz_pont = 0 # 20
self.tok_husz_pont = 0 # 20
self.zold_husz_pont = 0 # 20
self.makk_negyven_pont = 0 # 40
self.piros_negyven_pont = 0 # 40
self.tok_negyven_pont = 0 # 40
self.zold_negyven_pont = 0 # 40
# metódusok
self.adu_megszerzes()
self.pakli_osszes_variacioja()
self.valtozok_feltoltese()
self.adatok_megjelenito()
self.ido_mero = pyg.time.Clock()
self.futas = True
while self.futas:
self.delta_ido = self.ido_mero.tick(60) / 1000.0
for esemeny in pyg.event.get():
if esemeny.type == pyg.QUIT:
self.futas = False
self.mester.process_events(esemeny)
self.mester.update(self.delta_ido)
self.ablak.blit(self.hatter, (0, 0))
pyg.display.update()
def adu_megszerzes(self):
"""Az adu és színe változók meghatározása."""
self.adu_kartya.append(self.pakli_lista.pop(-1))
self.adu_kartya_szine.append(self.adu_kartya[0][0])
print(f'\nAdu kartya: {self.adu_kartya}, Színe: {self.adu_kartya_szine}')
def pakli_osszes_variacioja(self):
"""Minden lehetséges kézkártya lapok variációja.
# Elem darab: 11628, 5 elemű tuple, variáció."""
self.kez_lista_kombinaciok = list(itertools.combinations(self.pakli_lista, 5))
print(f'Elem darab: {len(self.kez_lista_kombinaciok)}, '
f'{type(self.kez_lista_kombinaciok)}')
for i, elem in enumerate(self.kez_lista_kombinaciok):
if i < 10:
print(elem)
def valtozok_feltoltese(self):
"""A kéz_lista_kombináciok minden elemének vizsgálata.
Üres vagy egyelemű esetet is kezeli.
Egy színre vagy husz (20), vagy negyven (40)."""
if not self.kez_lista_kombinaciok:
print("Nincs kézkombináció.")
return
kombok = self.kez_lista_kombinaciok
if isinstance(kombok, tuple):
kombok = [kombok]
adu = self.adu_kartya_szine[0] if self.adu_kartya_szine else None
for kez in kombok:
# MAKK
if not (self.makk_husz_elemek or self.makk_negyven_elem):
if 'm03' in kez and 'm04' in kez:
if adu == 'm':
self.makk_negyven_elem = ('m03', 'm04')
self.makk_negyven_pont = 40
else:
self.makk_husz_elemek = ('m03', 'm04')
self.makk_husz_pont = 20
# PIROS
if not (self.piros_husz_elemek or self.piros_negyven_elem):
if 'p03' in kez and 'p04' in kez:
if adu == 'p':
self.piros_negyven_elem = ('p03', 'p04')
self.piros_negyven_pont = 40
else:
self.piros_husz_elemek = ('p03', 'p04')
self.piros_husz_pont = 20
# TÖK
if not (self.tok_husz_elemek or self.tok_negyven_elem):
if 't03' in kez and 't04' in kez:
if adu == 't':
self.tok_negyven_elem = ('t03', 't04')
self.tok_negyven_pont = 40
else:
self.tok_husz_elemek = ('t03', 't04')
self.tok_husz_pont = 20
# ZÖLD
if not (self.zold_husz_elemek or self.zold_negyven_elem):
if 'z03' in kez and 'z04' in kez:
if adu == 'z':
self.zold_negyven_elem = ('z03', 'z04')
self.zold_negyven_pont = 40
else:
self.zold_husz_elemek = ('z03', 'z04')
self.zold_husz_pont = 20
# ha mind a négy szín beállt, nem kell tovább keresni
if ((self.makk_husz_elemek or self.makk_negyven_elem) and
(self.piros_husz_elemek or self.piros_negyven_elem) and
(self.tok_husz_elemek or self.tok_negyven_elem) and
(self.zold_husz_elemek or self.zold_negyven_elem)):
break
def adatok_megjelenito(self):
"""Kiírja a változókat a konzolra, ellenőrzéshez."""
print(f'\n{len(self.pakli_lista)=}'
f'\n{self.makk_husz_elemek=}'
f'\n{self.piros_husz_elemek=}'
f'\n{self.tok_husz_elemek=}'
f'\n{self.zold_husz_elemek=}'
f'\n{self.makk_negyven_elem=}'
f'\n{self.piros_negyven_elem=}'
f'\n{self.tok_negyven_elem=}'
f'\n{self.zold_negyven_elem=}'
f'\n{self.makk_husz_pont=}'
f'\n{self.piros_husz_pont=}'
f'\n{self.tok_husz_pont=}'
f'\n{self.zold_husz_pont=}'
f'\n{self.makk_negyven_pont=}'
f'\n{self.piros_negyven_pont=}'
f'\n{self.tok_negyven_pont=}'
f'\n{self.zold_negyven_pont=}')
if __name__ == '__main__':
sj = SnapszerJelentes()
Nincsenek megjegyzések:
Megjegyzés küldése