Advertisement
Guest User

Untitled

a guest
Mar 22nd, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.72 KB | None | 0 0
  1. package rutayisire;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.EventQueue;
  5.  
  6. import javax.swing.JFrame;
  7. import javax.swing.JPanel;
  8. import javax.swing.border.EmptyBorder;
  9. import javax.swing.JTextField;
  10. import javax.swing.JLabel;
  11. import javax.swing.JOptionPane;
  12. import javax.swing.JButton;
  13. import java.awt.event.ActionListener;
  14. import java.util.Random;
  15. import java.awt.event.ActionEvent;
  16.  
  17. public class MyFrame extends JFrame {
  18.  
  19. private JPanel contentPane;
  20.  
  21. private JTextField guessWord;
  22. private JTextField money;
  23. private JLabel genericMsg;
  24. private JButton play;
  25.  
  26. private Random random = new Random();
  27.  
  28. // Tentativi
  29. private static int NUMERO_TENTATIVI = 3;
  30. private int tentativi = NUMERO_TENTATIVI;
  31.  
  32. // Puntata
  33. private double puntata = -1; // impostata al primo tentativo
  34.  
  35. private String[] parole = {
  36. "mostro", "parola", "random", "moneta", "yogurt", "quadro", "strada", "retina", "occhio",
  37. "goccia",
  38. };
  39. private String parola;
  40.  
  41. public static void main(String[] args) {
  42. EventQueue.invokeLater(new Runnable() {
  43. public void run() {
  44. try {
  45. MyFrame frame = new MyFrame();
  46. frame.setTitle("Gioca con prudenza!");
  47. frame.setVisible(true);
  48. } catch (Exception e) {
  49. e.printStackTrace();
  50. }
  51. }
  52. });
  53. }
  54.  
  55. private void initGame() {
  56. parola = parole[random.nextInt(parole.length)];
  57. if (parola.length() > 6) {
  58. throw new IllegalStateException("Pescata una parola con piu' di 6 caratteri: " + parola);
  59. }
  60. printGame();
  61. }
  62.  
  63. private void printGame() {
  64. System.out.println("Tentativi: " + tentativi);
  65. System.out.println("Parola: " + parola);
  66. }
  67.  
  68. // Blocca tutti gli input e finisce il gioco
  69. private void finito() {
  70. guessWord.setEnabled(false);
  71. money.setEnabled(false);
  72. play.setEnabled(false);
  73. System.out.println("Gioco concluso.");
  74. }
  75.  
  76. private boolean controllaPerdita() {
  77. if (tentativi == 0) {
  78. finito();
  79. JOptionPane.showMessageDialog(MyFrame.this, "Hai perso, meglio se ti prendi una pausa.");
  80. return true;
  81. }
  82. return false;
  83. }
  84.  
  85. public MyFrame() {
  86. initGame();
  87.  
  88. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  89. setBounds(100, 100, 296, 244);
  90. contentPane = new JPanel();
  91. contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  92. setContentPane(contentPane);
  93. contentPane.setLayout(null);
  94.  
  95. guessWord = new JTextField();
  96. guessWord.setBounds(10, 36, 260, 20);
  97. contentPane.add(guessWord);
  98. guessWord.setColumns(10);
  99.  
  100. money = new JTextField();
  101. money.setBounds(10, 92, 100, 20);
  102. contentPane.add(money);
  103. money.setColumns(10);
  104.  
  105. genericMsg = new JLabel("Messaggio di gioco");
  106. genericMsg.setBounds(10, 123, 260, 14);
  107. genericMsg.setText("Gioca con prudenza! Hai " + tentativi + " tentativi!");
  108. contentPane.add(genericMsg);
  109.  
  110. JLabel moneyMsg = new JLabel("Puntata in soldi:");
  111. moneyMsg.setBounds(10, 67, 150, 14);
  112. contentPane.add(moneyMsg);
  113.  
  114. JLabel guessWordMsg = new JLabel("Parola da indovinare:");
  115. guessWordMsg.setBounds(10, 11, 260, 14);
  116. contentPane.add(guessWordMsg);
  117.  
  118. // Match Character
  119. final int mcPadding = 15;
  120. final int mcWidth = 15;
  121. final int mcHeight = 15;
  122. final String mcDefValue = "_";
  123.  
  124. JLabel[] mc = new JLabel[6];
  125. for (int i = 0; i < 6; i++) {
  126. mc[i] = new JLabel(mcDefValue);
  127. mc[i].setBounds(i * mcWidth + mcPadding * (i + 1), 148, mcWidth, mcHeight);
  128. contentPane.add(mc[i]);
  129. }
  130.  
  131. play = new JButton("Gioca!");
  132. play.addActionListener(new ActionListener() {
  133. public void actionPerformed(ActionEvent event) {
  134. // Se la puntata non è ancora stata impostata...
  135. if (puntata < 0) {
  136. try {
  137. puntata = Double.parseDouble(money.getText());
  138. } catch (NumberFormatException e) {
  139. JOptionPane.showMessageDialog(MyFrame.this, "La puntata deve essere numerica");
  140. return;
  141. }
  142. if (puntata < 0) {
  143. JOptionPane.showMessageDialog(MyFrame.this, "La puntata deve essere positiva");
  144. return;
  145. }
  146. // Blocca la puntata
  147. money.setEnabled(false);
  148. }
  149.  
  150. // Se la parola inserita è più lunga del prestabilito allora l'utente viene penalizzato.
  151. String parolaInserita = guessWord.getText();
  152. if (parolaInserita.length() > 6) {
  153. tentativi--;
  154. if (!controllaPerdita()) {
  155. JOptionPane.showMessageDialog(MyFrame.this, "NON CI FREGHI!");
  156. genericMsg.setText("Hai provato a fregarci? Hai " + tentativi + " tentativi ora.");
  157. }
  158. return;
  159. }
  160.  
  161. System.out.println("Parola inserita: " + parolaInserita);
  162. System.out.println("Puntata inserita: " + puntata + "€");
  163.  
  164. // Controllo parola
  165. int min = Math.min(parolaInserita.length(), parola.length());
  166. int charEquiv = 0;
  167. for (int i = 0; i < min; i++) {
  168. if (parolaInserita.charAt(i) == parola.charAt(i)) {
  169. charEquiv++;
  170. mc[i].setText(parolaInserita.charAt(i) + "");
  171. } else {
  172. mc[i].setText(mcDefValue);
  173. }
  174. }
  175. System.out.println("Caratteri equivalenti trovati: " + charEquiv);
  176.  
  177. tentativi--;
  178.  
  179. // Se i caratteri equivalenti sono tutti e quindi ha indovinato...
  180. if (charEquiv == parola.length()) {
  181. finito();
  182. double ammontare = puntata * 10.0;
  183. JOptionPane.showMessageDialog(MyFrame.this, "Hai appena vinto " + ammontare + "€!");
  184. return;
  185. }
  186. // Se ha indovinato solo qualche carattere...
  187. else if (charEquiv > 0) {
  188. genericMsg.setText("Continua cosi'! Ti sono rimasti " + tentativi + " tentativi.");
  189. }
  190. // Se non ha azzeccato neanche un carattere...
  191. else {
  192. genericMsg.setText("Fatti coraggio! Hai ancora " + tentativi + " tentativi.");
  193. }
  194. controllaPerdita();
  195. }
  196. });
  197. play.setBounds(10, 173, 260, 23);
  198. contentPane.add(play);
  199. }
  200. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement