martedì 19 maggio 2009

Lavoro gruppi: tic tac toe (filetto)

Questo è il segmento di codice su cui stavamo lavorando per la creazione del gioco:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.util.Scanner;
import java.io.*;

public class Filetto implements ActionListener{
private int[][] winCombinations = new int[][] {
{0, 1, 2}, {3, 4, 5}, {6, 7, 8}, //orizzontali
{0, 3, 6}, {1, 4, 7}, {2, 5, 8}, //verticali
{0, 4, 8}, {2, 4, 6} //diagonali
};
private JFrame filetto=new JFrame("Filetto");
private PannelloFiletto p;
private JButton bottoni[]=new JButton[9];
private int conta=0;
private Image luca= ;
private boolean vince=false;
/*
private JPanel pannelloBottoni=new JPanel(new GridLayout(1,1));
private JTextField numeroCasella;
private JLabel r1=new JLabel("Fai la tua mossa...");
char[][] coordinate;*/

public Filetto(){
filetto.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
filetto.setSize(500,500);
filetto.setLayout(new GridLayout(3,3));
for(int i=0; i<=8; i++){
bottoni[i] = new JButton();
filetto.add(bottoni[i]);
buttoni[i].addActionListener(this);
}
filetto.setVisible(true);
}

public void mosse(ActionEvent a) {
conta++;
if(conta % 2 == 0){
lettera = "O";
} else {
lettera = "X";
}

p=new PannelloFiletto();
resetta=new JButton("Resetta gioco"); //nome bottone
numeroCasella=new JTextField();
pannelloBottoni.add(avanti);
quiz.add(p,BorderLayout.CENTER);//posiziona gli elementi nel pannello
quiz.add(pannelloBottoni,BorderLayout.SOUTH); //posiziona gli elementi nel pannello
quiz.add(numeroCasella,BorderLayout.SOUTH);
quiz.add(r1,BorderLayout.NORTH);
resetta.addActionListener(new BottoneResetta());
aggiorna();
quiz.setVisible(true);
}

public class PannelloFiletto extends JPanel {
public void paintComponent(Graphics g) {
Graphics g2D=(Graphics2D) g;
Image filettoImmagine=new ImageIcon("Griglia.jpg").getImage(); //x mettere immagine
g.drawImage(filettoImmagine,0,0,filetto.getWidth(),filetto.getHeight(),null);
}
}
Vengono caricate delle immagini perchè si vogliono usare lo stemma di Peugia e di Terni invece che la "X" e il "O"
Visto che questo frammento di codice avrebbe causato problemi, si è pensato di partire già con la creazione del codice già adatto per il cellulare (su consiglio di DiBari), visto che quello precednte avrebbe causato problemi per il cellulare. Abbiamo quindi creato 2 metodi per il corretto funzionamento del programma su cellulare:
- CanvasGame:
package Filetto;

import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import java.io.IOException;


public class CanvasGame
extends GameCanvas
implements Runnable { //interfaccia che si manda in parallelo insieme alle altre classi

public CanvasGame(){
super(true);
}
public void start() {

try {
Load();
} catch(IOException ioex) { System.err.println(ioex); }

Thread runner = new Thread(this);
runner.start();
}

public void Load() throws IOException{
}
-Filetto
//Filetto.java

package Filetto;


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;


public class Filetto extends MIDlet{

public Filetto() {}

public void startApp() {}

public void pauseApp() { }

public void destroyApp(boolean unconditional) { }
}
Ultimamente abbiamo anche provveduto a raccogliere questi metodi nella cartella rsc; in aggiunta ad essa, si sono create altre 2 cartelle: una per le immagini e l'altra per l'eseguibile del programma.