Ha befejezed, küld el nekem is a kódot!
import pygame as pg
import pygame_gui
import random
import os
class Snapszer:
"""pygame-ce 2.5.5 (SDL 2.32.6, Python 3.12.8)"""
def __init__(self):
pg.init()
self.SZELES = 800
self.MAGAS = 600
self.ablak = pg.display.set_mode((self.SZELES, self.MAGAS))
pg.display.set_caption('Kártya képek leosztás.')
self.hatter = pg.Surface((self.SZELES, self.MAGAS))
self.hatter.fill(pg.Color('darkgreen'))
# Kezelő (manager) létrehozása
# Ez a Pygame GUI motorja, ami kezeli az összes widgetet
self.fonok = pygame_gui.UIManager((self.SZELES, self.MAGAS))
self.FEHER = (255, 255, 255)
self.PIROS = (255, 0, 0)
self.FEKETE = (0, 0, 0)
# Kártyák listája és keverés
self.kartyak_lista = [
'm02', 'm03', 'm04', 'm10', 'm11',
'p02', 'p03', 'p04', 'p10', 'p11',
't02', 't03', 't04', 't10', 't11',
'z02', 'z03', 'z04', 'z10', 'z11'
]
random.shuffle(self.kartyak_lista)
self.kartya_szelesseg = None
self.kartya_magassag = None
self.kijeloltek = None
# Játékos kártyái
self.jatekos_kartyak = []
self.jatekos_kartya_kepek = []
self.jat_hivolap = None
self.jat_valaszlap = None
# Adu kártya
self.adu_kartya = []
self.adu_kep = None
# A számítógép kartyai
self.komputer_kartyak = []
self.kom_hivolap = None
self.kom_valaszlap = None
# A paklit jelző kártyák hátlap képe
self.hatlap = None
self.hatlap_kep = None
# Képek mappa
self.kep_mappa = 'kartyak'
# A játékos kezdő kártya pozíciója
self.jcard_x = 50
self.jcard_y = 50
# Az adu kártya pozíciója
self.adu_x = 600
self.adu_y = 200
# A hátlap kártya pozíciója
self.hat_x = 570
self.hat_y = 250
self.osztas()
self.kepeket_beolvas()
self.valtozok_ellenorzese()
# Fő ciklus
# Időmérő beállítása
self.ido_mero = pg.time.Clock()
self.futas = True
while self.futas:
# Időmérés a frissítéshez
self.delta_ido = self.ido_mero.tick(60) / 1000.0
for event in pg.event.get():
if event.type == pg.QUIT:
self.futas = False
# A Pygame GUI eseménykezelője feldolgozza az eseményeket
self.fonok.process_events(event)
# A widgetek frissítése
self.fonok.update(self.delta_ido)
# Képernyő szine
self.ablak.blit(self.hatter, (0, 0))
# A kártyák megjelenítése
self.rajzolas()
self.fonok.draw_ui(self.ablak)
pg.display.update()
def osztas(self):
"""
A self.kartyak_lista -ból beolvassa a kártyaképek fájl neveit.
A self.jatekos_kartyak listába 5 kartyakép nevet,
a self.komputer listába 5 kártyakép nevet, és 1 kártyakép nevet
a self.adu listába.
:return:
"""
for _ in range(5):
if len(self.kartyak_lista) >= 2:
if len(self.jatekos_kartyak) < 5:
jat_elem = self.kartyak_lista.pop(0)
self.jatekos_kartyak.append(jat_elem)
jat_elem = self.kartyak_lista.pop(0)
self.komputer_kartyak.append(jat_elem)
if len(self.kartyak_lista) != 0 and len(self.adu_kartya) == 0:
self.adu_kartya.append(self.kartyak_lista[-1])
self.hatlap = 'hátlap_f'
elif len(self.jatekos_kartyak) == 5 and len(self.komputer_kartyak) == 5:
break
else:
self.adu_kartya.clear()
self.kartyak_lista.clear()
print(f'A pakliból elfogytak a lapok!')
break
self.komputer_kartyak.sort()
self.jatekos_kartyak.sort()
def kepeket_beolvas(self):
"""
A self.osztás metódusban létrehozott, self.jatekos_kartyak, és
self.adu_kartya listákból a képfájlnevek beolvasása.
1. self.jatekos_kartya_kepek, 2. self.adu_kep + self.hátlap_kép.
:return:
"""
for kartya in self.jatekos_kartyak:
jat_kep = pg.image.load(
os.path.join(self.kep_mappa, f'{kartya}.png')).convert_alpha()
self.jatekos_kartya_kepek.append(jat_kep)
if self.adu_kep is None:
self.adu_kep = pg.image.load(
os.path.join(self.kep_mappa, f'{self.adu_kartya[0]}.png')).convert_alpha()
self.hatlap_kep = pg.image.load(
os.path.join(self.kep_mappa, f'{self.hatlap}.png')).convert_alpha()
self.kartya_szelesseg = self.jatekos_kartya_kepek[0].get_width()
self.kartya_magassag = self.jatekos_kartya_kepek[0].get_height()
# self.kijeloltek = [False] * len(self.jatekos_kartya_kepek)
def valtozok_ellenorzese(self):
print(f'{self.jatekos_kartyak=}')
print(f'{self.komputer_kartyak=}')
print(f'{self.adu_kartya=}')
print(f'Pakli {len(self.kartyak_lista)} darab')
def rajzolas(self):
"""
A self.kepeket_beolvas metódus folytatása. Megjeleníti a
kártya képeket.
:return:
"""
# Játékos 5 kártyája fent középen
kozep_x = self.MAGAS // 2
kezdo_x = kozep_x - (len(self.jatekos_kartya_kepek) * (self.kartya_szelesseg + 10)) // 2
y = 50 # fent
for i, kep in enumerate(self.jatekos_kartya_kepek):
x = kezdo_x + i * (self.kartya_szelesseg + 10)
self.ablak.blit(kep, (x, y))
# Adu kártya jobbra középen
self.ablak.blit(self.adu_kep, (self.adu_x, self.adu_y))
# Hátlap az adu kártyán, eltolva
hatlap_kep_forditott = pg.transform.rotate(self.hatlap_kep, -90)
self.ablak.blit(hatlap_kep_forditott, (self.hat_x, self.hat_y))
if __name__ == '__main__':
sn = Snapszer()
A képek mappa neve: kartyak
A .png kártyaképek nevei, példa:
'm02.png', 't03.png', 'p04.png', 'z10.png', 'm11.png', stb..
Nincsenek megjegyzések:
Megjegyzés küldése