Ciao a tutti, sto provando a creare il gioco Mastermind in java, ma ho qualche problema nel scrivere il codice.
Premetto che non chiedo a nessuno di voi di svolgere il lavoro al mio posto:P, ma soltanto di colmare le mie lacune.
Per chi non lo conoscesse in Mastermind si ha un giocatore che deve indovinare un "codice segreto" composto dal suo avversario "software". Il codice segreto è di 7 cifre e per crearlo si hanno a disposizione le dieci cifre del sistema decimale standard (0,1,2,3,4,5,6,7,8,9). Una volta che il "software" ha composto il codice, il giocatore fa
il suo primo tentativo, cercando di indovinarlo. Dopo ogni tentativo, il giocatore riceverà degli aiuti:
-Il numero di cifre giuste al posto giusto; cioè le cifre del tentativo che sono effettivamente presenti nel codice al posto tentato.
-Il numero di cifre giuste al posto sbagliato; cioè le cifre del tentativo che sono effettivamente presenti nel codice, ma non al posto tentato.
Non si comunicherà quali cifre sono giuste o sbagliate, ma solo quante.
Se il giocatore riesce ad indovinare il codice entro il numero di tentativi predeterminati (per es 9) allora quest'ultimo vince la partita, altrimenti vince il "computer"
Vi riporto il codice:
codice:
import java.util.*;
import java.io.*;
class Mastermind {
public static void main (String argv[]) {
System.out.print ("\n __ __ _ "+
"\n | \\/ | __ _ ___| |_ ___ _ __ "+
"\n | |\\/| |/ _` / __| __/ _ \\ '__| "+
"\n | | | | (_| \\__ \\ || __/ | "+
"\n |_| |_|\\__,_|___/\\__\\___|_| "+
"\n\n __ __ _ _ "+
"\n | \\/ (_)_ __ __| | "+
"\n | |\\/| | | '_ \\ / _` | "+
"\n | | | | | | | | (_| | "+
"\n |_| |_|_|_| |_|\\__,_| ");
int a[] = new int[7];
Random generator = new Random();
// per ogni elemento presente nella lista
for (int i = 0; i < a.length; i++) {
// creo un numero random e lo inserisco nella
// corrente posizione della lista
a[i] = generator.nextInt(10);
}
/* Per stampare la sluzione
for (int i=0; i<a.length; i++){
System.out.print (a[i]);
} */
public String leggiStringaOpzionale() {
try{
String s = in.readLine();
return s.trim();
}
catch (IOException e) {
System.out.println(e);
return "";
}
}
public String leggiStringa() {
while(true){
String s = leggiStringaOpzionale();
if(!s.equals(""))
return s;
}
}
public int leggiNum() {
while(true) {
try{
String s = leggiStringa();
s = s.trim();
int num = Integer.parseInt(s);
return num;
}
catch(NumberFormatException e) {
System.out.println("\n"+"Il valore inserito non rappresenta un numero intero.");
System.out.print("Ripetere l'inserimento:");
}
}
}
public int postoErrato(int[]a,int[]b){
int errato = 0;
for(int i=0; i<a.length; i++){
for(int j=0; j<b.length; j++){
if (a[i]==b[j]){
errato++;}
}
}
return errato;
}
public int postoEsatto(int[]a, int[]b) {
int esatto=0;
for (int i=0; i<a.length; i++){
if (a[i]==b[i]){
esatto++;}
}
}
}
}
Per ora ho implementato solo la parte iniziale in cui viene generato l'array da scoprire e 4 metodi.
Per quanto riguarda i metodi postoEsatto e postoErrato son sicuro di averli scritti nel modo corretto, ma non so per quale motivo eclipse mi da 3 errori di sintassi riguardanti le parentesi tonde e la virgola degli attributi del metodo (li trovate in grassetto nel codice).
Invece i restanti metodi leggiNum, leggistringa e leggistringaOpzionale li ho copiati da un precedente progetto, ma nonostante ciò ho degli errori:
Multiple markers at this line:
- Syntax error, insert "Enum Identifier" to complete EnumHeaderName
- Syntax error, insert "EnumBody" to complete the BlockStatement
- Syntax error, on token "String"
-LeggistringaOpzionale cannot be resolved to a type