ciao a tutti sto realizzando un progetto che consiste nell'implementazione del gioco del tris..il progetto l'ho finito solo che non riesco a far visualizzare il mome del giocatore cui spetta il turno all'interno del frame; il nome viene chiesto all'inizio della partita ma dopo nn capisco come farlo visualizzare nel frame..vi posto il codice:
codice:import java.awt.Canvas; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics; import java.awt.event.MouseEvent; import java.awt.event.MouseListener; import java.util.Random; import javax.swing.JOptionPane; import javax.swing.JFrame; public class Tris extends JFrame { private static class GameBoard extends Canvas { private static final int VUOTO = 0; private static final int GIOCATOREX = 1; private static final int GIOCATOREO = 2; private int[][] Grigliagioco = new int[3][3]; // Griglia del gioco private boolean TurnoX; // Valore booleano che stabilisce se è il turno di X o meno private Random random; // generatore random che definisce quale giocatore inizia la partita private boolean gameRunning; // Definisce se il gioco è in progresso private int Risultato; // Risultato /** * Catturiamo gli eventi del mouse */ private class GameListener implements MouseListener //eventi di movimento del mouse { public void mousePressed(MouseEvent e){} //chiamato quando un pulsante del mouse è stato premuto su un componente public void mouseClicked(MouseEvent e) //chiamato quando un pulsante del mouse è stato premuto e rilasciato in rapida successione su un componente { // Controlla la posizione al clic del mouse int xPos = e.getPoint().x; int yPos = e.getPoint().y; // Controlla la grigla del gioco if(xPos > 50 && yPos > 50 && xPos < 50+50*3 && yPos < 50+50*3) { // Controlla se il gioco è stato avviato if(gameRunning == false) { // Nuovo Gioco newGame(); gameRunning = true; repaint(); return; } // Controlla un posto vuoto if(Grigliagioco[xPos/50-1][yPos/50-1] != VUOTO) return; // Mette X oppure O per il turno corrente poi si alterna if(TurnoX) { Grigliagioco[xPos/50-1][yPos/50-1] = GIOCATOREX; TurnoX = false; } else { Grigliagioco[xPos/50-1][yPos/50-1] = GIOCATOREO; TurnoX = true; } // Controllo del giocatore vincente Risultato = gameOver(); if(Risultato != 0) { // Il gioco è finito gameRunning = false; } // Ridisegna la griglia repaint(); } } public void mouseReleased(MouseEvent e){} //chiamato quando un pulsante del mouse è stato rilasciato da un componente public void mouseEntered(MouseEvent e){} //chiamato quando il mouse entra in un componente public void mouseExited(MouseEvent e){} //chiamato quando il mouse esce da un componente } /** * Crea una nuova griglia del gioco */ public GameBoard() { // Imposta la dimensione e il colore di background setPreferredSize(new Dimension(256,256)); setBackground(Color.WHITE); // Aggiungi eventi del mouse addMouseListener(new GameListener()); // Crea un generatore random random = new Random(); // Nuovo gioco newGame(); // Controllo stato del gioco gameRunning = true; } /** * Cancella la griglia del gioco * Imposta generatore casuale per il prossimo giocatore */ public void newGame() { // Griglia gioco for(int y = 0;y < 3;y++) for(int x = 0;x < 3;x++) Grigliagioco[x][y] = VUOTO; // Selezione giocatore if(random.nextInt(2) < 3) TurnoX = true; else TurnoX = false; } /** * Controlla per vedere se il gioco è terminato. * * @return Se il gioco è terminato o meno. 0 = Non è finito, 1 = X ha vinto, 2 = O ha vinto, 3 = parità_ */ int gameOver() { // Verifica for(int x = 0;x < 3;x++) // Righe if(Grigliagioco[x][0] == Grigliagioco[x][1] && Grigliagioco[x][1] == Grigliagioco[x][2]) return Grigliagioco[x][0]; for(int y = 0;y < 3;y++) // Colonne if(Grigliagioco[0][y] == Grigliagioco[1][y] && Grigliagioco[1][y] == Grigliagioco[2][y]) return Grigliagioco[0][y]; // Diagonale if(Grigliagioco[0][0] == Grigliagioco[1][1] && Grigliagioco[1][1] == Grigliagioco[2][2]) return Grigliagioco[0][0]; if(Grigliagioco[2][0] == Grigliagioco[1][1] && Grigliagioco[0][2] == Grigliagioco[1][1]) return Grigliagioco[2][0]; // Controlla la parità_ for(int y = 0;y < 3;y++) for(int x = 0;x < 3;x++) if(Grigliagioco[x][y] == 0) return 0; // IL gioco non è in parità_ perchè ci sono spazi vuoti // Il gioco è in parità return 3; } /** * Disegniamo il gioco */ public void paint(Graphics g) { // Disegniamo le linee g.setColor(Color.BLACK); for(int y = 1;y < 3;y++) g.drawLine(50,y*50+50,50+50*3,y*50+50); for(int x = 1;x < 3;x++) g.drawLine(x*50+50,50,x*50+50,50+50*3); // Disegniamo il giocatore X e il giocatore Y for(int y = 0;y < 3;y++) { for(int x = 0;x < 3;x++) { if(Grigliagioco[x][y] == GIOCATOREX) { g.setColor(Color.BLUE); g.drawLine(50+x*50,50+y*50,50+x*50+50,50+y*50+50); g.drawLine(50+50+x*50,50+y*50,50+x*50,50+y*50+50); } if(Grigliagioco[x][y] == GIOCATOREO) { g.setColor(Color.RED); g.drawOval(50+x*50,50+y*50,50,50); } } } // Controlla i turni g.setColor(Color.RED); if(gameRunning) { // Turno dei giocatori if(TurnoX) g.drawString("Tocca al giocatore X",10,20); else g.drawString("Tocca al giocatore O",10,20); } else { // Messaggio fine partita if(Risultato == GIOCATOREX) g.drawString("Il giocatore X ha vinto!",10,20); if(Risultato == GIOCATOREO) g.drawString("Il giocatore O ha vinto!",10,20); if(Risultato == 3) g.drawString("Parità_!",10,20); } } } public static void main(String[] args) { // Crea una nuova finestra per il gioco del tris Tris ticTacToe = new Tris(); ticTacToe.setTitle("Gioco del Tris"); String nomeGiocatoreX = JOptionPane.showInputDialog("Inserisci il nome del giocatore X."); String nomeGiocatoreO = JOptionPane.showInputDialog("Inserisci il nome del giocatore 0"); ticTacToe.setPreferredSize(new Dimension(256,256)); ticTacToe.setBackground(Color.WHITE); ticTacToe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // Aggiungi la griglia del gioco GameBoard gameBoard = new GameBoard(); ticTacToe.add(gameBoard); // Visualizza il frame nella dimensione impostata ticTacToe.pack(); ticTacToe.setVisible(true); } }

Rispondi quotando

