Mihai-Pavel ALBU (78706) - Joc de Poker

Autorul poate fi contactat la adresa: Login pentru adresa

Introducere

Proiectul propune realizarea unui mini-joc de poker prin reprezentarea pe 3 linii a cartilor, astfel:

  • linia de jos: cele 2 carti ale primului jucator
  • linia de mijloc: cele 5 carti comune
  • linia de sus: cele 2 carti ale celuilalt jucator

Se va afisa caracterul 'W' in dreapta jucatorului castigator (jucatorilor castigatori).

Am ales aceasta tema de proiect deoarece consider interesanta o implementare a acestui joc, fiind prima ocazie de a invata sa lucrez intr-un astfel de context. Am pornit de la ideea de a alege aceasta tema, deoarece sunt pasionat de acest joc, considerat de majoritatea ca fiind unul de noroc, dar el este unul care testeaza si abilitatile de a monitoriza statisticile cazurilor preponderent invingatoare, de a anticipa miscarea adversarului etc. Fiind interesat de acest joc, am fost curios cum s-ar reprezenta punerea sa in practica in acest context (placa ATMega, LCD pe care se vor afisa informatii, placa de test pentru butoane).

Cele 2 carti ale fiecaruia dintre cei 2 jucatori si cele 5 carti comune sunt obtinute prin valori random, algoritmul determinand mana castigatoare sau remiza (daca este cazul).

Este util atat pentru altii, cat si pentru mine in contextul invatarii de a lucra intr-un astfel de mediu.

Descriere generală

Schema bloc

bloc_v3.jpg

Lista de piese

Denumire componenta Cantitate
LCD 1
Conector USB 1
Pini 5
Fire mama-mama 8
Fire mama-tata 8
Placa de test 1
Butoane 5

Pentru implementarea jocului am folosit un LCD pe care vor fi afisate informatiile legate de jucatori, asa cum am descris in Introducere. Conectorul USB face legatura intre hardware si software, pentru testare am utilizat AVR.

Am folosit 5 pini (pusi pe placa de test) pentru a conecta, cu ajutorul firelor mama-tata, la Ground urmatorii pini de pe LCD: BLK, MISO, CS1, CS2, PEN. Cu fire mama-mama am facut urmatoarele 9 conexiuni:

LCD ATMEGA324A-PU
GND PB-
VCC PB+
CLK PB1
MOSI PB5
RES PB6
DC PB7

si cele 3 butoane de pe placa de test legate la PD0, PD1, PD2.

Buton apasat (de pe placa de test) Actiune
PD0 Se genereaza cartile ambilor jucatori
PD1 Se genereaza cele 5 carti comune
PD2 Se afiseaza jucatorul castigator (sau remiza)

Hardware Design

sch_v3.jpg.jpg

Software Design

Am implementat un comparator de maini de poker, pentru a stabili castigatorul sau cazul de remiza.

Cartile au un singur caracter: 2/3/4/5/6/7/8/9/T/J/Q/K/A

Codificare Carte
2-9 2-9
T 10
J 12
Q 13
K 14
A 15
Codificare Culoare Traducere englezeasca
d romb diamonds
s inima neagra spades
c trefla clubs
h inima rosie hearts

Exemplu de mana: 4sAc2h3hJd =

  • 4 de inima neagra
  • As de trefla
  • 2 de inima rosie
  • 3 de inima rosie
  • 12 de romb

Algoritmul analizeaza rangul fiecarei maini si compara astfel valorile mainilor jucatorilor

Rangul unei maini se defineste in urmatorul tabel:

Mana Rang
Obisnuita 0
O pereche 1
Doua perechi 2
Tripla 3
Chinta 4
Culoare 5
Full-House 6
Careu 7
Chinta Regala 8
Chinta Royala 9

Comparatorul lucreaza cu valorile rangurilor mainilor atasate si decide jucatorul castigator. Programul este implementat in C, sursa este cea mai jos atasata, la sectiunea “Download”.

Rezultate Obţinute

Concluzii

A fost un proiect care mi-a dezvoltat cunostintele de electronica si mi-a pus la incercare abilitatile practice si in acelasi timp pe cele de a ma descurca in situatii limita.

Download

Aproape finalizat, cu mici neajunsuri (nu analizeaza cazurile de egalitate intre 2 maini de acelasi rang).

joc_de_poker_v1.zip

Jurnal

  • Am primit piesele necesare constructiei placii de baza
  • Am hotarat tema de proiect si m-am gandit la piesele suplimentare de care as avea nevoie
  • Am cautat piesele pe care le-am stabilit ca fiind necesare
  • Am implementat partea hard, apoi partea soft.

Bibliografie/Resurse

  • DataSheet ATMEGA324A-PU
  • Laboratoarele de PM
  • Room of Inspiration PM
  • Google
  • Documentația în format PDF
pm/prj2018/astratulat/joc-de-poker.txt · Last modified: 2021/04/14 17:07 (external edit)
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0