martedì 3 marzo 2009

Creazione quiz java

Questa prof è la soluzione funzionante del compito che ci aveva assegnato...ora abbiamo corretto gli errori e funziona. Ovviamente grazie anche all'aiuto di Di Bari...XD...
(manca un pezzo quando da il risultato perchè dice che non lo può pubblicare a causa di un errore html...semmai prof glielo faccio vedere lunedì così lo prova anche...)

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.util.*;
import java.util.Scanner;
import java.io.*;

public class Gioco {
private JFrame quiz; //JFrame crea la finestra
private PannelloQuiz p;
private JButton avanti;
private JPanel pannelloBottoni=new JPanel(new GridLayout(1,1));
private JTextField risposta;
private JLabel r1=new JLabel("Quale e' la citta' piu' popolata di ?");
String[][] nazioni;
private int indice=0;


public Gioco() throws IOException{
quiz=new JFrame("QUIZ");
quiz.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); //serve una volta chiusa la finestra a chiudere il programma
quiz.setSize(500,500);
p=new PannelloQuiz();
avanti=new JButton("Domanda successiva");
risposta=new JTextField();
pannelloBottoni.add(avanti);
quiz.add(p,BorderLayout.CENTER); //CENTER, EAST, SOUTH E NORTH servono per
quiz.add(pannelloBottoni,BorderLayout.EAST); //posizionare gli elementi nel pannello
quiz.add(risposta,BorderLayout.SOUTH);
quiz.add(r1,BorderLayout.NORTH);
avanti.addActionListener(new BottoneAvanti());
nazioni=readFile("cittaPopolate.txt");
aggiorna();
quiz.setVisible(true);
}

public class PannelloQuiz extends JPanel { /*faccio una classe interna*/
public void paintComponent(Graphics g) {
Graphics g2D=(Graphics2D) g;
Image quizImmagine0=new ImageIcon(nazioni[indice][2]).getImage();
g.drawImage(quizImmagine0,0,0,this.getWidth(),this.getHeight(),null);
// serve per creare l'immagine sul pannello e poi stamparla
}
}


public void aggiorna() {
r1.setText("Quale e' la citta' piu' popolata di "+nazioni[indice][0]+"?"); //l'array a doppia dimensione serve per caricare le immagini ed è la prima dimansione dell'array e cioè l'indice che gestisce il ciclo
risposta.setText("");
p.repaint();
}

public class BottoneAvanti implements ActionListener {
public void actionPerformed(ActionEvent event){
String tmp = event.getActionCommand();
if (tmp == "Domanda successiva"){
nazioni[indice][3]=Metodi.pulisciStringa(risposta.getText()); //serve per riazzerare la griglia di risposta ad ogni domanda
indice++;
aggiorna();
if (indice==(nazioni.length-1)){
avanti.setText("Risultato quiz");
}
}
if (tmp=="Risultato quiz") {
int punti=0;
for (int i=0; i//porta le risposte che anche se scritte con la maiuscola, in minuscolo per effettuare così un comparamento tra la risposta data e quella giusta ed assegnare o meno i punti
punti++;
risposta.setText("Hai totalizzato "+punti+" punti. Per ricominciare il quiz riavvia il programma");

}

}
}
public String[][] readFile(String readFile) throws IOException{
Scanner cauntLine=new Scanner(new FileReader(readFile));
int cauntLinePoint=0;
while (cauntLine.hasNext()){
cauntLine.next();
cauntLinePoint++;
}
String[][] dataLocal=new String[cauntLinePoint/3][4];
cauntLinePoint=0;
Scanner in=new Scanner(new FileReader(readFile));
while (in.hasNext()){
dataLocal[cauntLinePoint][0]=Metodi.pulisciStringa(Metodi.sostituisciCarattere(in.next(),'#',' ')); //array per gli stati
dataLocal[cauntLinePoint][1]=Metodi.pulisciStringa(Metodi.sostituisciCarattere(in.next(),'#',' ')); // array per la città più popolata
dataLocal[cauntLinePoint][2]=Metodi.sostituisciCarattere(in.next(),'#',' '); //array per l'immagine
dataLocal[cauntLinePoint][3]=""; //array per la risposta data dall'utente
cauntLinePoint++;

}
return dataLocal;
}

public static void main(String[] args) throws IOException{

Gioco quiz=new Gioco();

}
}
Questo è il file dal quale il programma attingerà le risposte giuste con il link delle relative immagini delle città:

Italia Milano milano.jpg Francia Parigi parigi.jpg Spagna Madrid madrid.jpg Portogallo Lisbona lisbona.jpg Germania Berlino berlino.jpg Grecia Atene atene.jpg Olanda Amsterdam amsterdam.jpg Danimarca Copenhagen copenhagen.jpg Austria Vienna vienna.jpg

Eseguendo il programma si otterrà una finestra come quella nell'esempio...


1 commento:

didatticaNatalizi ha detto...

Devi gestire il tutto con istruzioni da inserire all'interno del metodo actionPerformed del bottone.