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.
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.