ancient-projects

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

RobotFrame.java (13651B)


      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.event.*;
     24 import java.awt.*;
     25 
     26 public class RobotFrame extends JFrame implements ActionListener {
     27 	public static int numeroCopie, i;
     28 	public static Main main;
     29 	public static RobotPanel robotPanel;
     30 	public static Timer timer;
     31 	public static JMenuBar barraMenu;
     32 	public static JMenu file, modifica, azioni, info, raMenu, laMenu, rlMenu, llMenu;
     33 	public static JMenuItem raonMenuItem, raoffMenuItem, rachangeMenuItem, laonMenuItem, laoffMenuItem, lachangeMenuItem;
     34 	public static JMenuItem rlonMenuItem, rloffMenuItem, rlchangeMenuItem, llonMenuItem, lloffMenuItem, llchangeMenuItem;
     35 	public static JMenuItem rinomina, elimina, duplica, birra, balla, esplodi, informazioni;
     36 	RobotFrame( String titolo ) {
     37 		super ( titolo );
     38 		numeroCopie = 0;
     39 		robotPanel = new RobotPanel( titolo );
     40 		rinomina = new JMenuItem( "Cambia nome" );
     41 		elimina = new JMenuItem( "Elimina" );
     42 		duplica = new JMenuItem( "Duplica robot" );
     43 		birra = new JMenuItem( "Birra" );
     44 		balla = new JMenuItem( "Balla" );
     45 		esplodi = new JMenuItem( "Esplodi" );
     46 		informazioni = new JMenuItem( "Informazioni" );
     47 		raonMenuItem = new JMenuItem( "Alza" );
     48 		laonMenuItem = new JMenuItem( "Alza" );
     49 		rlonMenuItem = new JMenuItem( "Alza" );
     50 		llonMenuItem = new JMenuItem( "Alza" );
     51 		raoffMenuItem = new JMenuItem( "Abbassa" );
     52 		laoffMenuItem = new JMenuItem( "Abbassa" );
     53 		rloffMenuItem = new JMenuItem( "Abbassa" );
     54 		lloffMenuItem = new JMenuItem( "Abbassa" );
     55 		rachangeMenuItem = new JMenuItem( "Cambia posizione" );
     56 		lachangeMenuItem = new JMenuItem( "Cambia posizione" );
     57 		rlchangeMenuItem = new JMenuItem( "Cambia posizione" );
     58 		llchangeMenuItem = new JMenuItem( "Cambia posizione" );
     59 		rinomina.addActionListener( this );
     60 		elimina.addActionListener( this );
     61 		duplica.addActionListener( this );
     62 		birra.addActionListener( this );
     63 		balla.addActionListener( this );
     64 		esplodi.addActionListener( this );
     65 		informazioni.addActionListener( this );
     66 		raonMenuItem.addActionListener( this );
     67 		raoffMenuItem.addActionListener( this );
     68 		rachangeMenuItem.addActionListener( this );
     69 		laonMenuItem.addActionListener( this );
     70 		laoffMenuItem.addActionListener( this );
     71 		lachangeMenuItem.addActionListener( this );
     72 		rlonMenuItem.addActionListener( this );
     73 		rloffMenuItem.addActionListener( this );
     74 		rlchangeMenuItem.addActionListener( this );
     75 		llonMenuItem.addActionListener( this );
     76 		lloffMenuItem.addActionListener( this );
     77 		llchangeMenuItem.addActionListener( this );
     78 		raMenu = new JMenu( "Braccio destro" );
     79 		raMenu.add( raonMenuItem );
     80 		raMenu.add( raoffMenuItem );
     81 		raMenu.add( rachangeMenuItem );
     82 		laMenu = new JMenu( "Braccio sinistro" );
     83 		laMenu.add( laonMenuItem );
     84 		laMenu.add( laoffMenuItem );
     85 		laMenu.add( lachangeMenuItem );
     86 		rlMenu = new JMenu( "Gamba destra" );
     87 		rlMenu.add( rlonMenuItem );
     88 		rlMenu.add( rloffMenuItem );
     89 		rlMenu.add( rlchangeMenuItem );
     90 		llMenu = new JMenu( "Gamba sinistra" );
     91 		llMenu.add( llonMenuItem );
     92 		llMenu.add( lloffMenuItem );
     93 		llMenu.add( llchangeMenuItem );
     94 		modifica = new JMenu( "Modifica" );
     95 		modifica.add( raMenu );
     96 		modifica.add( laMenu );
     97 		modifica.add( rlMenu );
     98 		modifica.add( llMenu );
     99 		file = new JMenu( "File" );
    100 		file.add( rinomina );
    101 		file.add( duplica );
    102 		file.add( elimina );
    103 		azioni = new JMenu( "Azioni" );
    104 		azioni.add( birra );
    105 		azioni.add( balla );
    106 		azioni.add( esplodi );
    107 		info = new JMenu( "?" );
    108 		info.add( informazioni );
    109 		barraMenu = new JMenuBar();
    110 		barraMenu.add( file );
    111 		barraMenu.add( azioni );
    112 		barraMenu.add( modifica );
    113 		barraMenu.add( info );
    114 		setJMenuBar( barraMenu );
    115 		add( robotPanel );
    116 	}
    117 	public void actionPerformed( ActionEvent e ) {
    118 		esegui( e );
    119 	}
    120 	public void esegui( ActionEvent e ) {
    121 		if ( e.getSource() == raonMenuItem )
    122 			main.list.getRobot( this.getTitle() ).rightArm = true;
    123 		else if ( e.getSource() == raoffMenuItem )
    124 			main.list.getRobot( this.getTitle() ).rightArm = false;
    125 		else if ( e.getSource() == rachangeMenuItem )
    126 			main.list.getRobot( this.getTitle() ).rightArm = !main.list.getRobot( this.getTitle() ).rightArm;
    127 		else if ( e.getSource() == laonMenuItem )
    128 			main.list.getRobot( this.getTitle() ).leftArm = true;
    129 		else if ( e.getSource() == laoffMenuItem )
    130 			main.list.getRobot( this.getTitle() ).leftArm = false;
    131 		else if ( e.getSource() == lachangeMenuItem )
    132 			main.list.getRobot( this.getTitle() ).leftArm = !main.list.getRobot( this.getTitle() ).leftArm;
    133 		else if ( e.getSource() == rlonMenuItem )
    134 			main.list.getRobot( this.getTitle() ).rightLeg = true;
    135 		else if ( e.getSource() == rloffMenuItem )
    136 			main.list.getRobot( this.getTitle() ).rightLeg = false;
    137 		else if ( e.getSource() == rlchangeMenuItem )
    138 			main.list.getRobot( this.getTitle() ).rightLeg = !main.list.getRobot( this.getTitle() ).rightLeg;
    139 		else if ( e.getSource() == llonMenuItem )
    140 			main.list.getRobot( this.getTitle() ).leftLeg = true;
    141 		else if ( e.getSource() == lloffMenuItem )
    142 			main.list.getRobot( this.getTitle() ).leftLeg = false;
    143 		else if ( e.getSource() == llchangeMenuItem )
    144 			main.list.getRobot( this.getTitle() ).leftLeg = !main.list.getRobot( this.getTitle() ).leftLeg;
    145 		else if ( e.getSource() == rinomina ) {
    146 			String newName = JOptionPane.showInputDialog( this, "Inserire il nuovo nome per questo robot:", this.getTitle() );
    147 			if ( newName != null ) {
    148 				main.list.getRobot( this.getTitle() ).setName( newName );
    149 				this.setTitle( newName );
    150 				robotPanel.nomeRobot = newName;
    151 			}
    152 		}
    153 		else if ( e.getSource() == elimina ) {
    154 			int selezione = JOptionPane.showOptionDialog( this, "Eliminare il robottino " + this.getTitle() + " ?", "Robottino v4.1 - Cancellazione robottino", JOptionPane.YES_NO_OPTION,  JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" );
    155 				if ( selezione == JOptionPane.YES_OPTION ) {
    156 					main.list.deleteRobot( this.getTitle() );
    157 					this.dispose();
    158 				}
    159 		}
    160 		else if ( e.getSource() == duplica ) {
    161 			String newName = JOptionPane.showInputDialog( this, "Inserire il nome per il nuovo robot:", this.getTitle() + " #" + (++numeroCopie) );
    162 			if ( newName != null ) {
    163 				main.list.newRobot( main.list.getRobot( this.getTitle() ).leftArm, main.list.getRobot( this.getTitle() ).rightArm, main.list.getRobot( this.getTitle() ).leftLeg, main.list.getRobot( this.getTitle() ).rightLeg, newName );
    164 			}
    165 		}
    166 		else if ( e.getSource() == birra ) {
    167 			ImageIcon birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra5.gif" ) );
    168 			JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra );
    169 			birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra1.jpg" ) );
    170 			JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra );
    171 			birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra2.jpg" ) );
    172 			JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra );
    173 			birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra3.jpg" ) );
    174 			JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra );
    175 			birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra4.jpg" ) );
    176 			JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra );
    177 			JOptionPane.showMessageDialog( this, "Che bevuta!", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE );
    178 			JOptionPane.showMessageDialog( this, "Buuuuuuurp!", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE );
    179 			robotPanel.body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) );
    180 		}
    181 		else if ( e.getSource() == balla ) {
    182 			this.i = 0;
    183 			main.list.getRobot( this.getTitle() ).setPositions( false, false, false, false );
    184 			timer = new Timer( 250, 
    185 				new ActionListener() {
    186 					public void actionPerformed( ActionEvent e ) {
    187 						RobotFrame.this.i++;
    188 						switch( RobotFrame.this.i ) {
    189 							case 1:
    190 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setRA( true );
    191 								break;
    192 							case 2:
    193 								break;
    194 							case 3:
    195 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setLA( true );
    196 								break;
    197 							case 4:
    198 								break;
    199 							case 5:
    200 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, true );
    201 								break;
    202 							case 6:
    203 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, true, false, false );
    204 								break;
    205 							case 7:
    206 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, true, false );
    207 								break;
    208 							case 8:
    209 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, true, false, false );
    210 								break;
    211 							case 9:
    212 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, false, false, true );
    213 								break;
    214 							case 10:
    215 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, false );
    216 								break;
    217 							case 11:
    218 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, false, false, true );
    219 								break;
    220 							case 12:
    221 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, true, true, false );
    222 								break;
    223 							case 13:
    224 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, false );
    225 								break;
    226 							case 14:
    227 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, true, true, false );
    228 								break;
    229 							case 15:
    230 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, false );
    231 								break;
    232 							case 16:
    233 								break;
    234 							case 17:
    235 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, true, false );
    236 								break;
    237 							case 18:
    238 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, true );
    239 								break;
    240 							case 19:
    241 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, true, false );
    242 								break;
    243 							case 20:
    244 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, true );
    245 								break;
    246 							case 21:
    247 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, true, false );
    248 								break;
    249 							case 22:
    250 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, true );
    251 								break;
    252 							case 23:
    253 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, true, true, true );
    254 								break;
    255 							case 24:
    256 								break;
    257 							case 25:
    258 								break;
    259 							case 26:
    260 								RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, false );
    261 								break;
    262 							case 27:
    263 								JOptionPane.showMessageDialog( RobotFrame.this, "Cha fatica!", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE );
    264 								JOptionPane.showMessageDialog( RobotFrame.this, RobotFrame.this.getTitle() + " è tornato alla posizione di partenza", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE );
    265 								break;
    266 							default:
    267 								timer.stop();
    268 								break;
    269 						}
    270 						RobotFrame.robotPanel.setImages();
    271 						RobotFrame.robotPanel.repaint();
    272 						RobotFrame.this.repaint();
    273 					}
    274 				}
    275 			);
    276 			timer.start();
    277 		}
    278 		if ( e.getSource() == esplodi ) {
    279 			String aux = this.getTitle();
    280 			main.list.deleteRobot( this.getTitle() );
    281 			this.dispose();
    282 			ImageIcon boom = new ImageIcon( ClassLoader.getSystemResource( "img/boom.png" ) );
    283 			JOptionPane.showMessageDialog( null, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, boom );
    284 			JOptionPane.showMessageDialog( null, aux + " si è autodistrutto!", "Robottino v4.1", JOptionPane.WARNING_MESSAGE );
    285 		}
    286 		if ( e.getSource() == informazioni ) {
    287 			String aux = this.getTitle() + ":\n\n";
    288 			if ( main.list.getRobot( RobotFrame.this.getTitle() ).rightArm )
    289 				aux += "Braccio destro: alzato\n";
    290 			else
    291 				aux += "Braccio destro: abbassato\n";
    292 			if ( main.list.getRobot( RobotFrame.this.getTitle() ).leftArm )
    293 				aux += "Braccio sinistro: alzato\n";
    294 			else
    295 				aux += "Braccio sinistro: abbassato\n";
    296 			if ( main.list.getRobot( RobotFrame.this.getTitle() ).rightLeg )
    297 				aux += "Gamba destra: alzata\n";
    298 			else
    299 				aux += "Gamba destra: abbassata\n";
    300 			if ( main.list.getRobot( RobotFrame.this.getTitle() ).leftLeg )
    301 				aux += "Gamba sinistra: alzata\n";
    302 			else
    303 				aux += "Gamba sinistra: abbassata\n";
    304 			JOptionPane.showMessageDialog( this, aux, "Robottino - v4.1", JOptionPane.INFORMATION_MESSAGE );
    305 		}
    306 		try {
    307 			robotPanel.setImages();
    308 			robotPanel.repaint();
    309 			repaint();
    310 		} catch ( NullPointerException n ) { }
    311 	}
    312 }