PDA

View Full Version : [JAVA]aiutino con giochino sette e mezzo


maxxpower
28-03-2012, 11:50
Come da titolo, sono uno studente di informatica e sto creando per conto mio, a scopo di esercizio un piccolo giochino testuale,il classico sette e mezzo con le carte piacentine per capirci.

Sono arrivato a questo punto e non riesco a ragionare oltre per uscirne fuori:

questa è la classe carta

public class Carta {

// I 4 semi del mazzo classico (piacentino)

private final int COPPE=0;
private final int SPADE=1;
private final int DENARI=2;
private final int BASTONI=3;

//i valori speciali

private final int ASSO=1;
private final int FANTE=8;
private final int RE=10;
private final int CAVALLO=9;

private final int seme; //fa riferimento ad uno dei semi prima elecanti ed è fisso;
private final int valore;

//costruttore della carta

public Carta(int valore,int seme){

this.valore=valore;
this.seme=seme;

}


//passiamo ad alcuni metodi di base della carta

public int getSeme(){

return seme;
}

public int getValore(){

return valore;
}

public String getSemeasString(){

switch(seme){
case BASTONI:return "bastoni";
case COPPE:return "coppe";
case SPADE:return "spade";
case DENARI:return "denari";
default : return "??";



}

}

public String getValoreasString(){

switch(valore){

case 1: return "Asso";
case 2: return "2";
case 3: return "3";
case 4: return "4";
case 5: return "5";
case 6: return "6";
case 7: return "7";
case 8: return "Fante";
case 9: return "Cavallo";
case 10:return "Re";
default: return "??";



}


}

public String toString(){

return getValoreasString()+" "+ "di" + " "+ getSemeasString();
}
}




questo è il mazzo con i suoi metodi:

import java.util.*;

public class Mazzo {

public ArrayList<Carta> mazzo = new ArrayList<Carta>();

public Mazzo() {

for (int seme = 0; seme <= 3; seme++) {
for (int valore = 1; valore <= 10; valore++) {

mazzo.add(new Carta(valore, seme));

}
}

}

public String toString() {

String tmp = "";

for (Carta c : mazzo) {
tmp += c + "\n";

}

return tmp;

}

public void mescola() {

// la classe collections offre un metodo statico per mescolare gli
// elementi di una List (ricordiamo che mazzo fa parte della interfaccia
// list essendo di Classe ArrayList

Collections.shuffle(mazzo);
}

public Carta daiCarta() {

// utilizzo i metodi della classe Aarraylist per leggere la prima carta
// del mazzo,poi la tolgo in quanto è stata vista.

Carta tmp = mazzo.get(0);

mazzo.remove(0);

return tmp;

}

public static void main(String[] args) {

//prova

Mazzo m = new Mazzo();



m.mescola();



Carta c= m.daiCarta();

System.out.println(c.getValore());



}

}



ed ora veniamo alla classe del giochino:


public class SetteMezzo {

private Mazzo m;

public SetteMezzo(){

m= new Mazzo();


}


private void setValori(){

Carta tmp= m.daiCarta();

int valore=tmp.getValore();

switch(valore){

case:


}


in sintesi ho sfruttato il metodo getValore() della carta per modificare i valori delle carte vestite,che come saprete nel sette e mezzo valgono 1/2 punto.

Quindi dovrei analizzare caso per caso il valore della carta estratta e riassegnarlo nuovamente,giusto?

es. nel case 10 : val=0,5 ? (che però è un float,quindi dovrei dichiarare una nuova variabile float valore all'esterno dello switch e popolarla in questo modo).


inoltre non sono sicuro se mi convenga dichiarare questo metodo come void, o farmi tornare direttamente un float in modo da usarlo poi nel metodo gioca quando dovrò sommare i valori delle carte estratte per vedere se ho sballato o meno.


Scusatemi per il post chilometrico ma sono alle primissime armi e cerco di farmi capire al meglio.

Grazie in anticipo per le risposte.

ally
29-03-2012, 17:34
getValoreasString

...restituisce una stringa...crea un metodo che trasformi tale valore nei corretti punteggi...

maxxpower
30-03-2012, 19:55
getValoreasString

...restituisce una stringa...crea un metodo che trasformi tale valore nei corretti punteggi...

risolto...:) (ho fatto uno switch sui valori speciali final e li ho trasformati in 0.5 nel caso di RE FANTE E CAVALLO );

poi posto la soluzione..dovesse servire a qualcuno

ally
31-03-2012, 11:18
...una possibile soluzione era quella di creare un oggetto Carta con valore,seme e punteggio :



new Carta("Asso","Bastoni",1);