ancient-projects

My earliest programs (2006-2010)
git clone https://git.tronto.net/ancient-projects
Download | Log | Files | Refs | README

Frame.java (12180B)


      1 /*
      2 Copyright 2008, 2009 Sebastiano Tronto <sebastiano@luganega.org>
      3 
      4 This file is part of Robottino.
      5 
      6     Robottino is free software; you can redistribute it and/or modify
      7     it under the terms of the GNU General Public License as published by
      8     the Free Software Foundation; either version 2 of the License, or
      9     (at your option) any later version.
     10 
     11     Robottino is distributed in the hope that it will be useful,
     12     but WITHOUT ANY WARRANTY; without even the implied warranty of
     13     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     14     GNU General Public License for more details.
     15 
     16     You should have received a copy of the GNU General Public License
     17     along with Robottino; if not, write to the Free Software
     18     Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
     19 
     20 */
     21 
     22 import javax.swing.*;
     23 import java.awt.*;
     24 import java.awt.event.*;
     25 
     26 public class Frame extends JFrame implements ActionListener {
     27 	public static int i;
     28 	public static Main main;
     29 	public static RobotPanel robotPanel;
     30 	public static JLabel label;
     31 	public static Timer timer;
     32 	public static JMenuBar barraMenu;
     33 	public static JMenu file, modifica, azioni, info, raMenu, laMenu, rlMenu, llMenu;
     34 	public static JMenuItem raonMenuItem, raoffMenuItem, rachangeMenuItem, laonMenuItem, laoffMenuItem, lachangeMenuItem;
     35 	public static JMenuItem rlonMenuItem, rloffMenuItem, rlchangeMenuItem, llonMenuItem, lloffMenuItem, llchangeMenuItem;
     36 	public static JMenuItem rinomina, birra, balla, esplodi, informazioni, esci;
     37 	public Frame() {
     38 		super( "Robottino versione 4.2" );
     39 		i = 0;
     40 		main = new Main();
     41 		robotPanel = new RobotPanel();
     42 		label = new JLabel( "Robot: " + main.robot.getName() );
     43 		label.setFont( new Font( "Monospace", 0, 30 ) );
     44 		barraMenu = new JMenuBar();
     45 		rinomina = new JMenuItem( "Cambia nome" );
     46 		birra = new JMenuItem( "Birra" );
     47 		balla = new JMenuItem( "Balla" );
     48 		esplodi = new JMenuItem( "Esplodi" );
     49 		informazioni = new JMenuItem( "Informazioni" );
     50 		esci = new JMenuItem( "Esci" );
     51 		raonMenuItem = new JMenuItem( "Alza" );
     52 		laonMenuItem = new JMenuItem( "Alza" );
     53 		rlonMenuItem = new JMenuItem( "Alza" );
     54 		llonMenuItem = new JMenuItem( "Alza" );
     55 		raoffMenuItem = new JMenuItem( "Abbassa" );
     56 		laoffMenuItem = new JMenuItem( "Abbassa" );
     57 		rloffMenuItem = new JMenuItem( "Abbassa" );
     58 		lloffMenuItem = new JMenuItem( "Abbassa" );
     59 		rachangeMenuItem = new JMenuItem( "Cambia posizione" );
     60 		lachangeMenuItem = new JMenuItem( "Cambia posizione" );
     61 		rlchangeMenuItem = new JMenuItem( "Cambia posizione" );
     62 		llchangeMenuItem = new JMenuItem( "Cambia posizione" );
     63 		esci.addActionListener( this );
     64 		rinomina.addActionListener( this );
     65 		birra.addActionListener( this );
     66 		balla.addActionListener( this );
     67 		esplodi.addActionListener( this );
     68 		informazioni.addActionListener( this );
     69 		raonMenuItem.addActionListener( this );
     70 		raoffMenuItem.addActionListener( this );
     71 		rachangeMenuItem.addActionListener( this );
     72 		laonMenuItem.addActionListener( this );
     73 		laoffMenuItem.addActionListener( this );
     74 		lachangeMenuItem.addActionListener( this );
     75 		rlonMenuItem.addActionListener( this );
     76 		rloffMenuItem.addActionListener( this );
     77 		rlchangeMenuItem.addActionListener( this );
     78 		llonMenuItem.addActionListener( this );
     79 		lloffMenuItem.addActionListener( this );
     80 		llchangeMenuItem.addActionListener( this );
     81 		raMenu = new JMenu( "Braccio destro" );
     82 		raMenu.add( raonMenuItem );
     83 		raMenu.add( raoffMenuItem );
     84 		raMenu.add( rachangeMenuItem );
     85 		laMenu = new JMenu( "Braccio sinistro" );
     86 		laMenu.add( laonMenuItem );
     87 		laMenu.add( laoffMenuItem );
     88 		laMenu.add( lachangeMenuItem );
     89 		rlMenu = new JMenu( "Gamba destra" );
     90 		rlMenu.add( rlonMenuItem );
     91 		rlMenu.add( rloffMenuItem );
     92 		rlMenu.add( rlchangeMenuItem );
     93 		llMenu = new JMenu( "Gamba sinistra" );
     94 		llMenu.add( llonMenuItem );
     95 		llMenu.add( lloffMenuItem );
     96 		llMenu.add( llchangeMenuItem );
     97 		modifica = new JMenu( "Modifica" );
     98 		modifica.add( raMenu );
     99 		modifica.add( laMenu );
    100 		modifica.add( rlMenu );
    101 		modifica.add( llMenu );
    102 		file = new JMenu( "File" );
    103 		file.add( rinomina );
    104 		file.add( esci );
    105 		azioni = new JMenu( "Azioni" );
    106 		azioni.add( birra );
    107 		azioni.add( balla );
    108 		azioni.add( esplodi );
    109 		info = new JMenu( "?" );
    110 		info.add( informazioni );
    111 		barraMenu.add( file );
    112 		barraMenu.add( modifica );
    113 		barraMenu.add( azioni );
    114 		barraMenu.add( info );
    115 		setJMenuBar( barraMenu );
    116 		add( robotPanel, BorderLayout.CENTER );
    117 		add( label, BorderLayout.SOUTH );
    118 		addWindowListener(
    119 			new WindowAdapter() {
    120 				public void windowClosing( WindowEvent e ) {
    121 					int selezione = JOptionPane.showOptionDialog( Frame.this, "Vuoi davvero uscire?", "Robottino v4.2", JOptionPane.YES_NO_OPTION,  JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" );
    122 					if ( selezione == JOptionPane.YES_OPTION )
    123 						System.exit( 0 );
    124 				}
    125 			}
    126 		);
    127 	}
    128 	public void actionPerformed( ActionEvent e ) {
    129 		if ( e.getSource() == esci ) {
    130 			int selezione = JOptionPane.showOptionDialog( this, "Vuoi davvero uscire?", "Robottino v4.2", JOptionPane.YES_NO_OPTION,  JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" );
    131 			if ( selezione == JOptionPane.YES_OPTION )
    132 				System.exit( 0 );
    133 		}
    134 		else if ( e.getSource() == rinomina ) {
    135 			String newName = main.robot.getName();
    136 			newName = JOptionPane.showInputDialog( this, "Inserire il nuovo nome per il robottino:", newName );
    137 			if ( newName != null ) {
    138 				main.robot.setName( newName );
    139 				label .setText( "Robot: " + main.robot.getName() );
    140 			}
    141 		}
    142 		else if ( e.getSource() == raonMenuItem )
    143 			main.robot.setRA( true );
    144 		else if ( e.getSource() == raoffMenuItem )
    145 			main.robot.setRA( false );
    146 		else if ( e.getSource() == rachangeMenuItem )
    147 			main.robot.setRA( !main.robot.rightArm );
    148 		else if ( e.getSource() == laonMenuItem )
    149 			main.robot.setLA( true );
    150 		else if ( e.getSource() == laoffMenuItem )
    151 			main.robot.setLA( false );
    152 		else if ( e.getSource() == lachangeMenuItem )
    153 			main.robot.setLA( !main.robot.leftArm );
    154 		else if ( e.getSource() == rlonMenuItem )
    155 			main.robot.setRL( true );
    156 		else if ( e.getSource() == rloffMenuItem )
    157 			main.robot.setRL( false );
    158 		else if ( e.getSource() == rlchangeMenuItem )
    159 			main.robot.setRL( !main.robot.rightLeg );
    160 		else if ( e.getSource() == llonMenuItem )
    161 			main.robot.setLL( true );
    162 		else if ( e.getSource() == lloffMenuItem )
    163 			main.robot.setLL( false );
    164 		else if ( e.getSource() == llchangeMenuItem )
    165 			main.robot.setLL( !main.robot.leftLeg );
    166 		else if ( e.getSource() == birra ) {
    167 			ImageIcon birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra5.gif" ) );
    168 			JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra );
    169 			birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra1.jpg" ) );
    170 			JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra );
    171 			birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra2.jpg" ) );
    172 			JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra );
    173 			birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra3.jpg" ) );
    174 			JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra );
    175 			birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra4.jpg" ) );
    176 			JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra );
    177 			JOptionPane.showMessageDialog( this, "Che bevuta!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE );
    178 			JOptionPane.showMessageDialog( this, "Buuuuuuurp!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE );
    179 			robotPanel.body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) );
    180 		}
    181 		if ( e.getSource() == esplodi ) {
    182 			String aux = main.robot.getName();
    183 			main.robot.setPositions( false, false, false, false );
    184 			main.robot.setName( "no-name" );
    185 			label.setText( "Robot: " + main.robot.getName() );
    186 			ImageIcon boom = new ImageIcon( ClassLoader.getSystemResource( "img/boom.png" ) );
    187 			JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, boom );
    188 			JOptionPane.showMessageDialog( this, aux + " si è autodistrutto!", "Robottino v4.2", JOptionPane.WARNING_MESSAGE );
    189 			JOptionPane.showMessageDialog( this, "È stato creato un nuovo robottino: " + main.robot.getName(), "Robottino v4.2", JOptionPane.INFORMATION_MESSAGE );
    190 		}
    191 		if ( e.getSource() == informazioni ) {
    192 			String aux = main.robot.getName() + ":\n\n";
    193 			if ( main.robot.rightArm )
    194 				aux += "Braccio destro: alzato\n";
    195 			else
    196 				aux += "Braccio destro: abbassato\n";
    197 			if ( main.robot.leftArm )
    198 				aux += "Braccio sinistro: alzato\n";
    199 			else
    200 				aux += "Braccio sinistro: abbassato\n";
    201 			if ( main.robot.rightLeg )
    202 				aux += "Gamba destra: alzata\n";
    203 			else
    204 				aux += "Gamba destra: abbassata\n";
    205 			if ( main.robot.leftLeg )
    206 				aux += "Gamba sinistra: alzata\n";
    207 			else
    208 				aux += "Gamba sinistra: abbassata\n";
    209 			JOptionPane.showMessageDialog( this, aux, "Robottino - v4.2", JOptionPane.INFORMATION_MESSAGE );
    210 		}
    211 		else if ( e.getSource() == balla ) {
    212 			this.i = 0;
    213 			main.robot.setPositions( false, false, false, false );
    214 			timer = new Timer( 250, 
    215 				new ActionListener() {
    216 					public void actionPerformed( ActionEvent e ) {
    217 						Frame.this.i++;
    218 						switch( Frame.this.i ) {
    219 							case 1:
    220 								Frame.main.robot.setRA( true );
    221 								break;
    222 							case 2:
    223 								break;
    224 							case 3:
    225 								Frame.main.robot.setLA( true );
    226 								break;
    227 							case 4:
    228 								break;
    229 							case 5:
    230 								Frame.main.robot.setPositions( false, false, false, true );
    231 								break;
    232 							case 6:
    233 								Frame.main.robot.setPositions( true, true, false, false );
    234 								break;
    235 							case 7:
    236 								Frame.main.robot.setPositions( false, false, true, false );
    237 								break;
    238 							case 8:
    239 								Frame.main.robot.setPositions( true, true, false, false );
    240 								break;
    241 							case 9:
    242 								Frame.main.robot.setPositions( true, false, false, true );
    243 								break;
    244 							case 10:
    245 								Frame.main.robot.setPositions( false, false, false, false );
    246 								break;
    247 							case 11:
    248 								Frame.main.robot.setPositions( true, false, false, true );
    249 								break;
    250 							case 12:
    251 								Frame.main.robot.setPositions( false, true, true, false );
    252 								break;
    253 							case 13:
    254 								Frame.main.robot.setPositions( false, false, false, false );
    255 								break;
    256 							case 14:
    257 								Frame.main.robot.setPositions( false, true, true, false );
    258 								break;
    259 							case 15:
    260 								Frame.main.robot.setPositions( false, false, false, false );
    261 								break;
    262 							case 16:
    263 								break;
    264 							case 17:
    265 								Frame.main.robot.setPositions( false, false, true, false );
    266 								break;
    267 							case 18:
    268 								Frame.main.robot.setPositions( false, false, false, true );
    269 								break;
    270 							case 19:
    271 								Frame.main.robot.setPositions( false, false, true, false );
    272 								break;
    273 							case 20:
    274 								Frame.main.robot.setPositions( false, false, false, true );
    275 								break;
    276 							case 21:
    277 								Frame.main.robot.setPositions( false, false, true, false );
    278 								break;
    279 							case 22:
    280 								Frame.main.robot.setPositions( false, false, false, true );
    281 								break;
    282 							case 23:
    283 								Frame.main.robot.setPositions( true, true, true, true );
    284 								break;
    285 							case 24:
    286 								break;
    287 							case 25:
    288 								break;
    289 							case 26:
    290 								Frame.main.robot.setPositions( false, false, false, false );
    291 								break;
    292 							case 27:
    293 								JOptionPane.showMessageDialog( Frame.this, "Cha fatica!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE );
    294 								JOptionPane.showMessageDialog( Frame.this, Frame.main.robot.getName() + " è tornato alla posizione di partenza", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE );
    295 								break;
    296 							default:
    297 								timer.stop();
    298 								break;
    299 						}
    300 						Frame.this.robotPanel.setImages();
    301 						Frame.this.robotPanel.repaint();
    302 						Frame.this.repaint();
    303 					}
    304 				}
    305 			);
    306 			timer.start();
    307 		}
    308 		try {
    309 			this.robotPanel.setImages();
    310 			this.robotPanel.repaint();
    311 			this.repaint();
    312 		} catch ( NullPointerException n ) { }
    313 	}
    314 }