codice:
# import java.awt.*;
import java.awt.event.*;
#
import javax.swing.*;
#
import javax.swing.event.*;
#
import java.util.StringTokenizer;
#
import java.io.*;
#
class SQuiz extends JFrame implements ItemListener {
/*Variabili*/
Player player; //The player
Questions questions; //The questions
JLabel question; //The question
JRadioButton ans1, ans2, ans3, ans4; //The answers
ButtonGroup answers; //The Group of answers
JButton Answer; //The Button to Answer at the question.
JPanel qPanel, aPanel, APanel; //The Panels for the Game.
JRadioButtonMenuItem settingsNormalRBMI, settingsFastRBMI;
FileInputStream ladder;
ActionListener questionsListeners = new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
JOptionPane.showMessageDialog(null,
"In totale ci sono " +
getTotQ() +
" domande."
"Domande Totali.",
JOptionPane.INFORMATION_MESSAGE);
} catch (HeadlessException he) {}
}
};
int Num; //Register the last num param of MakeGUI();
long start, end; //Used for currentTimeMillis() function.
String topTen[] = new String[10]; //The TopTen ladder
String topTenPoints[] = new String[10]; //The TopTen points.
/**
*S-Quiz constructor
*/
SQuiz() {
setTitle("S-Quiz! Riuscirai ad arrivare alla fine?");
setSize(640, 320);
setResizable(false);
addWindowListener(new WindowAdapter() {
public void windowClosing(WindowEvent we) {
JOptionPane.showMessageDialog(null, "Arrivederci!",
"S-Quiz", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
});
JMenuBar menuBar = new JMenuBar();
JMenu fileMenu = new JMenu("File");
fileMenu.setMnemonic(KeyEvent.VK_F);
JMenuItem fileNewMenuItem = new JMenuItem("Nuova Partita", KeyEvent.VK_N);
fileNewMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
newGame();
}
});
fileMenu.add(fileNewMenuItem);
JMenuItem fileOptionMenuItem = new JMenuItem("Opzioni", KeyEvent.VK_O);
JMenuItem fileExitMenuItem = new JMenuItem("Esci", KeyEvent.VK_E);
fileExitMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
JOptionPane.showMessageDialog(null, "Arrivederci!",
"S-Quiz", JOptionPane.INFORMATION_MESSAGE);
System.exit(0);
}
});
fileMenu.add(fileExitMenuItem);
JMenu settingsMenu = new JMenu("Impostazioni");
settingsMenu.setMnemonic(KeyEvent.VK_I);
settingsNormalRBMI = new JRadioButtonMenuItem("Gioco Normale", true);
settingsNormalRBMI.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
settingsFastRBMI.setSelected(false);
settingsNormalRBMI.setSelected(true);
}
});
settingsNormalRBMI.setMnemonic(KeyEvent.VK_N);
settingsFastRBMI = new JRadioButtonMenuItem("Gioco Veloce", false);
settingsFastRBMI.setMnemonic(KeyEvent.VK_V);
settingsFastRBMI.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
settingsNormalRBMI.setSelected(false);
settingsFastRBMI.setSelected(true);
}
});
settingsMenu.add(settingsNormalRBMI);
settingsMenu.add(settingsFastRBMI);
JMenu ladderMenu = new JMenu("Classifica");
ladderMenu.setMnemonic(KeyEvent.VK_C);
JMenuItem ladderLadderMenuItem = new JMenuItem("Classifica", KeyEvent.VK_L);
ladderLadderMenuItem.addActionListener(new ActionListener() ;
public void actionPerformed(ActionEvent ae) {
try {
JOptionPane.showMessageDialog(null,
" 1 - " + topTen[0] + ": " + topTenPoints[0] + "\n" +
" 2 - " + topTen[1] + ": " + topTenPoints[1] + "\n" +
" 3 - " + topTen[2] + ": " + topTenPoints[2] + "\n" +
" 4 - " + topTen[3] + ": " + topTenPoints[3] + "\n" +
" 5 - " + topTen[4] + ": " + topTenPoints[4] + "\n" +
" 6 - " + topTen[5] + ": " + topTenPoints[5] + "\n" +
" 7 - " + topTen[6] + ": " + topTenPoints[6] + "\n" +
" 8 - " + topTen[7] + ": " + topTenPoints[7] + "\n" *
" 9 - " + topTen[8] + ": " + topTenPoints[8] + "\n" +
"10- " + topTen[9] + ": " + topTenPoints[9]
, "Classifica"
,JOptionPane.INFORMATION_MESSAGE);
} catch (HeadlessException he) {}
}
});
ladderMenu.add(ladderLadderMenuItem);
JMenu helpMenu = new JMenu("Help");
helpMenu.setMnemonic(KeyEvent.VK_H);
JMenuItem helpStatMenuItem = new JMenuItem("Statistiche", KeyEvent.VK_S);
helpStatMenuItem.addActionListener(questionsListeners);
helpMenu.add(helpStatMenuItem);
JMenuItem helpAboutMenuItem = new JMenuItem("About", KeyEvent.VK_A);
helpAboutMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
try {
JOptionPane.showMessageDialog(null,
"S-Quiz",
"About",
JOptionPane.INFORMATION_MESSAGE);
} catch (HeadlessException he) {}
}
});
helpMenu.add(helpAboutMenuItem);
menuBar.add(fileMenu);
menuBar.add(settingsMenu);
menuBar.add(ladderMenu);
menuBar.add(helpMenu);
setJMenuBar(menuBar);
initLadder();
}
/**
*The main class that Start the Game
*/
public static void main(String args[]) {
SQuiz squiz = new SQuiz();
squiz.setVisible(true);
}
/*Methods*/
public void newGame() {
player = new Player("Unidentified-Error");
try {
String tempName;
tempName = JOptionPane.showInputDialog("Inserisci il tuo nome:");
player.setName(tempName);
} catch (HeadlessException he) {
} finally {
questions = new Questions(player);
GameStart();
}
}
public void GameStart() {
questions.MakeQandA(questions);
MakeGUI((int) questions.getCasualNumber());
}
public void MakeGUI(final int num) {
destroyGUI();
if (num != -1) {
Num = num;
setLayout(new BorderLayout());
question = new JLabel(questions.questions[player.getCurrentQ()-1][num]);
qPanel = new JPanel();
qPanel.setBorder(
BorderFactory.createTitledBorder(player.getName() +
" - Punteggio + " + player.getPoints() +
" - Domanda " + player.getCurrentQ()));
qPanel.add(question);
ans1 = new JRadioButton(questions.answer[player.getCurrentQ()-1][num * 4]);
ans2 = new JRadioButton(questions.answer[player.getCurrentQ()-1][num * 4 + 1]);
ans3 = new JRadioButton(questions.answer[player.getCurrentQ()-1][num * 4 + 2]);
ans4 = new JRadioButton(questions.answer[player.getCurrentQ()-1][num * 4 + 3]);
ans1.addItemListener(this);
ans2.addItemListener(this);
ans3.addItemListener(this);
ans4.addItemListener(this);
aPanel = new JPanel();
aPanel.setBorder(BorderFactory.createTitledBorder("Risposte:"));
aPanel.add(ans1);
aPanel.add(ans2);
aPanel.add(ans3);
aPanel.add(ans4);
answers = new ButtonGroup();
answers.add(ans1); answers.add(ans2); answers.add(ans3); answers.add(ans4);
Answer = new JButton("Rispondi!");
Answer.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent ae) {
if (settingsNormalRBMI.isSelected())
isExactly(num);
}
});
APanel = new JPanel();
APanel.setBorder(BorderFactory.createTitledBorder("Rispondi!"));
APanel.add(Answer);
add(qPanel, BorderLayout.NORTH);
add(aPanel, BorderLayout.CENTER);
add(APanel, BorderLayout.SOUTH);
qPanel.repaint();
aPanel.repaint();
APanel.repaint();
repaint();
setVisible(true);
start = System.currentTimeMillis();
}
}
private void isExactly(int num) {
end = System.currentTimeMillis();
if (questions.exactly[player.getCurrentQ()-1][num].equals
(ans1.getText()) && ans1.isSelected())
Continue();
else if (questions.exactly[player.getCurrentQ()-1][num].equals
(ans2.getText()) && ans2.isSelected())
Continue();
else if (questions.exactly[player.getCurrentQ()-1][num].equals
(ans3.getText()) && ans3.isSelected())
Continue();
else if (questions.exactly[player.getCurrentQ()-1][num].equals
(ans4.getText()) && ans4.isSelected())
Continue();
else if (!ans1.isSelected() && !ans2.isSelected() && !ans3.isSelected() &&
!ans4.isSelected()) {
try {
JOptionPane.showMessageDialog(null, "Devi selezionare una risposta!",
"Attenzione!", JOptionPane.WARNING_MESSAGE);
} catch (HeadlessException he) {}
}
else Break();
}