28/07/21 20:50
Carlo
Postato originariamente da Thejuster:
void giocata per la scopa.
In che modo effettui la verifica delle carte? vedo degli ID 32;2; esempio anche se ho solo giocato una carta, mi appaiono due ID.
posso magari dedurre che il primo numero sta per la carta giocata. 32 può indicare un seme col relativo numero e la seconda cifra l'ID del giocatore che ha giocato giusto?
void giocata per la scopa.
In che modo effettui la verifica delle carte? vedo degli ID 32;2; esempio anche se ho solo giocato una carta, mi appaiono due ID.
posso magari dedurre che il primo numero sta per la carta giocata. 32 può indicare un seme col relativo numero e la seconda cifra l'ID del giocatore che ha giocato giusto?
quasi.
ID 32;2; il primo è 32 (2 di bastoni) l'ID (indice) della carata giocata, i seguenti 2 (2 di coppe) sono gli ID (indici) delle carte prese
Il giocatore non compare perché chi gioca risulta nella variabile globale GiocatoreAttivo
l'ID è l'indice della matrice carta che contiene i controlli Carta (il tuo controllo) con tutte le proprietà da te definite.
Questo frammento di codice, prelevato dal programma, crea una matrice carta di nuovi controlli Carta con tutte le proprietà e posizione iniziale una sopra l'altra.
carta = new Carta[41]; int ind = 0; for (int rr = 1; rr < 5; rr++) { for (int cc = 1; cc < 11; cc++) { // con le aggiunte che hai fatto su Carta, imageList non serve più. ind += 1; carta[ind] = new Carta((Carta.Tipo)rr, cc); // nuova carta con seme e numero carta[ind].OnCardClick += C_OnCardClick; carta[ind].Location = posMazzo; carta[ind].Tag = ind; // nel Tag l'IDcarta carta[ind].Enabled = true; // le carte distribuite hanno gli eventi attivi this.Controls.Add(carta[ind]); } }
ogni ind inequivocabilmente punta a una carta:
ind = 1 asso di coppe
ind = 2 due di coppe
....
....
ind = 10 re di coppe
ind = 11 asso di denari
....
....
ind = 19 cavallo di denari
ind = 20 re di denari
....
....
....
ind = 30 re di bastoni
....
....
....
ind = 40 re di spade
L'ordine dei semi è definito nella struttura Tipo da te definito in Carta
Come Quando Fuori Piove: Cuori(Coppe), Quadri(Denari), Fiori(Bastoni), Picche(Spade)
public enum Tipo : uint {Coppe = 0x1, Denari = 0x2, Bastoni = 0x3, Spade = 0x4}
Postato originariamente da Thejuster:
Ho notato che manca la verifica della scopa il chè e fondamentale.
ma non ho ben capito il modo in cui effettui le verifiche delle carte giocate.
avevo in mente un animazione carina per segnalare la scopa appena effettuata.
Ho notato che manca la verifica della scopa il chè e fondamentale.
ma non ho ben capito il modo in cui effettui le verifiche delle carte giocate.
avevo in mente un animazione carina per segnalare la scopa appena effettuata.
Nel programma scopa che avevo scritto, per verificare la scopa avevo semplicente fatto un controllo dopo la presa:
if (flowLayoutPanelBANCO.Controls.Count == 0) // se nel banco non ci sono più carte... = Scopa
{
// codice scopa
}
else
{
// codice no scopa
}
Un'animazione... bella
Nelle proprietà del tuo controllo Carta, serve anche una bool scopa, nella carta giocata che ha fatto scopa si setta a true in modo da usarla per il conteggio dei punti.
Ad agosto credo che avrò un po' di tempo per rimettere mano al codice, ma se non ti piace qualcosa e preferisci fare a modo tuo, vai e modifica senza pietà
Ultima modifica effettuata da Carlo 29/07/21 8:56
in programmazione tutto è permesso