PDA

Visualizza la versione completa : Problema in Java


Rifinitore
23-01-2003, 16:46
Ciao a tutti.
Ho un problema con Java:
devo realizzare una classe che mi permetta di giocare a dama, mi hanno consiglioato di memorizzare tutte le caselle della scacchiera in un array. Ma ... come posso fare per far apparire la sistemazione delle pedine a inizio gioco?
Le classi per pedine e dame le ho gia implementate.
Qualcuno ha un'idea?

Marco_Frigerio
23-01-2003, 16:56
scorri tutte le caselle con un ciclo

Rifinitore
23-01-2003, 17:03
Ok, fin qui ci sono, ma come faccio a far visualizzare una pedina nera (con la lettera n) o una bianca (con la lettera b) secondo la configurazione iniziale delle pedine nella scacchiera di dama ?

blinkago
23-01-2003, 19:42
usi l'incremento giusto!!!
se non ce la fai prova con le if!!:gren:

for(int i=0;i<8;i=i+2){
for(int j=0;j<8; j++){
if(j<4){
disponi(i,j,b);
}else if(j>5){
disponi(i,j,n);
}
}
}

Rifinitore
27-01-2003, 00:09
Scusa ancora, ma non riesco a combinare niene !
Allora: io ho creato una classe di un pezzo immaginario della tastiera, poi ne ho create due da questa, una che descrive una pedina e una che descrive una dama.
ora, devo crare un array per la scacchiera e far visualizzare le mie 24 pedine. Ma nonappena provo a stampare mi da errore come se l'array fosse vuoto !
Mi sono spiegato male ? Sapresti darmi una mano ?

Popper
27-01-2003, 10:26
intanto io avrei fatto estendere direttamente Dama da Pedina.
class Dama extends Pedina
considera che la Dama deve avere tutti i metodi di pedina! magari in + ci implementi il metodo vaiIndietro(int).

Per il problema dell'array vuoto posta il codice di inizializzazione... un array bidimensionale devi inizializzarlo con un doppio ciclo, magari hai sbagliato qualcosa!

Rifinitore
27-01-2003, 10:40
E' vero, diventa molto pių facile la gestione delle dame cosė !
Per il resto, ho cambiato idea: volevo fare un array di 24 oggetti generici di tipo pezzo, e successivamente un array di 8x8 oggetti dove sistemare le pedine! Ma con questo codice che ti posto mi da un errore java.lang.NullPointerException ! Il codice č richiamato in un altra classe con
Scacchiera scac = new Scacchiera()
scac.stampa()

Ecco il codice :

public class Scacchiera
{
Pezzo[] pezzi;
public void scacchiera()
{
pezzi = new Pezzo[24];
pezzi[0] = new Pedina ("bianco", 1, "b");
pezzi[1] = new Pedina ("bianco", 1, "b");
pezzi[2] = new Pedina ("bianco", 1, "b");
pezzi[3] = new Pedina ("bianco", 1, "b");
pezzi[4] = new Pedina ("bianco", 1, "b");
pezzi[5] = new Pedina ("bianco", 1, "b");
pezzi[6] = new Pedina ("bianco", 1, "b");
pezzi[7] = new Pedina ("bianco", 1, "b");
pezzi[8] = new Pedina ("bianco", 1, "b");
pezzi[9] = new Pedina ("bianco", 1, "b");
pezzi[10] = new Pedina ("bianco", 1, "b");
pezzi[11] = new Pedina ("bianco", 1, "b");

pezzi[12] = new Pedina ("nero", 1, "n");
pezzi[13] = new Pedina ("nero", 1, "n");
pezzi[14] = new Pedina ("nero", 1, "n");
pezzi[15] = new Pedina ("nero", 1, "n");
pezzi[16] = new Pedina ("nero", 1, "n");
pezzi[17] = new Pedina ("nero", 1, "n");
pezzi[18] = new Pedina ("nero", 1, "n");
pezzi[19] = new Pedina ("nero", 1, "n");
pezzi[20] = new Pedina ("nero", 1, "n");
pezzi[21] = new Pedina ("nero", 1, "n");
pezzi[22] = new Pedina ("nero", 1, "n");
pezzi[23] = new Pedina ("nero", 1, "n");
}

public void stampa()
{
for (int count=0; count<pezzi.length; count++)
{
System.out.println(pezzi[count]);
}
}
}

floyd
27-01-2003, 10:51
public void scacchiera() { questo č un metodo
public Scacchiera() { questo č un costruttore
se chiami new Scacchiera() il costruttore viene eseguito
e l'array viene riempito nel metodo, in pratica mai quindi rimane null

Rifinitore
27-01-2003, 10:53
quindi devo usare scacchiera con la lettera minuscola ?

Xadoom
27-01-2003, 10:56
PRIMO:Potresti evitare di inizzializzare l'array posizione x posizione e farlo con un ciclo!!
Del tipo:

for(int i=0; i<pezzi.lengh() ;i++){
if(i<=11) pezzi[i]=new Pedina(....);
else pezzi[i]=new Pedina(....);
}

E' sicuramente pių elegante, ma sopratutto pių veloce da scrivere!!:adhone:

SECONDO:
Il costruttore di una classe deve essere di questo tipo:

public NomeClasse(){...}

e sopratutto deve avere la stesso Nome della classe (Attenzione anche le maiuscole sono importanti!!!), prova a cambiare

public void scacchiera() con
public Scacchiera()

Spero di esserti stato di aiuto!!!!!!:D

Loading