Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package rutayisire;
- import java.awt.BorderLayout;
- import java.awt.EventQueue;
- import javax.swing.JFrame;
- import javax.swing.JPanel;
- import javax.swing.border.EmptyBorder;
- import javax.swing.JTextField;
- import javax.swing.JLabel;
- import javax.swing.JOptionPane;
- import javax.swing.JButton;
- import java.awt.event.ActionListener;
- import java.util.Random;
- import java.awt.event.ActionEvent;
- public class MyFrame extends JFrame {
- private JPanel contentPane;
- private JTextField guessWord;
- private JTextField money;
- private JLabel genericMsg;
- private JButton play;
- private Random random = new Random();
- // Tentativi
- private static int NUMERO_TENTATIVI = 3;
- private int tentativi = NUMERO_TENTATIVI;
- // Puntata
- private double puntata = -1; // impostata al primo tentativo
- private String[] parole = {
- "mostro", "parola", "random", "moneta", "yogurt", "quadro", "strada", "retina", "occhio",
- "goccia",
- };
- private String parola;
- public static void main(String[] args) {
- EventQueue.invokeLater(new Runnable() {
- public void run() {
- try {
- MyFrame frame = new MyFrame();
- frame.setTitle("Gioca con prudenza!");
- frame.setVisible(true);
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- });
- }
- private void initGame() {
- parola = parole[random.nextInt(parole.length)];
- if (parola.length() > 6) {
- throw new IllegalStateException("Pescata una parola con piu' di 6 caratteri: " + parola);
- }
- printGame();
- }
- private void printGame() {
- System.out.println("Tentativi: " + tentativi);
- System.out.println("Parola: " + parola);
- }
- // Blocca tutti gli input e finisce il gioco
- private void finito() {
- guessWord.setEnabled(false);
- money.setEnabled(false);
- play.setEnabled(false);
- System.out.println("Gioco concluso.");
- }
- private boolean controllaPerdita() {
- if (tentativi == 0) {
- finito();
- JOptionPane.showMessageDialog(MyFrame.this, "Hai perso, meglio se ti prendi una pausa.");
- return true;
- }
- return false;
- }
- public MyFrame() {
- initGame();
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- setBounds(100, 100, 296, 244);
- contentPane = new JPanel();
- contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
- setContentPane(contentPane);
- contentPane.setLayout(null);
- guessWord = new JTextField();
- guessWord.setBounds(10, 36, 260, 20);
- contentPane.add(guessWord);
- guessWord.setColumns(10);
- money = new JTextField();
- money.setBounds(10, 92, 100, 20);
- contentPane.add(money);
- money.setColumns(10);
- genericMsg = new JLabel("Messaggio di gioco");
- genericMsg.setBounds(10, 123, 260, 14);
- genericMsg.setText("Gioca con prudenza! Hai " + tentativi + " tentativi!");
- contentPane.add(genericMsg);
- JLabel moneyMsg = new JLabel("Puntata in soldi:");
- moneyMsg.setBounds(10, 67, 150, 14);
- contentPane.add(moneyMsg);
- JLabel guessWordMsg = new JLabel("Parola da indovinare:");
- guessWordMsg.setBounds(10, 11, 260, 14);
- contentPane.add(guessWordMsg);
- // Match Character
- final int mcPadding = 15;
- final int mcWidth = 15;
- final int mcHeight = 15;
- final String mcDefValue = "_";
- JLabel[] mc = new JLabel[6];
- for (int i = 0; i < 6; i++) {
- mc[i] = new JLabel(mcDefValue);
- mc[i].setBounds(i * mcWidth + mcPadding * (i + 1), 148, mcWidth, mcHeight);
- contentPane.add(mc[i]);
- }
- play = new JButton("Gioca!");
- play.addActionListener(new ActionListener() {
- public void actionPerformed(ActionEvent event) {
- // Se la puntata non è ancora stata impostata...
- if (puntata < 0) {
- try {
- puntata = Double.parseDouble(money.getText());
- } catch (NumberFormatException e) {
- JOptionPane.showMessageDialog(MyFrame.this, "La puntata deve essere numerica");
- return;
- }
- if (puntata < 0) {
- JOptionPane.showMessageDialog(MyFrame.this, "La puntata deve essere positiva");
- return;
- }
- // Blocca la puntata
- money.setEnabled(false);
- }
- // Se la parola inserita è più lunga del prestabilito allora l'utente viene penalizzato.
- String parolaInserita = guessWord.getText();
- if (parolaInserita.length() > 6) {
- tentativi--;
- if (!controllaPerdita()) {
- JOptionPane.showMessageDialog(MyFrame.this, "NON CI FREGHI!");
- genericMsg.setText("Hai provato a fregarci? Hai " + tentativi + " tentativi ora.");
- }
- return;
- }
- System.out.println("Parola inserita: " + parolaInserita);
- System.out.println("Puntata inserita: " + puntata + "€");
- // Controllo parola
- int min = Math.min(parolaInserita.length(), parola.length());
- int charEquiv = 0;
- for (int i = 0; i < min; i++) {
- if (parolaInserita.charAt(i) == parola.charAt(i)) {
- charEquiv++;
- mc[i].setText(parolaInserita.charAt(i) + "");
- } else {
- mc[i].setText(mcDefValue);
- }
- }
- System.out.println("Caratteri equivalenti trovati: " + charEquiv);
- tentativi--;
- // Se i caratteri equivalenti sono tutti e quindi ha indovinato...
- if (charEquiv == parola.length()) {
- finito();
- double ammontare = puntata * 10.0;
- JOptionPane.showMessageDialog(MyFrame.this, "Hai appena vinto " + ammontare + "€!");
- return;
- }
- // Se ha indovinato solo qualche carattere...
- else if (charEquiv > 0) {
- genericMsg.setText("Continua cosi'! Ti sono rimasti " + tentativi + " tentativi.");
- }
- // Se non ha azzeccato neanche un carattere...
- else {
- genericMsg.setText("Fatti coraggio! Hai ancora " + tentativi + " tentativi.");
- }
- controllaPerdita();
- }
- });
- play.setBounds(10, 173, 260, 23);
- contentPane.add(play);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement