From 7167b4341ef290d56fb96e2af10883a4b925d83b Mon Sep 17 00:00:00 2001 From: Sebastiano Tronto Date: Thu, 26 Mar 2026 19:27:18 +0100 Subject: I found my old code! --- robottino/Robottino.jar | Bin 0 -> 207946 bytes robottino/all_versions/Changelog.txt | 20 ++ robottino/all_versions/v1.0/Esegui.bat | 2 + robottino/all_versions/v1.0/Esegui.sh | 2 + robottino/all_versions/v1.0/Readme.txt | 10 + .../all_versions/v1.0/bin/PartiDelRobot.class | Bin 0 -> 379 bytes robottino/all_versions/v1.0/bin/Robottino.class | Bin 0 -> 6493 bytes robottino/all_versions/v1.0/src/PartiDelRobot.java | 9 + robottino/all_versions/v1.0/src/Robottino.java | 160 +++++++++ robottino/all_versions/v2.0/Esegui.bat | 2 + robottino/all_versions/v2.0/Esegui.sh | 2 + robottino/all_versions/v2.0/Readme.txt | 10 + .../all_versions/v2.0/bin/PartiDelRobot.class | Bin 0 -> 379 bytes robottino/all_versions/v2.0/bin/Robottino.class | Bin 0 -> 9673 bytes robottino/all_versions/v2.0/src/PartiDelRobot.java | 9 + robottino/all_versions/v2.0/src/Robottino.java | 270 ++++++++++++++ robottino/all_versions/v2.1/Esegui.bat | 2 + robottino/all_versions/v2.1/Esegui.sh | 2 + robottino/all_versions/v2.1/Readme.txt | 10 + .../all_versions/v2.1/bin/PartiDelRobot.class | Bin 0 -> 379 bytes robottino/all_versions/v2.1/bin/Robottino.class | Bin 0 -> 10163 bytes robottino/all_versions/v2.1/src/PartiDelRobot.java | 9 + robottino/all_versions/v2.1/src/Robottino.java | 258 +++++++++++++ robottino/all_versions/v2.2/Esegui.bat | 3 + robottino/all_versions/v2.2/Esegui.sh | 3 + robottino/all_versions/v2.2/Readme.txt | 10 + .../v2.2/bin/RobottinoAzioni/RobottinoAzioni.class | Bin 0 -> 8973 bytes .../v2.2/bin/RobottinoMain/Robottino.class | Bin 0 -> 2677 bytes .../v2.2/bin/RobottinoUtils/Grafica.class | Bin 0 -> 914 bytes .../v2.2/bin/RobottinoUtils/Listener.class | Bin 0 -> 1610 bytes .../v2.2/bin/RobottinoUtils/PartiDelRobot.class | Bin 0 -> 394 bytes .../v2.2/src/RobottinoAzioni/RobottinoAzioni.java | 369 +++++++++++++++++++ .../v2.2/src/RobottinoMain/Robottino.java | 115 ++++++ .../v2.2/src/RobottinoUtils/Grafica.java | 60 ++++ .../v2.2/src/RobottinoUtils/Listener.java | 62 ++++ .../v2.2/src/RobottinoUtils/PartiDelRobot.java | 22 ++ robottino/all_versions/v2.3/Esegui.bat | 3 + robottino/all_versions/v2.3/Esegui.sh | 3 + robottino/all_versions/v2.3/Readme.txt | 10 + .../v2.3/bin/RobottinoAzioni/RobottinoAzioni.class | Bin 0 -> 9270 bytes .../v2.3/bin/RobottinoMain/Robottino.class | Bin 0 -> 1957 bytes .../v2.3/bin/RobottinoUtils/Grafica.class | Bin 0 -> 4503 bytes .../v2.3/bin/RobottinoUtils/Listener.class | Bin 0 -> 2134 bytes .../v2.3/bin/RobottinoUtils/PartiDelRobot.class | Bin 0 -> 394 bytes .../v2.3/src/RobottinoAzioni/RobottinoAzioni.java | 397 +++++++++++++++++++++ .../v2.3/src/RobottinoMain/Robottino.java | 83 +++++ .../v2.3/src/RobottinoUtils/Grafica.java | 210 +++++++++++ .../v2.3/src/RobottinoUtils/Listener.java | 72 ++++ .../v2.3/src/RobottinoUtils/PartiDelRobot.java | 22 ++ robottino/all_versions/v3.0/Esegui.bat | 3 + robottino/all_versions/v3.0/Esegui.sh | 3 + robottino/all_versions/v3.0/Readme.txt | 10 + .../v3.0/bin/Immagini/ImmagineRobot.class | Bin 0 -> 1143 bytes .../all_versions/v3.0/bin/Immagini/img/laoff.gif | Bin 0 -> 4148 bytes .../all_versions/v3.0/bin/Immagini/img/lloff.gif | Bin 0 -> 4552 bytes .../all_versions/v3.0/bin/Immagini/img/raoff.gif | Bin 0 -> 5137 bytes .../all_versions/v3.0/bin/Immagini/img/rloff.gif | Bin 0 -> 4802 bytes .../all_versions/v3.0/bin/Immagini/img/robot.gif | Bin 0 -> 15158 bytes .../v3.0/bin/RobottinoAzioni/RobottinoAzioni.class | Bin 0 -> 9270 bytes .../v3.0/bin/RobottinoMain/Robottino.class | Bin 0 -> 1020 bytes .../v3.0/bin/RobottinoUtils/Grafica.class | Bin 0 -> 5043 bytes .../v3.0/bin/RobottinoUtils/Listener.class | Bin 0 -> 2193 bytes .../v3.0/bin/RobottinoUtils/PartiDelRobot.class | Bin 0 -> 394 bytes .../v3.0/src/Immagini/ImmagineRobot.java | 35 ++ .../all_versions/v3.0/src/Immagini/img/laoff.gif | Bin 0 -> 4148 bytes .../all_versions/v3.0/src/Immagini/img/lloff.gif | Bin 0 -> 4552 bytes .../all_versions/v3.0/src/Immagini/img/raoff.gif | Bin 0 -> 5137 bytes .../all_versions/v3.0/src/Immagini/img/rloff.gif | Bin 0 -> 4802 bytes .../all_versions/v3.0/src/Immagini/img/robot.gif | Bin 0 -> 15158 bytes .../v3.0/src/RobottinoAzioni/RobottinoAzioni.java | 397 +++++++++++++++++++++ .../v3.0/src/RobottinoMain/Robottino.java | 63 ++++ .../v3.0/src/RobottinoUtils/Grafica.java | 226 ++++++++++++ .../v3.0/src/RobottinoUtils/Listener.java | 73 ++++ .../v3.0/src/RobottinoUtils/PartiDelRobot.java | 22 ++ robottino/all_versions/v4.0.1/Robottino.jar | Bin 0 -> 155568 bytes robottino/all_versions/v4.0.1/src/Frame.java | 66 ++++ robottino/all_versions/v4.0.1/src/List.java | 74 ++++ robottino/all_versions/v4.0.1/src/Main.java | 36 ++ robottino/all_versions/v4.0.1/src/Robot.java | 107 ++++++ robottino/all_versions/v4.0.1/src/RobotFrame.java | 118 ++++++ robottino/all_versions/v4.0.1/src/RobotPanel.java | 96 +++++ robottino/all_versions/v4.0.1/src/img/birra1.jpg | Bin 0 -> 15478 bytes robottino/all_versions/v4.0.1/src/img/birra2.jpg | Bin 0 -> 18106 bytes robottino/all_versions/v4.0.1/src/img/birra3.jpg | Bin 0 -> 14673 bytes robottino/all_versions/v4.0.1/src/img/birra4.jpg | Bin 0 -> 36627 bytes robottino/all_versions/v4.0.1/src/img/birra5.gif | Bin 0 -> 13960 bytes robottino/all_versions/v4.0.1/src/img/laoff.gif | Bin 0 -> 4148 bytes robottino/all_versions/v4.0.1/src/img/laon.gif | Bin 0 -> 4151 bytes robottino/all_versions/v4.0.1/src/img/lloff.gif | Bin 0 -> 4552 bytes robottino/all_versions/v4.0.1/src/img/llon.gif | Bin 0 -> 2557 bytes robottino/all_versions/v4.0.1/src/img/raoff.gif | Bin 0 -> 5137 bytes robottino/all_versions/v4.0.1/src/img/raon.gif | Bin 0 -> 5121 bytes robottino/all_versions/v4.0.1/src/img/rloff.gif | Bin 0 -> 4802 bytes robottino/all_versions/v4.0.1/src/img/rlon.gif | Bin 0 -> 2705 bytes robottino/all_versions/v4.0.1/src/img/robot.gif | Bin 0 -> 15158 bytes robottino/all_versions/v4.0/Robottino.jar | Bin 0 -> 58495 bytes robottino/all_versions/v4.0/src/Frame.java | 66 ++++ robottino/all_versions/v4.0/src/List.java | 74 ++++ robottino/all_versions/v4.0/src/Main.java | 36 ++ robottino/all_versions/v4.0/src/Robot.java | 126 +++++++ robottino/all_versions/v4.0/src/RobotFrame.java | 179 ++++++++++ robottino/all_versions/v4.0/src/img/laoff.gif | Bin 0 -> 4148 bytes robottino/all_versions/v4.0/src/img/laon.gif | Bin 0 -> 4151 bytes robottino/all_versions/v4.0/src/img/lloff.gif | Bin 0 -> 4552 bytes robottino/all_versions/v4.0/src/img/llon.gif | Bin 0 -> 2557 bytes robottino/all_versions/v4.0/src/img/raoff.gif | Bin 0 -> 5137 bytes robottino/all_versions/v4.0/src/img/raon.gif | Bin 0 -> 5121 bytes robottino/all_versions/v4.0/src/img/rloff.gif | Bin 0 -> 4802 bytes robottino/all_versions/v4.0/src/img/rlon.gif | Bin 0 -> 2705 bytes robottino/all_versions/v4.0/src/img/robot.gif | Bin 0 -> 15158 bytes robottino/all_versions/v4.1/Robottino.jar | Bin 0 -> 211887 bytes robottino/all_versions/v4.1/license.txt | 340 ++++++++++++++++++ robottino/all_versions/v4.1/src/Frame.java | 66 ++++ robottino/all_versions/v4.1/src/List.java | 74 ++++ robottino/all_versions/v4.1/src/Main.java | 36 ++ robottino/all_versions/v4.1/src/Robot.java | 101 ++++++ robottino/all_versions/v4.1/src/RobotFrame.java | 312 ++++++++++++++++ robottino/all_versions/v4.1/src/RobotPanel.java | 96 +++++ robottino/all_versions/v4.1/src/img/birra1.jpg | Bin 0 -> 15478 bytes robottino/all_versions/v4.1/src/img/birra2.jpg | Bin 0 -> 18106 bytes robottino/all_versions/v4.1/src/img/birra3.jpg | Bin 0 -> 14673 bytes robottino/all_versions/v4.1/src/img/birra4.jpg | Bin 0 -> 36627 bytes robottino/all_versions/v4.1/src/img/birra5.gif | Bin 0 -> 13960 bytes robottino/all_versions/v4.1/src/img/boom.png | Bin 0 -> 53636 bytes robottino/all_versions/v4.1/src/img/laoff.gif | Bin 0 -> 4148 bytes robottino/all_versions/v4.1/src/img/laon.gif | Bin 0 -> 4151 bytes robottino/all_versions/v4.1/src/img/lloff.gif | Bin 0 -> 4552 bytes robottino/all_versions/v4.1/src/img/llon.gif | Bin 0 -> 2557 bytes robottino/all_versions/v4.1/src/img/raoff.gif | Bin 0 -> 5137 bytes robottino/all_versions/v4.1/src/img/raon.gif | Bin 0 -> 5121 bytes robottino/all_versions/v4.1/src/img/rloff.gif | Bin 0 -> 4802 bytes robottino/all_versions/v4.1/src/img/rlon.gif | Bin 0 -> 2705 bytes robottino/all_versions/v4.1/src/img/robot.gif | Bin 0 -> 15158 bytes robottino/all_versions/v4.2/Robottino.jar | Bin 0 -> 207946 bytes robottino/all_versions/v4.2/license.txt | 340 ++++++++++++++++++ robottino/all_versions/v4.2/src/Frame.java | 314 ++++++++++++++++ robottino/all_versions/v4.2/src/Main.java | 34 ++ robottino/all_versions/v4.2/src/Robot.java | 72 ++++ robottino/all_versions/v4.2/src/RobotPanel.java | 94 +++++ robottino/all_versions/v4.2/src/img/birra1.jpg | Bin 0 -> 15478 bytes robottino/all_versions/v4.2/src/img/birra2.jpg | Bin 0 -> 18106 bytes robottino/all_versions/v4.2/src/img/birra3.jpg | Bin 0 -> 14673 bytes robottino/all_versions/v4.2/src/img/birra4.jpg | Bin 0 -> 36627 bytes robottino/all_versions/v4.2/src/img/birra5.gif | Bin 0 -> 13960 bytes robottino/all_versions/v4.2/src/img/boom.png | Bin 0 -> 53636 bytes robottino/all_versions/v4.2/src/img/laoff.gif | Bin 0 -> 4148 bytes robottino/all_versions/v4.2/src/img/laon.gif | Bin 0 -> 4151 bytes robottino/all_versions/v4.2/src/img/lloff.gif | Bin 0 -> 4552 bytes robottino/all_versions/v4.2/src/img/llon.gif | Bin 0 -> 2557 bytes robottino/all_versions/v4.2/src/img/raoff.gif | Bin 0 -> 5137 bytes robottino/all_versions/v4.2/src/img/raon.gif | Bin 0 -> 5121 bytes robottino/all_versions/v4.2/src/img/rloff.gif | Bin 0 -> 4802 bytes robottino/all_versions/v4.2/src/img/rlon.gif | Bin 0 -> 2705 bytes robottino/all_versions/v4.2/src/img/robot.gif | Bin 0 -> 15158 bytes 154 files changed, 5910 insertions(+) create mode 100755 robottino/Robottino.jar create mode 100755 robottino/all_versions/Changelog.txt create mode 100755 robottino/all_versions/v1.0/Esegui.bat create mode 100755 robottino/all_versions/v1.0/Esegui.sh create mode 100755 robottino/all_versions/v1.0/Readme.txt create mode 100755 robottino/all_versions/v1.0/bin/PartiDelRobot.class create mode 100755 robottino/all_versions/v1.0/bin/Robottino.class create mode 100755 robottino/all_versions/v1.0/src/PartiDelRobot.java create mode 100755 robottino/all_versions/v1.0/src/Robottino.java create mode 100755 robottino/all_versions/v2.0/Esegui.bat create mode 100755 robottino/all_versions/v2.0/Esegui.sh create mode 100755 robottino/all_versions/v2.0/Readme.txt create mode 100755 robottino/all_versions/v2.0/bin/PartiDelRobot.class create mode 100755 robottino/all_versions/v2.0/bin/Robottino.class create mode 100755 robottino/all_versions/v2.0/src/PartiDelRobot.java create mode 100755 robottino/all_versions/v2.0/src/Robottino.java create mode 100755 robottino/all_versions/v2.1/Esegui.bat create mode 100755 robottino/all_versions/v2.1/Esegui.sh create mode 100755 robottino/all_versions/v2.1/Readme.txt create mode 100755 robottino/all_versions/v2.1/bin/PartiDelRobot.class create mode 100755 robottino/all_versions/v2.1/bin/Robottino.class create mode 100755 robottino/all_versions/v2.1/src/PartiDelRobot.java create mode 100755 robottino/all_versions/v2.1/src/Robottino.java create mode 100755 robottino/all_versions/v2.2/Esegui.bat create mode 100755 robottino/all_versions/v2.2/Esegui.sh create mode 100755 robottino/all_versions/v2.2/Readme.txt create mode 100755 robottino/all_versions/v2.2/bin/RobottinoAzioni/RobottinoAzioni.class create mode 100755 robottino/all_versions/v2.2/bin/RobottinoMain/Robottino.class create mode 100755 robottino/all_versions/v2.2/bin/RobottinoUtils/Grafica.class create mode 100755 robottino/all_versions/v2.2/bin/RobottinoUtils/Listener.class create mode 100755 robottino/all_versions/v2.2/bin/RobottinoUtils/PartiDelRobot.class create mode 100755 robottino/all_versions/v2.2/src/RobottinoAzioni/RobottinoAzioni.java create mode 100755 robottino/all_versions/v2.2/src/RobottinoMain/Robottino.java create mode 100755 robottino/all_versions/v2.2/src/RobottinoUtils/Grafica.java create mode 100755 robottino/all_versions/v2.2/src/RobottinoUtils/Listener.java create mode 100755 robottino/all_versions/v2.2/src/RobottinoUtils/PartiDelRobot.java create mode 100755 robottino/all_versions/v2.3/Esegui.bat create mode 100755 robottino/all_versions/v2.3/Esegui.sh create mode 100755 robottino/all_versions/v2.3/Readme.txt create mode 100755 robottino/all_versions/v2.3/bin/RobottinoAzioni/RobottinoAzioni.class create mode 100755 robottino/all_versions/v2.3/bin/RobottinoMain/Robottino.class create mode 100755 robottino/all_versions/v2.3/bin/RobottinoUtils/Grafica.class create mode 100755 robottino/all_versions/v2.3/bin/RobottinoUtils/Listener.class create mode 100755 robottino/all_versions/v2.3/bin/RobottinoUtils/PartiDelRobot.class create mode 100755 robottino/all_versions/v2.3/src/RobottinoAzioni/RobottinoAzioni.java create mode 100755 robottino/all_versions/v2.3/src/RobottinoMain/Robottino.java create mode 100755 robottino/all_versions/v2.3/src/RobottinoUtils/Grafica.java create mode 100755 robottino/all_versions/v2.3/src/RobottinoUtils/Listener.java create mode 100755 robottino/all_versions/v2.3/src/RobottinoUtils/PartiDelRobot.java create mode 100755 robottino/all_versions/v3.0/Esegui.bat create mode 100755 robottino/all_versions/v3.0/Esegui.sh create mode 100755 robottino/all_versions/v3.0/Readme.txt create mode 100755 robottino/all_versions/v3.0/bin/Immagini/ImmagineRobot.class create mode 100755 robottino/all_versions/v3.0/bin/Immagini/img/laoff.gif create mode 100755 robottino/all_versions/v3.0/bin/Immagini/img/lloff.gif create mode 100755 robottino/all_versions/v3.0/bin/Immagini/img/raoff.gif create mode 100755 robottino/all_versions/v3.0/bin/Immagini/img/rloff.gif create mode 100755 robottino/all_versions/v3.0/bin/Immagini/img/robot.gif create mode 100755 robottino/all_versions/v3.0/bin/RobottinoAzioni/RobottinoAzioni.class create mode 100755 robottino/all_versions/v3.0/bin/RobottinoMain/Robottino.class create mode 100755 robottino/all_versions/v3.0/bin/RobottinoUtils/Grafica.class create mode 100755 robottino/all_versions/v3.0/bin/RobottinoUtils/Listener.class create mode 100755 robottino/all_versions/v3.0/bin/RobottinoUtils/PartiDelRobot.class create mode 100755 robottino/all_versions/v3.0/src/Immagini/ImmagineRobot.java create mode 100755 robottino/all_versions/v3.0/src/Immagini/img/laoff.gif create mode 100755 robottino/all_versions/v3.0/src/Immagini/img/lloff.gif create mode 100755 robottino/all_versions/v3.0/src/Immagini/img/raoff.gif create mode 100755 robottino/all_versions/v3.0/src/Immagini/img/rloff.gif create mode 100755 robottino/all_versions/v3.0/src/Immagini/img/robot.gif create mode 100755 robottino/all_versions/v3.0/src/RobottinoAzioni/RobottinoAzioni.java create mode 100755 robottino/all_versions/v3.0/src/RobottinoMain/Robottino.java create mode 100755 robottino/all_versions/v3.0/src/RobottinoUtils/Grafica.java create mode 100755 robottino/all_versions/v3.0/src/RobottinoUtils/Listener.java create mode 100755 robottino/all_versions/v3.0/src/RobottinoUtils/PartiDelRobot.java create mode 100755 robottino/all_versions/v4.0.1/Robottino.jar create mode 100755 robottino/all_versions/v4.0.1/src/Frame.java create mode 100755 robottino/all_versions/v4.0.1/src/List.java create mode 100755 robottino/all_versions/v4.0.1/src/Main.java create mode 100755 robottino/all_versions/v4.0.1/src/Robot.java create mode 100755 robottino/all_versions/v4.0.1/src/RobotFrame.java create mode 100755 robottino/all_versions/v4.0.1/src/RobotPanel.java create mode 100755 robottino/all_versions/v4.0.1/src/img/birra1.jpg create mode 100755 robottino/all_versions/v4.0.1/src/img/birra2.jpg create mode 100755 robottino/all_versions/v4.0.1/src/img/birra3.jpg create mode 100755 robottino/all_versions/v4.0.1/src/img/birra4.jpg create mode 100755 robottino/all_versions/v4.0.1/src/img/birra5.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/laoff.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/laon.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/lloff.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/llon.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/raoff.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/raon.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/rloff.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/rlon.gif create mode 100755 robottino/all_versions/v4.0.1/src/img/robot.gif create mode 100755 robottino/all_versions/v4.0/Robottino.jar create mode 100755 robottino/all_versions/v4.0/src/Frame.java create mode 100755 robottino/all_versions/v4.0/src/List.java create mode 100755 robottino/all_versions/v4.0/src/Main.java create mode 100755 robottino/all_versions/v4.0/src/Robot.java create mode 100755 robottino/all_versions/v4.0/src/RobotFrame.java create mode 100755 robottino/all_versions/v4.0/src/img/laoff.gif create mode 100755 robottino/all_versions/v4.0/src/img/laon.gif create mode 100755 robottino/all_versions/v4.0/src/img/lloff.gif create mode 100755 robottino/all_versions/v4.0/src/img/llon.gif create mode 100755 robottino/all_versions/v4.0/src/img/raoff.gif create mode 100755 robottino/all_versions/v4.0/src/img/raon.gif create mode 100755 robottino/all_versions/v4.0/src/img/rloff.gif create mode 100755 robottino/all_versions/v4.0/src/img/rlon.gif create mode 100755 robottino/all_versions/v4.0/src/img/robot.gif create mode 100755 robottino/all_versions/v4.1/Robottino.jar create mode 100755 robottino/all_versions/v4.1/license.txt create mode 100755 robottino/all_versions/v4.1/src/Frame.java create mode 100755 robottino/all_versions/v4.1/src/List.java create mode 100755 robottino/all_versions/v4.1/src/Main.java create mode 100755 robottino/all_versions/v4.1/src/Robot.java create mode 100755 robottino/all_versions/v4.1/src/RobotFrame.java create mode 100755 robottino/all_versions/v4.1/src/RobotPanel.java create mode 100755 robottino/all_versions/v4.1/src/img/birra1.jpg create mode 100755 robottino/all_versions/v4.1/src/img/birra2.jpg create mode 100755 robottino/all_versions/v4.1/src/img/birra3.jpg create mode 100755 robottino/all_versions/v4.1/src/img/birra4.jpg create mode 100755 robottino/all_versions/v4.1/src/img/birra5.gif create mode 100755 robottino/all_versions/v4.1/src/img/boom.png create mode 100755 robottino/all_versions/v4.1/src/img/laoff.gif create mode 100755 robottino/all_versions/v4.1/src/img/laon.gif create mode 100755 robottino/all_versions/v4.1/src/img/lloff.gif create mode 100755 robottino/all_versions/v4.1/src/img/llon.gif create mode 100755 robottino/all_versions/v4.1/src/img/raoff.gif create mode 100755 robottino/all_versions/v4.1/src/img/raon.gif create mode 100755 robottino/all_versions/v4.1/src/img/rloff.gif create mode 100755 robottino/all_versions/v4.1/src/img/rlon.gif create mode 100755 robottino/all_versions/v4.1/src/img/robot.gif create mode 100755 robottino/all_versions/v4.2/Robottino.jar create mode 100755 robottino/all_versions/v4.2/license.txt create mode 100755 robottino/all_versions/v4.2/src/Frame.java create mode 100755 robottino/all_versions/v4.2/src/Main.java create mode 100755 robottino/all_versions/v4.2/src/Robot.java create mode 100755 robottino/all_versions/v4.2/src/RobotPanel.java create mode 100755 robottino/all_versions/v4.2/src/img/birra1.jpg create mode 100755 robottino/all_versions/v4.2/src/img/birra2.jpg create mode 100755 robottino/all_versions/v4.2/src/img/birra3.jpg create mode 100755 robottino/all_versions/v4.2/src/img/birra4.jpg create mode 100755 robottino/all_versions/v4.2/src/img/birra5.gif create mode 100755 robottino/all_versions/v4.2/src/img/boom.png create mode 100755 robottino/all_versions/v4.2/src/img/laoff.gif create mode 100755 robottino/all_versions/v4.2/src/img/laon.gif create mode 100755 robottino/all_versions/v4.2/src/img/lloff.gif create mode 100755 robottino/all_versions/v4.2/src/img/llon.gif create mode 100755 robottino/all_versions/v4.2/src/img/raoff.gif create mode 100755 robottino/all_versions/v4.2/src/img/raon.gif create mode 100755 robottino/all_versions/v4.2/src/img/rloff.gif create mode 100755 robottino/all_versions/v4.2/src/img/rlon.gif create mode 100755 robottino/all_versions/v4.2/src/img/robot.gif (limited to 'robottino') diff --git a/robottino/Robottino.jar b/robottino/Robottino.jar new file mode 100755 index 0000000..a3dc9e7 Binary files /dev/null and b/robottino/Robottino.jar differ diff --git a/robottino/all_versions/Changelog.txt b/robottino/all_versions/Changelog.txt new file mode 100755 index 0000000..575e94b --- /dev/null +++ b/robottino/all_versions/Changelog.txt @@ -0,0 +1,20 @@ +v1.0: La prima versione. + +v2.0: Aggiunte funzionalità crea/rinomina/cambia robottino. + +v2.1: Sostituiti gli array con i Vector. Aggiunta funzionalità elimina robottino. + +v2.2: Agiunta la finestra. + +v2.3: Aggiunte le funzioni per dare comandi attraverso la finestra. + + Non è più possibile dare comandi a linea di comando. +v3.0: Aggiunta delle immagini. + +v4.0: Cambiata la grafica da awt a swing. + Finalmente ad ogni comando il robottino si muove e non è più presente + l'output a riga di comando. Molte delle vecchie funzioni devono essere re-implementate. + +v4.0.1: Fixato il bug di sfarfallio - immagini tagliate. + +v4.1: Re-implementate tute le vecchie funzioni. diff --git a/robottino/all_versions/v1.0/Esegui.bat b/robottino/all_versions/v1.0/Esegui.bat new file mode 100755 index 0000000..1eb0b2e --- /dev/null +++ b/robottino/all_versions/v1.0/Esegui.bat @@ -0,0 +1,2 @@ +cd ./bin +java Robottino diff --git a/robottino/all_versions/v1.0/Esegui.sh b/robottino/all_versions/v1.0/Esegui.sh new file mode 100755 index 0000000..1eb0b2e --- /dev/null +++ b/robottino/all_versions/v1.0/Esegui.sh @@ -0,0 +1,2 @@ +cd ./bin +java Robottino diff --git a/robottino/all_versions/v1.0/Readme.txt b/robottino/all_versions/v1.0/Readme.txt new file mode 100755 index 0000000..52d532c --- /dev/null +++ b/robottino/all_versions/v1.0/Readme.txt @@ -0,0 +1,10 @@ +Il programma necessita della JVM (Java Virtual Machine) per funzionare correttamente + +Se si usano sistemi Windows aprire il file Esegui.bat +Se si usano sistemi Unix dare i permessi necessari ed eseguire il file Esegui.sh +Se si usano altri sistemi aprire una shell e digitare i comandi + +cd /bin +java Robottino + +dove percorsoFile è il percorso di questo file. diff --git a/robottino/all_versions/v1.0/bin/PartiDelRobot.class b/robottino/all_versions/v1.0/bin/PartiDelRobot.class new file mode 100755 index 0000000..a7d1f7e Binary files /dev/null and b/robottino/all_versions/v1.0/bin/PartiDelRobot.class differ diff --git a/robottino/all_versions/v1.0/bin/Robottino.class b/robottino/all_versions/v1.0/bin/Robottino.class new file mode 100755 index 0000000..770ae6b Binary files /dev/null and b/robottino/all_versions/v1.0/bin/Robottino.class differ diff --git a/robottino/all_versions/v1.0/src/PartiDelRobot.java b/robottino/all_versions/v1.0/src/PartiDelRobot.java new file mode 100755 index 0000000..078f7a0 --- /dev/null +++ b/robottino/all_versions/v1.0/src/PartiDelRobot.java @@ -0,0 +1,9 @@ +class PartiDelRobot { + PartiDelRobot() { }; + PartiDelRobot(boolean b, String s) { + this.stringaParte = s; + this.statoParte = b; + } + public String stringaParte; + public boolean statoParte; +} diff --git a/robottino/all_versions/v1.0/src/Robottino.java b/robottino/all_versions/v1.0/src/Robottino.java new file mode 100755 index 0000000..e155613 --- /dev/null +++ b/robottino/all_versions/v1.0/src/Robottino.java @@ -0,0 +1,160 @@ +import java.util.Scanner; +class Robottino extends PartiDelRobot { + public static void main(String argv[]) { + Robottino robot = new Robottino(); + PartiDelRobot pdr[] = { new PartiDelRobot (false, "il braccio sinistro alzato"), + new PartiDelRobot (false, "il braccio destro alzato"), + new PartiDelRobot (false, "la gamba sinistra alzata"), + new PartiDelRobot (false, "la gamba destra alzata") }; + Scanner sc = new Scanner(System.in); + String comando; + String nomeRobot[] = { "" }; + System.out.println("**********************************************"); + System.out.println("**********************************************"); + System.out.println("*************Programma interattivo************"); + System.out.println("**********************************************"); + System.out.println("***Software realizzato da Sebastiano Tronto***"); + System.out.println("**********************************************"); + System.out.println("**********************************************"); + System.out.println("Questo programma simula un robot al quale ven-"); + System.out.println("gono assegnati ordini tramite comandi, simil-" ); + System.out.println("mente a quanto bisognava fare con i computer " ); + System.out.println("alcuni anni fa." ); + System.out.println("Dato che all'epoca i comandi che dovevano es-" ); + System.out.println("sere dati erano (e sono tutt'ora) in similin-" ); + System.out.println("glese, ho cercato di mantenerli tali." ); + System.out.println("Il programma non fa distinzioni tra lettere" ); + System.out.println("maiuscole o minuscole." ); + System.out.println("" ); + System.out.println("Digita un comando e premi invio" ); + System.out.println("l = legenda comandi" ); + do { + comando = sc.nextLine(); + System.out.println ("Siamo spiacenti, ma per motivi tecnici non sono in grado di visualizzare l'immagine del robot."); + System.out.println (robot.Azioni(comando, nomeRobot, pdr)); + } while ( !(comando.equalsIgnoreCase("exit")) ); + } + String Azioni(String comando, String nomeRobot[], PartiDelRobot pdr[]) { + Scanner sc2 = new Scanner(System.in); + int contatore = 0; + String stat[] = {"", "", "", ""}; + String Return = "Errore - si consiglia di picchiare il programmatore"; + if (comando.equalsIgnoreCase("leftarmmove")) + pdr[0].statoParte = !pdr[0].statoParte; + else if (comando.equalsIgnoreCase("rightarmmove")) + pdr[1].statoParte = !pdr[1].statoParte; + else if (comando.equalsIgnoreCase("leftlegmove")) + pdr[2].statoParte = !pdr[2].statoParte; + else if (comando.equalsIgnoreCase("rightlegmove")) + pdr[3].statoParte = !pdr[3].statoParte; + else if (comando.equalsIgnoreCase("leftarmon")) + pdr[0].statoParte = true; + else if (comando.equalsIgnoreCase("rightarmon")) + pdr[1].statoParte = true; + else if (comando.equalsIgnoreCase("leftlegon")) + pdr[2].statoParte = true; + else if (comando.equalsIgnoreCase("rightlegon")) + pdr[3].statoParte = true; + else if (comando.equalsIgnoreCase("leftarmoff")) + pdr[0].statoParte = false; + else if (comando.equalsIgnoreCase("rightarmoff")) + pdr[1].statoParte = false; + else if (comando.equalsIgnoreCase("leftlegoff")) + pdr[2].statoParte = false; + else if (comando.equalsIgnoreCase("rightlegoff")) + pdr[3].statoParte = false; + else if (comando.equalsIgnoreCase("exploud")) { + System.out.println ("Che atroce! Hai fatto esplodere il robottino " + nomeRobot[0] + "! Aspetta che te ne faccio un altro"); + System.out.println ("..."); + for (int i = 0; i < pdr.length; i++) { + pdr[i].statoParte = false; + } + nomeRobot[0] = ""; + return "Fatto, puoi continuare a giocare"; + } + else if (comando.equalsIgnoreCase("bier")) { + System.out.println ("Il robottino " + nomeRobot[0] + "sta trangugiando una birra..."); + System.out.println ("Buurrrrrrrrp!"); + return "La birra analcolica fa schifo!"; + } + else if (comando.equalsIgnoreCase("rename")) { + System.out.println ("Con questo comando quoi cambiare il nome del robottino " + nomeRobot[0]); + System.out.println ("Digita il nuovo nome e premi invio per coninuare"); + nomeRobot[0] = sc2.nextLine(); + if (!(nomeRobot[0].equalsIgnoreCase(""))) + nomeRobot[0] += " "; + return "Ora il robottino si chiama " + nomeRobot[0]; + } + else if (comando.equalsIgnoreCase("porky")) { + System.out.println ("Porky è un grande"); + System.out.println ("Per maggiori informazioni visita il sito"); + return "http://kakati.forumfree.net/"; + } + else if (comando.equalsIgnoreCase("xxx")) { + System.out.println ("Il robottino " + nomeRobot[0] + "ha incontrato una bella robottina..."); + return "*Censura*"; + } + else if (comando.equalsIgnoreCase("l")) { + System.out.println ("Legenda comandi"); + System.out.println (""); + System.out.println ("LeftArmMove: cambia la posizione corrente del braccio sinistro del robot"); + System.out.println ("RightArmMove: cambia la posizione corrente del braccio destro del robot"); + System.out.println ("LeftLegMove: cambia la posizione corrente della gamba sinistra del robot"); + System.out.println ("RightLegMove: cambia la posizione corrente della gamba destra del robot"); + System.out.println ("LeftArmOn: se il braccio sinistro non è alzato, lo alza, altrimenti la posizione resta invariata"); + System.out.println ("RightArmOn: se il braccio destro non è alzato, lo alza, altrimenti la posizione resta invariata"); + System.out.println ("LeftLegOn: se la gamba sinistra non è alzata, la alza, altrimenti la posizione resta invariata"); + System.out.println ("RightLegOn: se la gamba destra non è alzata, la alza, altrimenti la posizione resta invariata"); + System.out.println ("LeftArmOff: se il braccio sinistro non è abbassato, lo abbassa, altrimenti la posizione resta invariata"); + System.out.println ("RightArmOff: se il braccio destro non è abbassato, lo abbassa, altrimenti la posizione resta invariata"); + System.out.println ("LeftLegOff: se la gamba sinistra non è abbassata, la abbassa, altrimenti la posizione resta invariata"); + System.out.println ("RightLegOff: se la gamba destra non è abbassata, la abbassa, altrimenti la posizione resta invariata"); + System.out.println ("Exit: esci dal programma"); + System.out.println (""); + System.out.println ("Comandi a sorpresa:"); + System.out.println (""); + System.out.println ("Exploud"); + System.out.println ("Bier"); + System.out.println ("Rename"); + System.out.println ("Porky"); + System.out.println ("xxx"); + return ""; + + } + else + System.out.println ("Comando non riconosciuto - digitare l per una legenda dei comandi disponibili"); + for (int i = 0, j = 0; i < pdr.length; i++) { + if (pdr[i].statoParte) { + contatore += 1; + stat[j++] = pdr[i].stringaParte; + } + } + switch (contatore) { + case 0: + Return = "Comunque il robottino " + nomeRobot[0] + "non sta facendo niente"; + break; + case 1: + Return = "Immagini che il robottino " + nomeRobot[0] + "abbia " + stat[0] + "."; + break; + case 2: + Return = "Immagini che il robottino " + nomeRobot[0] + "abbia " + stat[0] + " e " + stat[1] + "."; + break; + case 3: + Return = "Immagini che il robottino " + nomeRobot[0] + "abbia " + stat[0] + ", " + stat[1] + " e " + stat[2] + "."; + break; + case 4: + Return = "Immagini che il robottino " + nomeRobot[0] + "abbia " + stat[0] + ", " + stat[1] + ", " + stat[2] + " e " + stat[3] + "."; + break; + } + return Return; + } +} + + + + + + + + + diff --git a/robottino/all_versions/v2.0/Esegui.bat b/robottino/all_versions/v2.0/Esegui.bat new file mode 100755 index 0000000..1eb0b2e --- /dev/null +++ b/robottino/all_versions/v2.0/Esegui.bat @@ -0,0 +1,2 @@ +cd ./bin +java Robottino diff --git a/robottino/all_versions/v2.0/Esegui.sh b/robottino/all_versions/v2.0/Esegui.sh new file mode 100755 index 0000000..1eb0b2e --- /dev/null +++ b/robottino/all_versions/v2.0/Esegui.sh @@ -0,0 +1,2 @@ +cd ./bin +java Robottino diff --git a/robottino/all_versions/v2.0/Readme.txt b/robottino/all_versions/v2.0/Readme.txt new file mode 100755 index 0000000..52d532c --- /dev/null +++ b/robottino/all_versions/v2.0/Readme.txt @@ -0,0 +1,10 @@ +Il programma necessita della JVM (Java Virtual Machine) per funzionare correttamente + +Se si usano sistemi Windows aprire il file Esegui.bat +Se si usano sistemi Unix dare i permessi necessari ed eseguire il file Esegui.sh +Se si usano altri sistemi aprire una shell e digitare i comandi + +cd /bin +java Robottino + +dove percorsoFile è il percorso di questo file. diff --git a/robottino/all_versions/v2.0/bin/PartiDelRobot.class b/robottino/all_versions/v2.0/bin/PartiDelRobot.class new file mode 100755 index 0000000..e6ffdb4 Binary files /dev/null and b/robottino/all_versions/v2.0/bin/PartiDelRobot.class differ diff --git a/robottino/all_versions/v2.0/bin/Robottino.class b/robottino/all_versions/v2.0/bin/Robottino.class new file mode 100755 index 0000000..e2228a1 Binary files /dev/null and b/robottino/all_versions/v2.0/bin/Robottino.class differ diff --git a/robottino/all_versions/v2.0/src/PartiDelRobot.java b/robottino/all_versions/v2.0/src/PartiDelRobot.java new file mode 100755 index 0000000..3399dbc --- /dev/null +++ b/robottino/all_versions/v2.0/src/PartiDelRobot.java @@ -0,0 +1,9 @@ +public class PartiDelRobot { + PartiDelRobot() { }; + PartiDelRobot(boolean b, String s) { + this.stringaParte = s; + this.statoParte = b; + } + public String stringaParte; + public boolean statoParte; +} diff --git a/robottino/all_versions/v2.0/src/Robottino.java b/robottino/all_versions/v2.0/src/Robottino.java new file mode 100755 index 0000000..f1b0c49 --- /dev/null +++ b/robottino/all_versions/v2.0/src/Robottino.java @@ -0,0 +1,270 @@ +import java.util.Scanner; +class Robottino extends PartiDelRobot { + static PartiDelRobot pdr[][] = { + { + new PartiDelRobot (false, "il braccio sinistro alzato"), + new PartiDelRobot (false, "il braccio destro alzato"), + new PartiDelRobot (false, "la gamba sinistra alzata"), + new PartiDelRobot (false, "la gamba destra alzata") + } + }; + static String nomeRobot[] = { "" }; + int robotIndex = 0; + public static void main(String argv[]) { + Scanner sc = new Scanner(System.in); + String comando; + Robottino robottino = new Robottino(); + System.out.println ("**********************************************"); + System.out.println ("**********************************************"); + System.out.println ("*************Programma interattivo************"); + System.out.println ("**********************************************"); + System.out.println ("***Software realizzato da Sebastiano Tronto***"); + System.out.println ("**********************************************"); + System.out.println ("**********************************************"); + System.out.println ("Questo programma simula un robot al quale ven-"); + System.out.println ("gono assegnati ordini tramite comandi, simil-" ); + System.out.println ("mente a quanto bisognava fare con i computer " ); + System.out.println ("alcuni anni fa." ); + System.out.println ("Dato che all'epoca i comandi che dovevano es-" ); + System.out.println ("sere dati erano (e sono tutt'ora) in similin-" ); + System.out.println ("glese, ho cercato di mantenerli tali." ); + System.out.println ("Il programma non fa distinzioni tra lettere" ); + System.out.println ("maiuscole o minuscole." ); + System.out.println ("In questa versione non sono ancora disponibi-" ); + System.out.println ("li immagini e/o effetti grafici." ); + System.out.println ("" ); + System.out.println ("Digita un comando e premi INVIO" ); + System.out.println ("l = legenda comandi" ); + System.out.println (""); + do { + comando = sc.nextLine(); + System.out.println (""); + System.out.println (robottino.Azioni(comando, nomeRobot, pdr)); + System.out.println (""); + } while ( !(comando.equalsIgnoreCase("exit")) ); + } + String Azioni(String comando, String nomeRobot[], PartiDelRobot pdr[][]) { + Scanner sc2 = new Scanner(System.in); + int contatore = 0; + String stat[] = {"", "", "", ""}; + String Return = "Errore - si consiglia di picchiare il programmatore"; + if (comando.equalsIgnoreCase("leftarmmove")) + this.pdr[this.robotIndex][0].statoParte = !this.pdr[this.robotIndex][0].statoParte; + else if (comando.equalsIgnoreCase("rightarmmove")) + this.pdr[this.robotIndex][1].statoParte = !this.pdr[this.robotIndex][1].statoParte; + else if (comando.equalsIgnoreCase("leftlegmove")) + this.pdr[this.robotIndex][2].statoParte = !this.pdr[this.robotIndex][2].statoParte; + else if (comando.equalsIgnoreCase("rightlegmove")) + this.pdr[this.robotIndex][3].statoParte = !this.pdr[this.robotIndex][3].statoParte; + else if (comando.equalsIgnoreCase("leftarmon")) + this.pdr[this.robotIndex][0].statoParte = true; + else if (comando.equalsIgnoreCase("rightarmon")) + this.pdr[this.robotIndex][1].statoParte = true; + else if (comando.equalsIgnoreCase("leftlegon")) + this.pdr[this.robotIndex][2].statoParte = true; + else if (comando.equalsIgnoreCase("rightlegon")) + this.pdr[this.robotIndex][3].statoParte = true; + else if (comando.equalsIgnoreCase("leftarmoff")) + this.pdr[this.robotIndex][0].statoParte = false; + else if (comando.equalsIgnoreCase("rightarmoff")) + this.pdr[this.robotIndex][1].statoParte = false; + else if (comando.equalsIgnoreCase("leftlegoff")) + this.pdr[this.robotIndex][2].statoParte = false; + else if (comando.equalsIgnoreCase("rightlegoff")) + this.pdr[this.robotIndex][3].statoParte = false; + else if (comando.equalsIgnoreCase("exploud")) { + System.out.println ("Che atroce! Hai fatto esplodere il robottino " + nomeRobot[this.robotIndex] + "! Aspetta che te ne faccio un altro"); + System.out.println ("..."); + for (int i = 0; i < pdr[this.robotIndex].length; i++) { + pdr[this.robotIndex][i].statoParte = false; + } + nomeRobot[this.robotIndex] = ""; + return "Fatto, puoi continuare a giocare"; + } + else if (comando.equalsIgnoreCase("bier")) { + System.out.println ("Il robottino " + nomeRobot[this.robotIndex] + "sta trangugiando una birra..."); + System.out.println ("Buurrrrrrrrp!"); + return "La birra analcolica fa schifo!"; + } + else if (comando.equalsIgnoreCase("rename")) { + System.out.println ("Con questo comando quoi cambiare il nome del robottino " + nomeRobot[this.robotIndex]); + System.out.println ("Digita il nuovo nome e premi invio per coninuare"); + nomeRobot[this.robotIndex] = sc2.nextLine(); + if (!(nomeRobot[this.robotIndex].equalsIgnoreCase(""))) + nomeRobot[this.robotIndex] += " "; + return "Ora il robottino si chiama " + nomeRobot[this.robotIndex]; + } + else if (comando.equalsIgnoreCase("porky")) { + System.out.println ("Porky è un grande"); + System.out.println ("Per maggiori informazioni visita il sito"); + return "http://kakati.forumfree.net/"; + } + else if (comando.equalsIgnoreCase("xxx")) { + System.out.println ("Il robottino " + nomeRobot[this.robotIndex] + "ha incontrato una bella robottina..."); + return "*Censura*"; + } + else if (comando.equalsIgnoreCase("dance")) { + System.out.println ("Immagini che il robottino " + nomeRobot[this.robotIndex] + " stia ballando..."); + System.out.println ("Il robottino ha smesso di ballare"); + for (int i = 0; i < pdr[this.robotIndex].length; i++) { + pdr[0][i].statoParte = false; + } + return "Il robottino " + nomeRobot[this.robotIndex] + "si è fermato ed è tornato nella posizione originale"; + } + else if (comando.equalsIgnoreCase("newrobot")) { + PartiDelRobot pdrAus[][] = new PartiDelRobot[(addRobot(this.pdr, this.pdr[this.robotIndex])).length][(addRobot(this.pdr, this.pdr[this.robotIndex]))[(addRobot(this.pdr, this.pdr[this.robotIndex])).length-1].length]; + this.pdr = new PartiDelRobot[pdrAus.length][pdrAus[pdrAus.length-1].length]; + for (int i=0; i/bin +java Robottino + +dove percorsoFile è il percorso di questo file. diff --git a/robottino/all_versions/v2.1/bin/PartiDelRobot.class b/robottino/all_versions/v2.1/bin/PartiDelRobot.class new file mode 100755 index 0000000..e6ffdb4 Binary files /dev/null and b/robottino/all_versions/v2.1/bin/PartiDelRobot.class differ diff --git a/robottino/all_versions/v2.1/bin/Robottino.class b/robottino/all_versions/v2.1/bin/Robottino.class new file mode 100755 index 0000000..b189de4 Binary files /dev/null and b/robottino/all_versions/v2.1/bin/Robottino.class differ diff --git a/robottino/all_versions/v2.1/src/PartiDelRobot.java b/robottino/all_versions/v2.1/src/PartiDelRobot.java new file mode 100755 index 0000000..3399dbc --- /dev/null +++ b/robottino/all_versions/v2.1/src/PartiDelRobot.java @@ -0,0 +1,9 @@ +public class PartiDelRobot { + PartiDelRobot() { }; + PartiDelRobot(boolean b, String s) { + this.stringaParte = s; + this.statoParte = b; + } + public String stringaParte; + public boolean statoParte; +} diff --git a/robottino/all_versions/v2.1/src/Robottino.java b/robottino/all_versions/v2.1/src/Robottino.java new file mode 100755 index 0000000..550e027 --- /dev/null +++ b/robottino/all_versions/v2.1/src/Robottino.java @@ -0,0 +1,258 @@ +import java.util.Scanner; +import java.util.Vector; +class Robottino extends PartiDelRobot { + static Robottino robottino = new Robottino(); + static Vector pdrA = new Vector(1); + static Vector pdrB = new Vector(4); + static PartiDelRobot leftArm = new PartiDelRobot(false, "il braccio sinistro alzato"); + static PartiDelRobot rightArm = new PartiDelRobot(false, "il braccio destro alzato"); + static PartiDelRobot leftLeg = new PartiDelRobot(false, "la gamba sinistra alzata"); + static PartiDelRobot rightLeg = new PartiDelRobot(false, "la gamba destra alzata"); + static Vector nomeRobot = new Vector(1); + static int robotIndex = 0; + public static void main(String argv[]) { + pdrB.addElement(leftArm); + pdrB.addElement(rightArm); + pdrB.addElement(leftLeg); + pdrB.addElement(rightLeg); + pdrA.addElement(pdrB); + nomeRobot.addElement(""); + Scanner sc = new Scanner(System.in); + String comando; + System.out.println ("**********************************************"); + System.out.println ("**********************************************"); + System.out.println ("*************Programma interattivo************"); + System.out.println ("**********************************************"); + System.out.println ("***Software realizzato da Sebastiano Tronto***"); + System.out.println ("**********************************************"); + System.out.println ("**********************************************"); + System.out.println ("Questo programma simula un robot al quale ven-"); + System.out.println ("gono assegnati ordini tramite comandi, simil-" ); + System.out.println ("mente a quanto bisognava fare con i computer " ); + System.out.println ("alcuni anni fa." ); + System.out.println ("Dato che all'epoca i comandi che dovevano es-" ); + System.out.println ("sere dati erano (e sono tutt'ora) in similin-" ); + System.out.println ("glese, ho cercato di mantenerli tali." ); + System.out.println ("Il programma non fa distinzioni tra lettere" ); + System.out.println ("maiuscole o minuscole." ); + System.out.println ("In questa versione non sono ancora disponibi-" ); + System.out.println ("li immagini e/o effetti grafici." ); + System.out.println ("" ); + System.out.println ("Digita un comando e premi INVIO" ); + System.out.println ("l = legenda comandi" ); + System.out.println (""); + do { + comando = sc.nextLine(); + System.out.println (""); + System.out.println (robottino.Azioni(comando, nomeRobot, pdrA)); + System.out.println (""); + } while ( !(comando.equalsIgnoreCase("exit")) ); + } + String Azioni(String comando, Vector nomeRobot, Vector pdrA) { + Scanner sc2 = new Scanner(System.in); + int contatore = 0; + String stat[] = {"", "", "", ""}; + String Return = "Errore - si consiglia di picchiare il programmatore"; + if (comando.equalsIgnoreCase("leftarmmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte; + else if (comando.equalsIgnoreCase("rightarmmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte; + else if (comando.equalsIgnoreCase("leftlegmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte; + else if (comando.equalsIgnoreCase("rightlegmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte; + else if (comando.equalsIgnoreCase("leftarmon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = true; + else if (comando.equalsIgnoreCase("rightarmon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = true; + else if (comando.equalsIgnoreCase("leftlegon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = true; + else if (comando.equalsIgnoreCase("rightlegon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = true; + else if (comando.equalsIgnoreCase("leftarmoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = false; + else if (comando.equalsIgnoreCase("rightarmoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = false; + else if (comando.equalsIgnoreCase("leftlegoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = false; + else if (comando.equalsIgnoreCase("rightlegoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = false; + else if (comando.equalsIgnoreCase("exploud")) { + System.out.println ("Che atroce! Hai fatto esplodere il robottino " + nomeRobot.elementAt(this.robotIndex) + "! Aspetta che te ne faccio un altro"); + System.out.println ("..."); + for (int i = 0; i < 4; i++) { + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(i)).statoParte = false; + } + this.nomeRobot.setElementAt("", this.robotIndex); + return "Fatto, puoi continuare a giocare"; + } + else if (comando.equalsIgnoreCase("bier")) { + System.out.println ("Il robottino " + nomeRobot.elementAt(this.robotIndex) + "sta trangugiando una birra..."); + System.out.println ("Buurrrrrrrrp!"); + return "La birra analcolica fa schifo!"; + } + else if (comando.equalsIgnoreCase("rename")) { + System.out.println ("Con questo comando quoi cambiare il nome del robottino " + nomeRobot.elementAt(this.robotIndex)); + System.out.println ("Digita il nuovo nome e premi invio per coninuare"); + this.nomeRobot.setElementAt(sc2.nextLine(), this.robotIndex); + if (!(((String)nomeRobot.elementAt(this.robotIndex)).equalsIgnoreCase(""))) + this.nomeRobot.setElementAt(this.nomeRobot.elementAt(this.robotIndex) + " ", this.robotIndex); + return "Ora il robottino si chiama " + nomeRobot.elementAt(this.robotIndex); + } + else if (comando.equalsIgnoreCase("porky")) { + System.out.println ("Porky è un grande"); + System.out.println ("Per maggiori informazioni visita il sito"); + return "http://kakati.forumfree.net/"; + } + else if (comando.equalsIgnoreCase("xxx")) { + System.out.println ("Il robottino " + nomeRobot.elementAt(this.robotIndex) + "ha incontrato una bella robottina..."); + return "*Censura*"; + } + else if (comando.equalsIgnoreCase("dance")) { + System.out.println ("Immagini che il robottino " + nomeRobot.elementAt(this.robotIndex) + " stia ballando..."); + System.out.println ("Il robottino ha smesso di ballare"); + for (int i = 0; i < 4; i++) { + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(i)).statoParte = false; + } + return "Il robottino " + nomeRobot.elementAt(this.robotIndex) + "si è fermato ed è tornato nella posizione originale"; + } + else if (comando.equalsIgnoreCase("newrobot")) { + this.pdrA.addElement(pdrB); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (leftArm); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (rightArm); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (leftLeg); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (rightLeg); + System.out.println ("È stato creato un nuovo robot. Vuoi dare un nome al nuovo robot?"); + System.out.println ("Inserisci il nuovo nome e premi INVIO oppure lascia vuoto e premi INVIO"); + String newName = sc2.nextLine(); + this.nomeRobot.addElement(newName); + return "È stato creato il robottino " + newName; + } + else if (comando.equalsIgnoreCase("deleterobot")) { + if (pdrA.size()>1) { + System.out.println ("Quale robottino vuoi eliminare?"); + System.out.println (""); + for (int i = 0; i1) { + System.out.println ("A quale robottino vuoi dare i comandi?"); + System.out.println (""); + for (int i = 0; i/bin +java Robottino + +dove percorsoFile è il percorso di questo file. diff --git a/robottino/all_versions/v2.2/bin/RobottinoAzioni/RobottinoAzioni.class b/robottino/all_versions/v2.2/bin/RobottinoAzioni/RobottinoAzioni.class new file mode 100755 index 0000000..16a771f Binary files /dev/null and b/robottino/all_versions/v2.2/bin/RobottinoAzioni/RobottinoAzioni.class differ diff --git a/robottino/all_versions/v2.2/bin/RobottinoMain/Robottino.class b/robottino/all_versions/v2.2/bin/RobottinoMain/Robottino.class new file mode 100755 index 0000000..d65be46 Binary files /dev/null and b/robottino/all_versions/v2.2/bin/RobottinoMain/Robottino.class differ diff --git a/robottino/all_versions/v2.2/bin/RobottinoUtils/Grafica.class b/robottino/all_versions/v2.2/bin/RobottinoUtils/Grafica.class new file mode 100755 index 0000000..b5f50a9 Binary files /dev/null and b/robottino/all_versions/v2.2/bin/RobottinoUtils/Grafica.class differ diff --git a/robottino/all_versions/v2.2/bin/RobottinoUtils/Listener.class b/robottino/all_versions/v2.2/bin/RobottinoUtils/Listener.class new file mode 100755 index 0000000..d5b67f0 Binary files /dev/null and b/robottino/all_versions/v2.2/bin/RobottinoUtils/Listener.class differ diff --git a/robottino/all_versions/v2.2/bin/RobottinoUtils/PartiDelRobot.class b/robottino/all_versions/v2.2/bin/RobottinoUtils/PartiDelRobot.class new file mode 100755 index 0000000..fcc8e9e Binary files /dev/null and b/robottino/all_versions/v2.2/bin/RobottinoUtils/PartiDelRobot.class differ diff --git a/robottino/all_versions/v2.2/src/RobottinoAzioni/RobottinoAzioni.java b/robottino/all_versions/v2.2/src/RobottinoAzioni/RobottinoAzioni.java new file mode 100755 index 0000000..96ad922 --- /dev/null +++ b/robottino/all_versions/v2.2/src/RobottinoAzioni/RobottinoAzioni.java @@ -0,0 +1,369 @@ +// Dichiaro che questa classa farà parte del package RobottinoAzioni, che verrà poi importato dalle classi Robottino e Grafica. +package RobottinoAzioni; + +// Anche qui impoerto i package necessari. +import java.util.Scanner; +import java.util.Vector; +import RobottinoUtils.*; + +public class RobottinoAzioni { + + // Creo gli oggetti statici che riempiranno il vettore pdrA: + // pdrA è un vettore multidimensionale che a sua volta contiene vettori + // (il primo si chiama pdrB, i successivi non avranno nome) che coontengono + // 4 istanze di PartiDelRobot, cioè i 4 arti del robot. + // Poi creo un vettore che conterrà i nomi dei robot. + // Creo il vettore principale... + public static Vector pdrA = new Vector(1); + + // ...e il "sottovettore" come istanze della classe Vector + public static Vector pdrB = new Vector(4); + + // Creo le quattro istanze di PartidelRobot utilizzando l'apposito costruttore + // passo a tutte una stringa e un valore boleano che determina lo stato + // (alzato/a se true, abbassato/a se false). + public static PartiDelRobot leftArm = new PartiDelRobot(false, "il braccio sinistro alzato"); + public static PartiDelRobot rightArm = new PartiDelRobot(false, "il braccio destro alzato"); + public static PartiDelRobot leftLeg = new PartiDelRobot(false, "la gamba sinistra alzata"); + public static PartiDelRobot rightLeg = new PartiDelRobot(false, "la gamba destra alzata"); + + // Il vettore nomeRobot per i nomi + // il vettore può contenere stringhe, poichè non sono tipi primitivi ma oggetti della classe String + public static Vector nomeRobot = new Vector(1); + + // La variabile robotIndex serve a tenere in memoria su quale robot si sta operando: + // in seguito verrà usata quando l'utente deciderà di creare più di un robot + // e poi di dare comandi a uno o all'altro/i. + int robotIndex = 0; + + // Dichiarazione del metodo Azioni. + public String Azioni(String comando, Vector nomeRobot, Vector pdrA) { + + // Crea un'istanza della classe Scanner per + // ricevere gli input nel caso in cui debba essere dato il nome + // al robottino o scelto un robottino da una lista. + Scanner sc2 = new Scanner(System.in); + + // La variabile contatore memorizza il numero di variabili "PartiDelRobot.statoParte" + // che hanno valore true, ossia il numero di arti alzati di un robottino + // in modo da poter scegliere la frase giusta da dare come output + // al posto dell'immagine del robottino con tali arti alzati. + int contatore = 0; + + // Questo array ha il compito di memorizzare le stringhe corrispondenti agli alzati + // per motivi simili a quelli della variabile "contatore". + String stat[] = {"", "", "", ""}; + + // La stringa Return verrà successivamente modificata e restituita in alcuni casi. + String Return = "Errore - si consiglia di picchiare il programmatore"; + + // Per far si che il programma non distingua tra lettere maiuscole o minuscole per quanto riguardo gli input + // è stato usato il metodo "equalsIgnoreCase" della classe String. + // I quattro casi successivi cambiano il valore della varibalie "statoParte" relativa all'arto + // Che deve mouversi (quindi cambiare la sua posizione). + if (comando.equalsIgnoreCase("leftarmmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte; + + else if (comando.equalsIgnoreCase("rightarmmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte; + + else if (comando.equalsIgnoreCase("leftlegmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte; + + else if (comando.equalsIgnoreCase("rightlegmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte; + + // I casi successivi modificano il valore della varibile analogamente ai 4 precedenti. + else if (comando.equalsIgnoreCase("leftarmon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = true; + + else if (comando.equalsIgnoreCase("rightarmon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = true; + + else if (comando.equalsIgnoreCase("leftlegon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = true; + + else if (comando.equalsIgnoreCase("rightlegon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = true; + + else if (comando.equalsIgnoreCase("leftarmoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = false; + + else if (comando.equalsIgnoreCase("rightarmoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = false; + + else if (comando.equalsIgnoreCase("leftlegoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = false; + + else if (comando.equalsIgnoreCase("rightlegoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = false; + + // Il caso successi si verica quando il comando è "exploud". + else if (comando.equalsIgnoreCase("exploud")) { + + // Scrive sullo schermo la seguente frase, che comprende il nome del robottino che non è ancora stato fatto eliminare + System.out.println + ("Che atroce! Hai fatto esplodere il robottino " + nomeRobot.elementAt(this.robotIndex) + "! Aspetta che te ne faccio un altro"); + System.out.println ("..."); + + // Con un ciclo for rendo false tutte le variabili "statoParte" per far sì che il robottino sia come nuovo. + for (int i = 0; i < 4; i++) { + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(i)).statoParte = false; + } + + // E azzero anche il nome del robot + this.nomeRobot.setElementAt("", this.robotIndex); + + return "Fatto, puoi continuare a giocare"; + } + + // Caso per il comando "bier". + // La reazione a questo comando è un semplice output quasi totalmente scorrelato al robottino + // se non per il fatto che appare il nome del robottino attuale. + else if (comando.equalsIgnoreCase("bier")) { + System.out.println ("Il robottino " + nomeRobot.elementAt(this.robotIndex) + "sta trangugiando una birra..."); + System.out.println ("Buurrrrrrrrp!"); + return "La birra analcolica fa schifo!"; + } + + // Per il comando "rename", rinomina. + else if (comando.equalsIgnoreCase("rename")) { + + System.out.println ("Con questo comando quoi cambiare il nome del robottino " + nomeRobot.elementAt(this.robotIndex)); + System.out.println ("Digita il nuovo nome e premi INVIO per coninuare"); + + // Cambia il nome del robottino attuale con quello dell'input. + this.nomeRobot.setElementAt(sc2.nextLine(), this.robotIndex); + + // Se il nome non è vuoto, aggiunge un carattere di spazio per migliorare la visualizzazione nelle frasi di output. + if (!(((String)nomeRobot.elementAt(this.robotIndex)).equalsIgnoreCase(""))) + this.nomeRobot.setElementAt(this.nomeRobot.elementAt(this.robotIndex) + " ", this.robotIndex); + + // Semplice output con il nuovo nome. + return "Ora il robottino si chiama " + nomeRobot.elementAt(this.robotIndex); + } + + // Per il comando "porky". + // Ancora meno che per "bier". + else if (comando.equalsIgnoreCase("porky")) { + System.out.println ("Porky è un grande"); + System.out.println ("Per maggiori informazioni visita il sito"); + return "http://kakati.forumfree.net/"; + } + + // Il comando "xxx" ha funzioni analoghe a bier. + else if (comando.equalsIgnoreCase("xxx")) { + System.out.println ("Il robottino " + nomeRobot.elementAt(this.robotIndex) + "ha incontrato una bella robottina..."); + return "*Censura*"; + } + + // "dance" setta tutte le variabili "statoParte" a false... + else if (comando.equalsIgnoreCase("dance")) { + + System.out.println ("Immagini che il robottino " + nomeRobot.elementAt(this.robotIndex) + " stia ballando..."); + System.out.println ("Il robottino ha smesso di ballare"); + + //...con questo ciclo for + for (int i = 0; i < 4; i++) { + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(i)).statoParte = false; + } + + return "Il robottino " + nomeRobot.elementAt(this.robotIndex) + "si è fermato ed è tornato nella posizione originale"; + + // Per il comando "newrobot", che crea un nuovo robottino. + } + else if (comando.equalsIgnoreCase("newrobot")) { + + // Aggiunge un elemento a "pdrA" con il metodo "addElement", della classe Vector. + // È stata necessaria la dicitura this. per modificare realmente il vettore. + // Se non lo avessi fatto non sarebbe successo, in quanto i metodi operano + // su i valori e non sulle variabili/oggetti. + this.pdrA.addElement(pdrB); + + // Aggiungo le 4 parti del robot. + // Forse avete già notato (ma quì sono più evidenti) alcuni cast che ho fatto: + // sono per far si che il compilatore capisca che il metodo viene invocato da un oggetto + // della classe vector, che senza cast considererebbe della classe Object. + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (leftArm); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (rightArm); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (leftLeg); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (rightLeg); + + // Semplice output con richiesta di nome per il nuovo robottino. + System.out.println ("È stato creato un nuovo robot. Vuoi dare un nome al nuovo robot?"); + System.out.println ("Inserisci il nuovo nome e premi INVIO oppure lascia vuoto e premi INVIO"); + + String newName = sc2.nextLine(); + + if (!(((String)nomeRobot.elementAt(this.robotIndex)).equalsIgnoreCase(""))) + this.nomeRobot.setElementAt(this.nomeRobot.elementAt(this.robotIndex) + " ", this.robotIndex); + + this.nomeRobot.addElement(newName); + + return "È stato creato il robottino " + newName; + } + + // Il comando "deleterobot", per eliminare un robot. + else if (comando.equalsIgnoreCase("deleterobot")) { + + // Se c'è più di un robot esegue l'eliminazione. + if (pdrA.size()>1) { + System.out.println ("Quale robottino vuoi eliminare?"); + System.out.println (""); + + // Con un ciclo for scrive i nomi di tutti i robot preceduti da un numero in sequenza. + // Il numero è il corrispondente del loro indice di vettore. + for (int i = 0; i1) { + System.out.println ("A quale robottino vuoi dare i comandi?"); + System.out.println (""); + for (int i = 0; i/bin +java Robottino + +dove percorsoFile è il percorso di questo file. diff --git a/robottino/all_versions/v2.3/bin/RobottinoAzioni/RobottinoAzioni.class b/robottino/all_versions/v2.3/bin/RobottinoAzioni/RobottinoAzioni.class new file mode 100755 index 0000000..d8aeb55 Binary files /dev/null and b/robottino/all_versions/v2.3/bin/RobottinoAzioni/RobottinoAzioni.class differ diff --git a/robottino/all_versions/v2.3/bin/RobottinoMain/Robottino.class b/robottino/all_versions/v2.3/bin/RobottinoMain/Robottino.class new file mode 100755 index 0000000..58413c9 Binary files /dev/null and b/robottino/all_versions/v2.3/bin/RobottinoMain/Robottino.class differ diff --git a/robottino/all_versions/v2.3/bin/RobottinoUtils/Grafica.class b/robottino/all_versions/v2.3/bin/RobottinoUtils/Grafica.class new file mode 100755 index 0000000..7ad96fe Binary files /dev/null and b/robottino/all_versions/v2.3/bin/RobottinoUtils/Grafica.class differ diff --git a/robottino/all_versions/v2.3/bin/RobottinoUtils/Listener.class b/robottino/all_versions/v2.3/bin/RobottinoUtils/Listener.class new file mode 100755 index 0000000..3ddc989 Binary files /dev/null and b/robottino/all_versions/v2.3/bin/RobottinoUtils/Listener.class differ diff --git a/robottino/all_versions/v2.3/bin/RobottinoUtils/PartiDelRobot.class b/robottino/all_versions/v2.3/bin/RobottinoUtils/PartiDelRobot.class new file mode 100755 index 0000000..fcc8e9e Binary files /dev/null and b/robottino/all_versions/v2.3/bin/RobottinoUtils/PartiDelRobot.class differ diff --git a/robottino/all_versions/v2.3/src/RobottinoAzioni/RobottinoAzioni.java b/robottino/all_versions/v2.3/src/RobottinoAzioni/RobottinoAzioni.java new file mode 100755 index 0000000..27d568a --- /dev/null +++ b/robottino/all_versions/v2.3/src/RobottinoAzioni/RobottinoAzioni.java @@ -0,0 +1,397 @@ +// Dichiaro che questa classa farà parte del package RobottinoAzioni, che verrà poi importato dalle classi Listener e Grafica. +package RobottinoAzioni; + +// Anche qui impoerto i package necessari. +// java.util.Scanner gestisce gli input da tastiera +import java.util.Scanner; + +// java.util.Vector +import java.util.Vector; + +// Package definito da me. +import RobottinoUtils.*; + +public class RobottinoAzioni { + + // Creo gli oggetti statici che riempiranno il vettore pdrA: + // pdrA è un vettore multidimensionale che a sua volta contiene vettori + // (il primo si chiama pdrB, i successivi non avranno nome) che coontengono + // 4 istanze di PartiDelRobot, cioè i 4 arti del robot. + // Poi creo un vettore che conterrà i nomi dei robot. + // Creo il vettore principale... + public static Vector pdrA = new Vector(1); + + // ...e il "sottovettore" come istanze della classe Vector + public static Vector pdrB = new Vector(4); + + // Creo le quattro istanze di PartidelRobot utilizzando l'apposito costruttore + // passo a tutte una stringa e un valore boleano che determina lo stato + // (alzato/a se true, abbassato/a se false). + public static PartiDelRobot leftArm = new PartiDelRobot(false, "il braccio sinistro alzato"); + public static PartiDelRobot rightArm = new PartiDelRobot(false, "il braccio destro alzato"); + public static PartiDelRobot leftLeg = new PartiDelRobot(false, "la gamba sinistra alzata"); + public static PartiDelRobot rightLeg = new PartiDelRobot(false, "la gamba destra alzata"); + + // Il vettore nomeRobot per i nomi + // il vettore può contenere stringhe, poichè non sono tipi primitivi ma oggetti della classe String + public static Vector nomeRobot = new Vector(1); + + // La variabile robotIndex serve a tenere in memoria su quale robot si sta operando: + // in seguito verrà usata quando l'utente deciderà di creare più di un robot + // e poi di dare comandi a uno o all'altro/i. + int robotIndex = 0; + + // Dichiarazione del metodo Azioni. + public String Azioni(String comando, Vector nomeRobot, Vector pdrA) { + + // Crea un'istanza della classe Scanner per + // ricevere gli input nel caso in cui debba essere dato il nome + // al robottino o scelto un robottino da una lista. + Scanner sc2 = new Scanner(System.in); + + // La variabile contatore memorizza il numero di variabili "PartiDelRobot.statoParte" + // che hanno valore true, ossia il numero di arti alzati di un robottino + // in modo da poter scegliere la frase giusta da dare come output + // al posto dell'immagine del robottino con tali arti alzati. + int contatore = 0; + + // Questo array ha il compito di memorizzare le stringhe corrispondenti agli alzati + // per motivi simili a quelli della variabile "contatore". + String stat[] = {"", "", "", ""}; + + // La stringa Return verrà successivamente modificata e restituita in alcuni casi. + String Return = "Errore - si consiglia di picchiare il programmatore"; + + // Per far si che il programma non distingua tra lettere maiuscole o minuscole per quanto riguardo gli input + // è stato usato il metodo "equalsIgnoreCase" della classe String. + // I quattro casi successivi cambiano il valore della varibalie "statoParte" relativa all'arto + // Che deve mouversi (quindi cambiare la sua posizione). + if (comando.equalsIgnoreCase("leftarmmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte; + + else if (comando.equalsIgnoreCase("rightarmmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte; + + else if (comando.equalsIgnoreCase("leftlegmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte; + + else if (comando.equalsIgnoreCase("rightlegmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte; + + // I casi successivi modificano il valore della varibile analogamente ai 4 precedenti. + else if (comando.equalsIgnoreCase("leftarmon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = true; + + else if (comando.equalsIgnoreCase("rightarmon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = true; + + else if (comando.equalsIgnoreCase("leftlegon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = true; + + else if (comando.equalsIgnoreCase("rightlegon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = true; + + else if (comando.equalsIgnoreCase("leftarmoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = false; + + else if (comando.equalsIgnoreCase("rightarmoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = false; + + else if (comando.equalsIgnoreCase("leftlegoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = false; + + else if (comando.equalsIgnoreCase("rightlegoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = false; + + // Il caso successi si verica quando il comando è "exploud". + else if (comando.equalsIgnoreCase("exploud")) { + + // Scrive sullo schermo la seguente frase, che comprende il nome del robottino che non è ancora stato fatto eliminare + System.out.println + ("Che atroce! Hai fatto esplodere il robottino " + nomeRobot.elementAt(this.robotIndex) + "! Aspetta che te ne faccio un altro"); + System.out.println ("..."); + + // Con un ciclo for rendo false tutte le variabili "statoParte" per far sì che il robottino sia come nuovo. + for (int i = 0; i < 4; i++) { + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(i)).statoParte = false; + } + + // E azzero anche il nome del robot + this.nomeRobot.setElementAt("", this.robotIndex); + + return "Fatto, puoi continuare a giocare"; + } + + // Caso per il comando "bier". + // La reazione a questo comando è un semplice output quasi totalmente scorrelato al robottino + // se non per il fatto che appare il nome del robottino attuale. + else if (comando.equalsIgnoreCase("bier")) { + System.out.println ("Il robottino " + nomeRobot.elementAt(this.robotIndex) + "sta trangugiando una birra..."); + System.out.println ("Buurrrrrrrrp!"); + return "La birra analcolica fa schifo!"; + } + + // Per il comando "rename", rinomina. + else if (comando.equalsIgnoreCase("rename")) { + + System.out.println ("Con questo comando quoi cambiare il nome del robottino " + nomeRobot.elementAt(this.robotIndex)); + System.out.println ("Digita il nuovo nome e premi INVIO per coninuare"); + + // Cambia il nome del robottino attuale con quello dell'input. + this.nomeRobot.setElementAt(sc2.nextLine(), this.robotIndex); + + // Se il nome non è vuoto, aggiunge un carattere di spazio per migliorare la visualizzazione nelle frasi di output. + if (!(((String)nomeRobot.elementAt(this.robotIndex)).equalsIgnoreCase(""))) + this.nomeRobot.setElementAt(this.nomeRobot.elementAt(this.robotIndex) + " ", this.robotIndex); + + // Semplice output con il nuovo nome. + return "Ora il robottino si chiama " + nomeRobot.elementAt(this.robotIndex); + } + + // Per il comando "porky". + // Ancora meno che per "bier". + else if (comando.equalsIgnoreCase("porky")) { + System.out.println ("Porky è un grande"); + System.out.println ("Per maggiori informazioni visita il sito"); + return "http://kakati.forumfree.net/"; + } + + // Il comando "xxx" ha funzioni analoghe a bier. + else if (comando.equalsIgnoreCase("xxx")) { + System.out.println ("Il robottino " + nomeRobot.elementAt(this.robotIndex) + "ha incontrato una bella robottina..."); + return "*Censura*"; + } + + // "dance" setta tutte le variabili "statoParte" a false... + else if (comando.equalsIgnoreCase("dance")) { + + System.out.println ("Immagini che il robottino " + nomeRobot.elementAt(this.robotIndex) + " stia ballando..."); + System.out.println ("Il robottino ha smesso di ballare"); + + //...con questo ciclo for + for (int i = 0; i < 4; i++) { + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(i)).statoParte = false; + } + + return "Il robottino " + nomeRobot.elementAt(this.robotIndex) + "si è fermato ed è tornato nella posizione originale"; + + // Per il comando "newrobot", che crea un nuovo robottino. + } + else if (comando.equalsIgnoreCase("newrobot")) { + + // Aggiunge un elemento a "pdrA" con il metodo "addElement", della classe Vector. + // È stata necessaria la dicitura this. per modificare realmente il vettore. + // Se non lo avessi fatto non sarebbe successo, in quanto i metodi operano + // su i valori e non sulle variabili/oggetti. + this.pdrA.addElement(pdrB); + + // Aggiungo le 4 parti del robot. + // Forse avete già notato (ma quì sono più evidenti) alcuni cast che ho fatto: + // sono per far si che il compilatore capisca che il metodo viene invocato da un oggetto + // della classe vector, che senza cast considererebbe della classe Object. + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (leftArm); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (rightArm); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (leftLeg); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (rightLeg); + + // Semplice output con richiesta di nome per il nuovo robottino. + System.out.println ("È stato creato un nuovo robot. Vuoi dare un nome al nuovo robot?"); + System.out.println ("Inserisci il nuovo nome e premi INVIO oppure lascia vuoto e premi INVIO"); + + String newName = sc2.nextLine(); + + if (!(((String)nomeRobot.elementAt(this.robotIndex)).equalsIgnoreCase(""))) + this.nomeRobot.setElementAt(this.nomeRobot.elementAt(this.robotIndex) + " ", this.robotIndex); + + this.nomeRobot.addElement(newName); + + return "È stato creato il robottino " + newName; + } + + // Il comando "deleterobot", per eliminare un robot. + else if (comando.equalsIgnoreCase("deleterobot")) { + + // Se c'è più di un robot esegue l'eliminazione. + if (pdrA.size()>1) { + System.out.println ("Quale robottino vuoi eliminare?"); + System.out.println (""); + + // Con un ciclo for scrive i nomi di tutti i robot preceduti da un numero in sequenza. + // Il numero è il corrispondente del loro indice di vettore. + for (int i = 0; i1) { + System.out.println ("A quale robottino vuoi dare i comandi?"); + System.out.println (""); + for (int i = 0; i/bin +java Robottino + +dove percorsoFile è il percorso di questo file. diff --git a/robottino/all_versions/v3.0/bin/Immagini/ImmagineRobot.class b/robottino/all_versions/v3.0/bin/Immagini/ImmagineRobot.class new file mode 100755 index 0000000..6089c8a Binary files /dev/null and b/robottino/all_versions/v3.0/bin/Immagini/ImmagineRobot.class differ diff --git a/robottino/all_versions/v3.0/bin/Immagini/img/laoff.gif b/robottino/all_versions/v3.0/bin/Immagini/img/laoff.gif new file mode 100755 index 0000000..49d9db0 Binary files /dev/null and b/robottino/all_versions/v3.0/bin/Immagini/img/laoff.gif differ diff --git a/robottino/all_versions/v3.0/bin/Immagini/img/lloff.gif b/robottino/all_versions/v3.0/bin/Immagini/img/lloff.gif new file mode 100755 index 0000000..3db1ceb Binary files /dev/null and b/robottino/all_versions/v3.0/bin/Immagini/img/lloff.gif differ diff --git a/robottino/all_versions/v3.0/bin/Immagini/img/raoff.gif b/robottino/all_versions/v3.0/bin/Immagini/img/raoff.gif new file mode 100755 index 0000000..88aabc4 Binary files /dev/null and b/robottino/all_versions/v3.0/bin/Immagini/img/raoff.gif differ diff --git a/robottino/all_versions/v3.0/bin/Immagini/img/rloff.gif b/robottino/all_versions/v3.0/bin/Immagini/img/rloff.gif new file mode 100755 index 0000000..04bda22 Binary files /dev/null and b/robottino/all_versions/v3.0/bin/Immagini/img/rloff.gif differ diff --git a/robottino/all_versions/v3.0/bin/Immagini/img/robot.gif b/robottino/all_versions/v3.0/bin/Immagini/img/robot.gif new file mode 100755 index 0000000..db87686 Binary files /dev/null and b/robottino/all_versions/v3.0/bin/Immagini/img/robot.gif differ diff --git a/robottino/all_versions/v3.0/bin/RobottinoAzioni/RobottinoAzioni.class b/robottino/all_versions/v3.0/bin/RobottinoAzioni/RobottinoAzioni.class new file mode 100755 index 0000000..d8aeb55 Binary files /dev/null and b/robottino/all_versions/v3.0/bin/RobottinoAzioni/RobottinoAzioni.class differ diff --git a/robottino/all_versions/v3.0/bin/RobottinoMain/Robottino.class b/robottino/all_versions/v3.0/bin/RobottinoMain/Robottino.class new file mode 100755 index 0000000..2a1b0e3 Binary files /dev/null and b/robottino/all_versions/v3.0/bin/RobottinoMain/Robottino.class differ diff --git a/robottino/all_versions/v3.0/bin/RobottinoUtils/Grafica.class b/robottino/all_versions/v3.0/bin/RobottinoUtils/Grafica.class new file mode 100755 index 0000000..80ef9bc Binary files /dev/null and b/robottino/all_versions/v3.0/bin/RobottinoUtils/Grafica.class differ diff --git a/robottino/all_versions/v3.0/bin/RobottinoUtils/Listener.class b/robottino/all_versions/v3.0/bin/RobottinoUtils/Listener.class new file mode 100755 index 0000000..e198976 Binary files /dev/null and b/robottino/all_versions/v3.0/bin/RobottinoUtils/Listener.class differ diff --git a/robottino/all_versions/v3.0/bin/RobottinoUtils/PartiDelRobot.class b/robottino/all_versions/v3.0/bin/RobottinoUtils/PartiDelRobot.class new file mode 100755 index 0000000..fcc8e9e Binary files /dev/null and b/robottino/all_versions/v3.0/bin/RobottinoUtils/PartiDelRobot.class differ diff --git a/robottino/all_versions/v3.0/src/Immagini/ImmagineRobot.java b/robottino/all_versions/v3.0/src/Immagini/ImmagineRobot.java new file mode 100755 index 0000000..ee0bc1f --- /dev/null +++ b/robottino/all_versions/v3.0/src/Immagini/ImmagineRobot.java @@ -0,0 +1,35 @@ +package Immagini; +import java.awt.*; +import java.awt.image.*; + +public class ImmagineRobot { + + public Toolkit t; + public Image robot; + public Image raon; + public Image raoff; + public Image laon; + public Image laoff; + public Image rlon; + public Image rloff; + public Image llon; + public Image lloff; + public Image birra; + + public ImmagineRobot() { + + t = Toolkit.getDefaultToolkit(); + robot = t.getImage("./Immagini/img/robot.gif"); + raon = t.getImage("./Immagini/img/raon.gif"); + raoff = t.getImage("./Immagini/img/raoff.gif"); + laon = t.getImage("./Immagini/img/laon.gif"); + laoff = t.getImage("./Immagini/img/laoff.gif"); + rlon = t.getImage("./Immagini/img/rlon.gif"); + rloff = t.getImage("./Immagini/img/rloff.gif"); + llon = t.getImage("./Immagini/img/llon.gif"); + lloff = t.getImage("./Immagini/img/lloff.gif"); + birra = t.getImage("./Immagini/img/birra.gif"); + + } + +} diff --git a/robottino/all_versions/v3.0/src/Immagini/img/laoff.gif b/robottino/all_versions/v3.0/src/Immagini/img/laoff.gif new file mode 100755 index 0000000..49d9db0 Binary files /dev/null and b/robottino/all_versions/v3.0/src/Immagini/img/laoff.gif differ diff --git a/robottino/all_versions/v3.0/src/Immagini/img/lloff.gif b/robottino/all_versions/v3.0/src/Immagini/img/lloff.gif new file mode 100755 index 0000000..3db1ceb Binary files /dev/null and b/robottino/all_versions/v3.0/src/Immagini/img/lloff.gif differ diff --git a/robottino/all_versions/v3.0/src/Immagini/img/raoff.gif b/robottino/all_versions/v3.0/src/Immagini/img/raoff.gif new file mode 100755 index 0000000..88aabc4 Binary files /dev/null and b/robottino/all_versions/v3.0/src/Immagini/img/raoff.gif differ diff --git a/robottino/all_versions/v3.0/src/Immagini/img/rloff.gif b/robottino/all_versions/v3.0/src/Immagini/img/rloff.gif new file mode 100755 index 0000000..04bda22 Binary files /dev/null and b/robottino/all_versions/v3.0/src/Immagini/img/rloff.gif differ diff --git a/robottino/all_versions/v3.0/src/Immagini/img/robot.gif b/robottino/all_versions/v3.0/src/Immagini/img/robot.gif new file mode 100755 index 0000000..db87686 Binary files /dev/null and b/robottino/all_versions/v3.0/src/Immagini/img/robot.gif differ diff --git a/robottino/all_versions/v3.0/src/RobottinoAzioni/RobottinoAzioni.java b/robottino/all_versions/v3.0/src/RobottinoAzioni/RobottinoAzioni.java new file mode 100755 index 0000000..27d568a --- /dev/null +++ b/robottino/all_versions/v3.0/src/RobottinoAzioni/RobottinoAzioni.java @@ -0,0 +1,397 @@ +// Dichiaro che questa classa farà parte del package RobottinoAzioni, che verrà poi importato dalle classi Listener e Grafica. +package RobottinoAzioni; + +// Anche qui impoerto i package necessari. +// java.util.Scanner gestisce gli input da tastiera +import java.util.Scanner; + +// java.util.Vector +import java.util.Vector; + +// Package definito da me. +import RobottinoUtils.*; + +public class RobottinoAzioni { + + // Creo gli oggetti statici che riempiranno il vettore pdrA: + // pdrA è un vettore multidimensionale che a sua volta contiene vettori + // (il primo si chiama pdrB, i successivi non avranno nome) che coontengono + // 4 istanze di PartiDelRobot, cioè i 4 arti del robot. + // Poi creo un vettore che conterrà i nomi dei robot. + // Creo il vettore principale... + public static Vector pdrA = new Vector(1); + + // ...e il "sottovettore" come istanze della classe Vector + public static Vector pdrB = new Vector(4); + + // Creo le quattro istanze di PartidelRobot utilizzando l'apposito costruttore + // passo a tutte una stringa e un valore boleano che determina lo stato + // (alzato/a se true, abbassato/a se false). + public static PartiDelRobot leftArm = new PartiDelRobot(false, "il braccio sinistro alzato"); + public static PartiDelRobot rightArm = new PartiDelRobot(false, "il braccio destro alzato"); + public static PartiDelRobot leftLeg = new PartiDelRobot(false, "la gamba sinistra alzata"); + public static PartiDelRobot rightLeg = new PartiDelRobot(false, "la gamba destra alzata"); + + // Il vettore nomeRobot per i nomi + // il vettore può contenere stringhe, poichè non sono tipi primitivi ma oggetti della classe String + public static Vector nomeRobot = new Vector(1); + + // La variabile robotIndex serve a tenere in memoria su quale robot si sta operando: + // in seguito verrà usata quando l'utente deciderà di creare più di un robot + // e poi di dare comandi a uno o all'altro/i. + int robotIndex = 0; + + // Dichiarazione del metodo Azioni. + public String Azioni(String comando, Vector nomeRobot, Vector pdrA) { + + // Crea un'istanza della classe Scanner per + // ricevere gli input nel caso in cui debba essere dato il nome + // al robottino o scelto un robottino da una lista. + Scanner sc2 = new Scanner(System.in); + + // La variabile contatore memorizza il numero di variabili "PartiDelRobot.statoParte" + // che hanno valore true, ossia il numero di arti alzati di un robottino + // in modo da poter scegliere la frase giusta da dare come output + // al posto dell'immagine del robottino con tali arti alzati. + int contatore = 0; + + // Questo array ha il compito di memorizzare le stringhe corrispondenti agli alzati + // per motivi simili a quelli della variabile "contatore". + String stat[] = {"", "", "", ""}; + + // La stringa Return verrà successivamente modificata e restituita in alcuni casi. + String Return = "Errore - si consiglia di picchiare il programmatore"; + + // Per far si che il programma non distingua tra lettere maiuscole o minuscole per quanto riguardo gli input + // è stato usato il metodo "equalsIgnoreCase" della classe String. + // I quattro casi successivi cambiano il valore della varibalie "statoParte" relativa all'arto + // Che deve mouversi (quindi cambiare la sua posizione). + if (comando.equalsIgnoreCase("leftarmmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte; + + else if (comando.equalsIgnoreCase("rightarmmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte; + + else if (comando.equalsIgnoreCase("leftlegmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte; + + else if (comando.equalsIgnoreCase("rightlegmove")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = + !((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte; + + // I casi successivi modificano il valore della varibile analogamente ai 4 precedenti. + else if (comando.equalsIgnoreCase("leftarmon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = true; + + else if (comando.equalsIgnoreCase("rightarmon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = true; + + else if (comando.equalsIgnoreCase("leftlegon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = true; + + else if (comando.equalsIgnoreCase("rightlegon")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = true; + + else if (comando.equalsIgnoreCase("leftarmoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(0)).statoParte = false; + + else if (comando.equalsIgnoreCase("rightarmoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(1)).statoParte = false; + + else if (comando.equalsIgnoreCase("leftlegoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(2)).statoParte = false; + + else if (comando.equalsIgnoreCase("rightlegoff")) + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(3)).statoParte = false; + + // Il caso successi si verica quando il comando è "exploud". + else if (comando.equalsIgnoreCase("exploud")) { + + // Scrive sullo schermo la seguente frase, che comprende il nome del robottino che non è ancora stato fatto eliminare + System.out.println + ("Che atroce! Hai fatto esplodere il robottino " + nomeRobot.elementAt(this.robotIndex) + "! Aspetta che te ne faccio un altro"); + System.out.println ("..."); + + // Con un ciclo for rendo false tutte le variabili "statoParte" per far sì che il robottino sia come nuovo. + for (int i = 0; i < 4; i++) { + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(i)).statoParte = false; + } + + // E azzero anche il nome del robot + this.nomeRobot.setElementAt("", this.robotIndex); + + return "Fatto, puoi continuare a giocare"; + } + + // Caso per il comando "bier". + // La reazione a questo comando è un semplice output quasi totalmente scorrelato al robottino + // se non per il fatto che appare il nome del robottino attuale. + else if (comando.equalsIgnoreCase("bier")) { + System.out.println ("Il robottino " + nomeRobot.elementAt(this.robotIndex) + "sta trangugiando una birra..."); + System.out.println ("Buurrrrrrrrp!"); + return "La birra analcolica fa schifo!"; + } + + // Per il comando "rename", rinomina. + else if (comando.equalsIgnoreCase("rename")) { + + System.out.println ("Con questo comando quoi cambiare il nome del robottino " + nomeRobot.elementAt(this.robotIndex)); + System.out.println ("Digita il nuovo nome e premi INVIO per coninuare"); + + // Cambia il nome del robottino attuale con quello dell'input. + this.nomeRobot.setElementAt(sc2.nextLine(), this.robotIndex); + + // Se il nome non è vuoto, aggiunge un carattere di spazio per migliorare la visualizzazione nelle frasi di output. + if (!(((String)nomeRobot.elementAt(this.robotIndex)).equalsIgnoreCase(""))) + this.nomeRobot.setElementAt(this.nomeRobot.elementAt(this.robotIndex) + " ", this.robotIndex); + + // Semplice output con il nuovo nome. + return "Ora il robottino si chiama " + nomeRobot.elementAt(this.robotIndex); + } + + // Per il comando "porky". + // Ancora meno che per "bier". + else if (comando.equalsIgnoreCase("porky")) { + System.out.println ("Porky è un grande"); + System.out.println ("Per maggiori informazioni visita il sito"); + return "http://kakati.forumfree.net/"; + } + + // Il comando "xxx" ha funzioni analoghe a bier. + else if (comando.equalsIgnoreCase("xxx")) { + System.out.println ("Il robottino " + nomeRobot.elementAt(this.robotIndex) + "ha incontrato una bella robottina..."); + return "*Censura*"; + } + + // "dance" setta tutte le variabili "statoParte" a false... + else if (comando.equalsIgnoreCase("dance")) { + + System.out.println ("Immagini che il robottino " + nomeRobot.elementAt(this.robotIndex) + " stia ballando..."); + System.out.println ("Il robottino ha smesso di ballare"); + + //...con questo ciclo for + for (int i = 0; i < 4; i++) { + ((PartiDelRobot)((Vector)this.pdrA.elementAt(this.robotIndex)).elementAt(i)).statoParte = false; + } + + return "Il robottino " + nomeRobot.elementAt(this.robotIndex) + "si è fermato ed è tornato nella posizione originale"; + + // Per il comando "newrobot", che crea un nuovo robottino. + } + else if (comando.equalsIgnoreCase("newrobot")) { + + // Aggiunge un elemento a "pdrA" con il metodo "addElement", della classe Vector. + // È stata necessaria la dicitura this. per modificare realmente il vettore. + // Se non lo avessi fatto non sarebbe successo, in quanto i metodi operano + // su i valori e non sulle variabili/oggetti. + this.pdrA.addElement(pdrB); + + // Aggiungo le 4 parti del robot. + // Forse avete già notato (ma quì sono più evidenti) alcuni cast che ho fatto: + // sono per far si che il compilatore capisca che il metodo viene invocato da un oggetto + // della classe vector, che senza cast considererebbe della classe Object. + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (leftArm); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (rightArm); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (leftLeg); + ((Vector)(this.pdrA.elementAt(pdrA.size()-1))).addElement (rightLeg); + + // Semplice output con richiesta di nome per il nuovo robottino. + System.out.println ("È stato creato un nuovo robot. Vuoi dare un nome al nuovo robot?"); + System.out.println ("Inserisci il nuovo nome e premi INVIO oppure lascia vuoto e premi INVIO"); + + String newName = sc2.nextLine(); + + if (!(((String)nomeRobot.elementAt(this.robotIndex)).equalsIgnoreCase(""))) + this.nomeRobot.setElementAt(this.nomeRobot.elementAt(this.robotIndex) + " ", this.robotIndex); + + this.nomeRobot.addElement(newName); + + return "È stato creato il robottino " + newName; + } + + // Il comando "deleterobot", per eliminare un robot. + else if (comando.equalsIgnoreCase("deleterobot")) { + + // Se c'è più di un robot esegue l'eliminazione. + if (pdrA.size()>1) { + System.out.println ("Quale robottino vuoi eliminare?"); + System.out.println (""); + + // Con un ciclo for scrive i nomi di tutti i robot preceduti da un numero in sequenza. + // Il numero è il corrispondente del loro indice di vettore. + for (int i = 0; i1) { + System.out.println ("A quale robottino vuoi dare i comandi?"); + System.out.println (""); + for (int i = 0; i + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; + +public class Frame extends JFrame { + public class Listener implements ActionListener { + public void actionPerformed( ActionEvent e ) { + if ( e.getSource() == exit ) + System.exit(0); + else if ( e.getSource() == informazioni ) + JOptionPane.showMessageDialog( main.frame, "info", "Robottino v4.0 - Informazioni", JOptionPane.INFORMATION_MESSAGE ); + else if ( e.getSource() == nuovo ) { + String nome = JOptionPane.showInputDialog( main.frame, "Inserire il nome del nuovo robottino:", "Robot " + ( ++main.robots ) ); + if ( nome != null ) + main.list.newRobot( nome ); + } + } + } + public static Listener listener; + public static Main main; + public static JMenuBar barraMenu = new JMenuBar(); + public static JMenu file = new JMenu( "File" ); + public static JMenu info = new JMenu( "?" ); + public static JMenuItem exit = new JMenuItem( "Esci" ); + public static JMenuItem informazioni = new JMenuItem( "Informazioni" ); + public static JMenuItem nuovo = new JMenuItem( "Nuovo Robot" ); + public Frame() { + super( "Robottino versione 4.0" ); + listener = new Listener(); + main = new Main(); + exit.addActionListener( listener ); + exit.setMnemonic( 'E' ); + informazioni.addActionListener( listener ); + informazioni.setMnemonic( 'I' ); + nuovo.addActionListener( listener ); + nuovo.setMnemonic( 'N' ); + file.add( exit ); + file.add( nuovo ); + file.setMnemonic( 'F' ); + info.add( informazioni ); + info.setMnemonic( '?' ); + barraMenu.add( file ); + barraMenu.add( info ); + setJMenuBar( barraMenu ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0.1/src/List.java b/robottino/all_versions/v4.0.1/src/List.java new file mode 100755 index 0000000..b4f9982 --- /dev/null +++ b/robottino/all_versions/v4.0.1/src/List.java @@ -0,0 +1,74 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.JOptionPane; + +public class List { + public static Main main = new Main(); + public Robot primoRobot, ultimoRobot; + public List() { + primoRobot = ultimoRobot = null; + } + public boolean vuota() { + return primoRobot == null; + } + public Robot getRobot( String nome ) { + Robot i = primoRobot; + for ( ; !i.nomeRobot.equals( nome ); i = i.prossimoRobot ) ; + return i; + } + public void newRobot() { + newRobot( false, false, false, false, "" ); + } + public void newRobot( String nome ) { + newRobot( false, false, false, false, nome ); + } + public void newRobot( boolean la, boolean ra, boolean ll, boolean rl, String nome ) { + if ( vuota() ) + primoRobot = ultimoRobot = new Robot( la, ra, ll, rl, nome, null, null ); + else { + ultimoRobot = new Robot( la, ra, ll, rl, nome, ultimoRobot, null ); + ultimoRobot.precedenteRobot.prossimoRobot = ultimoRobot; + } + } + public void deleteRobot( String nome ) { + if ( vuota() ) + JOptionPane.showMessageDialog( main.frame, "Nessun robottino presente. Impossibile cancellarne uno", "Robottino v4.0 - Errore", JOptionPane.ERROR_MESSAGE ); + else { + Robot i = primoRobot; + for ( ; !i.nomeRobot.equals( nome ); i = i.prossimoRobot ) ; + if ( i.precedenteRobot != null ) + i.precedenteRobot.prossimoRobot = i.prossimoRobot; + else + primoRobot = i.prossimoRobot; + if ( i.prossimoRobot != null ) + i.prossimoRobot.precedenteRobot = i.precedenteRobot; + else + ultimoRobot = i.precedenteRobot; + } + } + public void printList() { + String lista = ""; + for ( Robot i = primoRobot; i != null; i = i.prossimoRobot ) + lista += i.getName() + " "; + JOptionPane.showMessageDialog( main.frame, lista, "Robottino v4.0 - Robottini Presenti", JOptionPane.PLAIN_MESSAGE ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0.1/src/Main.java b/robottino/all_versions/v4.0.1/src/Main.java new file mode 100755 index 0000000..4ef0206 --- /dev/null +++ b/robottino/all_versions/v4.0.1/src/Main.java @@ -0,0 +1,36 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.JFrame; + +public class Main { + public static int robots; + public static List list; + public static Frame frame; + public static void main ( String args[] ) { + robots = 0; + list = new List(); + frame = new Frame(); + frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); + frame.setSize( 350, 150 ); + frame.setVisible( true ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0.1/src/Robot.java b/robottino/all_versions/v4.0.1/src/Robot.java new file mode 100755 index 0000000..6a57c4d --- /dev/null +++ b/robottino/all_versions/v4.0.1/src/Robot.java @@ -0,0 +1,107 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; + +public class Robot { + public static Main main = new Main(); + boolean leftArm, rightArm, leftLeg, rightLeg; + String nomeRobot; + Robot precedenteRobot, prossimoRobot; + RobotFrame robotFrame; + Robot() { + this( false, false, false, false, "", main.list.ultimoRobot, null ); + } + Robot( String nome ) { + this ( false, false, false, false, nome, main.list.ultimoRobot, null ); + } + Robot( boolean la, boolean ra, boolean ll, boolean rl, String nome, Robot prec, Robot prox ) { + leftArm = la; + rightArm = ra; + leftLeg = ll; + rightLeg = rl; + nomeRobot = nome; + precedenteRobot = prec; + prossimoRobot = prox; + robotFrame = new RobotFrame( nome ); + robotFrame.setSize( 350, 600 ); + robotFrame.setVisible( true ); + robotFrame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE ); + robotFrame.addWindowListener( + new WindowAdapter() { + public void windowClosing( WindowEvent e ) { + int selezione = JOptionPane.showOptionDialog( Robot.this.robotFrame, "Eliminare il robottino " + Robot.this.getName() + " ?", "Robottino v4.0 - Cancellazione robottino", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" ); + if ( selezione == JOptionPane.YES_OPTION ) { + main.list.deleteRobot( Robot.this.getName() ); + robotFrame.dispose(); + } + else { + try { + Thread.currentThread().sleep( 50 ); + } catch ( Exception e2 ) {} + robotFrame.repaint(); + } + } + } + ); + } + void setLA( boolean la ) { + setPositions( la, this.rightArm, this.leftLeg, this.rightLeg ); + } + void setRA( boolean ra ) { + setPositions( this.leftArm, ra, this.leftLeg, this.rightLeg ); + } + void setLL( boolean ll ) { + setPositions( this.leftArm, this.rightArm, ll, this.rightLeg ); + } + void setRL( boolean rl ) { + setPositions( this.leftArm, this.rightArm, this.leftLeg, rl ); + } + void setPositions( boolean la, boolean ra, boolean ll, boolean rl ) { + leftArm = la; + rightArm = ra; + leftLeg = ll; + rightLeg = rl; + } + void setName( String nome ) { + nomeRobot = nome; + } + boolean getLA() { + return leftArm; + } + boolean getRA() { + return rightArm; + } + boolean getLL() { + return leftLeg; + } + boolean getRL() { + return rightLeg; + } + String getName() { + return nomeRobot; + } + Robot getNext() { + return prossimoRobot; + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0.1/src/RobotFrame.java b/robottino/all_versions/v4.0.1/src/RobotFrame.java new file mode 100755 index 0000000..df099f1 --- /dev/null +++ b/robottino/all_versions/v4.0.1/src/RobotFrame.java @@ -0,0 +1,118 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; + +public class RobotFrame extends JFrame implements ActionListener { + public static Main main; + public static RobotPanel robotPanel; + public static JMenuBar barraMenu; + public static JMenu modifica, raMenu, laMenu, rlMenu, llMenu; + public static JMenuItem raonMenuItem, raoffMenuItem, rachangeMenuItem, laonMenuItem, laoffMenuItem, lachangeMenuItem; + public static JMenuItem rlonMenuItem, rloffMenuItem, rlchangeMenuItem, llonMenuItem, lloffMenuItem, llchangeMenuItem; + RobotFrame( String titolo ) { + super ( titolo ); + robotPanel = new RobotPanel( titolo ); + raonMenuItem = new JMenuItem( "Alza" ); + laonMenuItem = new JMenuItem( "Alza" ); + rlonMenuItem = new JMenuItem( "Alza" ); + llonMenuItem = new JMenuItem( "Alza" ); + raoffMenuItem = new JMenuItem( "Abbassa" ); + laoffMenuItem = new JMenuItem( "Abbassa" ); + rloffMenuItem = new JMenuItem( "Abbassa" ); + lloffMenuItem = new JMenuItem( "Abbassa" ); + rachangeMenuItem = new JMenuItem( "Cambia posizione" ); + lachangeMenuItem = new JMenuItem( "Cambia posizione" ); + rlchangeMenuItem = new JMenuItem( "Cambia posizione" ); + llchangeMenuItem = new JMenuItem( "Cambia posizione" ); + raonMenuItem.addActionListener( this ); + raoffMenuItem.addActionListener( this ); + rachangeMenuItem.addActionListener( this ); + laonMenuItem.addActionListener( this ); + laoffMenuItem.addActionListener( this ); + lachangeMenuItem.addActionListener( this ); + rlonMenuItem.addActionListener( this ); + rloffMenuItem.addActionListener( this ); + rlchangeMenuItem.addActionListener( this ); + llonMenuItem.addActionListener( this ); + lloffMenuItem.addActionListener( this ); + llchangeMenuItem.addActionListener( this ); + raMenu = new JMenu( "Braccio destro" ); + raMenu.add( raonMenuItem ); + raMenu.add( raoffMenuItem ); + raMenu.add( rachangeMenuItem ); + laMenu = new JMenu( "Braccio sinistro" ); + laMenu.add( laonMenuItem ); + laMenu.add( laoffMenuItem ); + laMenu.add( lachangeMenuItem ); + rlMenu = new JMenu( "Gamba destra" ); + rlMenu.add( rlonMenuItem ); + rlMenu.add( rloffMenuItem ); + rlMenu.add( rlchangeMenuItem ); + llMenu = new JMenu( "Gamba sinistra" ); + llMenu.add( llonMenuItem ); + llMenu.add( lloffMenuItem ); + llMenu.add( llchangeMenuItem ); + modifica = new JMenu( "Modifica" ); + modifica.add( raMenu ); + modifica.add( laMenu ); + modifica.add( rlMenu ); + modifica.add( llMenu ); + barraMenu = new JMenuBar(); + barraMenu.add( modifica ); + setJMenuBar( barraMenu ); + add( robotPanel ); + } + public void actionPerformed( ActionEvent e ) { + esegui( e ); + } + public void esegui( ActionEvent e ) { + if ( e.getSource() == raonMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = true; + else if ( e.getSource() == raoffMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = false; + else if ( e.getSource() == rachangeMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = !main.list.getRobot( this.getTitle() ).rightArm; + else if ( e.getSource() == laonMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = true; + else if ( e.getSource() == laoffMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = false; + else if ( e.getSource() == lachangeMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = !main.list.getRobot( this.getTitle() ).leftArm; + if ( e.getSource() == rlonMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = true; + else if ( e.getSource() == rloffMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = false; + else if ( e.getSource() == rlchangeMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = !main.list.getRobot( this.getTitle() ).rightLeg; + else if ( e.getSource() == llonMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = true; + else if ( e.getSource() == lloffMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = false; + else if ( e.getSource() == llchangeMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = !main.list.getRobot( this.getTitle() ).leftLeg; + robotPanel.setImages(); + repaint(); + } + +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0.1/src/RobotPanel.java b/robottino/all_versions/v4.0.1/src/RobotPanel.java new file mode 100755 index 0000000..b66d90e --- /dev/null +++ b/robottino/all_versions/v4.0.1/src/RobotPanel.java @@ -0,0 +1,96 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.*; + +public class RobotPanel extends JPanel { + public static String nomeRobot; + public static Main main; + public static ImageIcon ra, la, rl, ll, body; + public static int rax, ray, lax, lay, rlx, rly, llx, lly; + RobotPanel( String nomeRobot ) { + this.nomeRobot = nomeRobot; + rax = 66; + ray = 248; + lax = 225; + lay = 242; + rlx = 84; + rly = 367; + llx = 148; + lly = 367; + body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) ); + ra = new ImageIcon( ClassLoader.getSystemResource( "img/raoff.gif" ) ); + la = new ImageIcon( ClassLoader.getSystemResource( "img/laoff.gif" ) ); + rl = new ImageIcon( ClassLoader.getSystemResource( "img/rloff.gif" ) ); + ll = new ImageIcon( ClassLoader.getSystemResource( "img/lloff.gif" ) ); + } + public void paint ( Graphics g ) { + super.paint( g ); + body.paintIcon( this, g, 100, 60 ); + ra.paintIcon( this, g, this.rax, this.ray ); + la.paintIcon( this, g, this.lax, this.lay ); + rl.paintIcon( this, g, this.rlx, this.rly ); + ll.paintIcon( this, g, this.llx, this.lly ); + } + public void setImages() { + if ( main.list.getRobot( nomeRobot ).rightArm ) { + this.ra = new ImageIcon( ClassLoader.getSystemResource( "img/raon.gif" ) ); + this.rax = 68; + this.ray = 128; + } + else { + this.ra = new ImageIcon( ClassLoader.getSystemResource( "img/raoff.gif" ) ); + this.rax = 66; + this.ray = 248; + } + if ( main.list.getRobot( nomeRobot ).leftArm ) { + this.la = new ImageIcon( ClassLoader.getSystemResource( "img/laon.gif" ) ); + this.lax = 224; + this.lay = 118; + } + else { + this.la = new ImageIcon( ClassLoader.getSystemResource( "img/laoff.gif" ) ); + this.lax = 225; + this.lay = 242; + } + if ( main.list.getRobot( nomeRobot ).rightLeg ) { + this.rl = new ImageIcon( ClassLoader.getSystemResource( "img/rlon.gif" ) ); + this.rlx = 84; + this.rly = 356; + } + else { + this.rl = new ImageIcon( ClassLoader.getSystemResource( "img/rloff.gif" ) ); + this.rlx = 84; + this.rly = 367; + } + if ( main.list.getRobot( nomeRobot ).leftLeg ) { + this.ll = new ImageIcon( ClassLoader.getSystemResource( "img/llon.gif" ) ); + this.llx = 140; + this.lly = 363; + } + else { + this.ll = new ImageIcon( ClassLoader.getSystemResource( "img/lloff.gif" ) ); + this.llx = 148; + this.lly = 367; + } + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0.1/src/img/birra1.jpg b/robottino/all_versions/v4.0.1/src/img/birra1.jpg new file mode 100755 index 0000000..6cbf8a8 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/birra1.jpg differ diff --git a/robottino/all_versions/v4.0.1/src/img/birra2.jpg b/robottino/all_versions/v4.0.1/src/img/birra2.jpg new file mode 100755 index 0000000..3b3caae Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/birra2.jpg differ diff --git a/robottino/all_versions/v4.0.1/src/img/birra3.jpg b/robottino/all_versions/v4.0.1/src/img/birra3.jpg new file mode 100755 index 0000000..9bc6971 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/birra3.jpg differ diff --git a/robottino/all_versions/v4.0.1/src/img/birra4.jpg b/robottino/all_versions/v4.0.1/src/img/birra4.jpg new file mode 100755 index 0000000..970f2ff Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/birra4.jpg differ diff --git a/robottino/all_versions/v4.0.1/src/img/birra5.gif b/robottino/all_versions/v4.0.1/src/img/birra5.gif new file mode 100755 index 0000000..6318d90 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/birra5.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/laoff.gif b/robottino/all_versions/v4.0.1/src/img/laoff.gif new file mode 100755 index 0000000..49d9db0 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/laoff.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/laon.gif b/robottino/all_versions/v4.0.1/src/img/laon.gif new file mode 100755 index 0000000..1880677 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/laon.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/lloff.gif b/robottino/all_versions/v4.0.1/src/img/lloff.gif new file mode 100755 index 0000000..3db1ceb Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/lloff.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/llon.gif b/robottino/all_versions/v4.0.1/src/img/llon.gif new file mode 100755 index 0000000..ab1ff75 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/llon.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/raoff.gif b/robottino/all_versions/v4.0.1/src/img/raoff.gif new file mode 100755 index 0000000..88aabc4 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/raoff.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/raon.gif b/robottino/all_versions/v4.0.1/src/img/raon.gif new file mode 100755 index 0000000..46190a8 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/raon.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/rloff.gif b/robottino/all_versions/v4.0.1/src/img/rloff.gif new file mode 100755 index 0000000..04bda22 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/rloff.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/rlon.gif b/robottino/all_versions/v4.0.1/src/img/rlon.gif new file mode 100755 index 0000000..447464b Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/rlon.gif differ diff --git a/robottino/all_versions/v4.0.1/src/img/robot.gif b/robottino/all_versions/v4.0.1/src/img/robot.gif new file mode 100755 index 0000000..db87686 Binary files /dev/null and b/robottino/all_versions/v4.0.1/src/img/robot.gif differ diff --git a/robottino/all_versions/v4.0/Robottino.jar b/robottino/all_versions/v4.0/Robottino.jar new file mode 100755 index 0000000..31b7fe8 Binary files /dev/null and b/robottino/all_versions/v4.0/Robottino.jar differ diff --git a/robottino/all_versions/v4.0/src/Frame.java b/robottino/all_versions/v4.0/src/Frame.java new file mode 100755 index 0000000..8ec087b --- /dev/null +++ b/robottino/all_versions/v4.0/src/Frame.java @@ -0,0 +1,66 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; + +public class Frame extends JFrame { + public class Listener implements ActionListener { + public void actionPerformed( ActionEvent e ) { + if ( e.getSource() == exit ) + System.exit(0); + else if ( e.getSource() == informazioni ) + JOptionPane.showMessageDialog( main.frame, "info", "Robottino v4.0 - Informazioni", JOptionPane.INFORMATION_MESSAGE ); + else if ( e.getSource() == nuovo ) { + String nome = JOptionPane.showInputDialog( main.frame, "Inserire il nome del nuovo robottino:", "Robot " + ( ++main.robots ) ); + if ( nome != null ) + main.list.newRobot( nome ); + } + } + } + public static Listener listener; + public static Main main; + public static JMenuBar barraMenu = new JMenuBar(); + public static JMenu file = new JMenu( "File" ); + public static JMenu info = new JMenu( "?" ); + public static JMenuItem exit = new JMenuItem( "Esci" ); + public static JMenuItem informazioni = new JMenuItem( "Informazioni" ); + public static JMenuItem nuovo = new JMenuItem( "Nuovo Robot" ); + public Frame() { + super( "Robottino versione 4.0" ); + listener = new Listener(); + main = new Main(); + exit.addActionListener( listener ); + exit.setMnemonic( 'E' ); + informazioni.addActionListener( listener ); + informazioni.setMnemonic( 'I' ); + nuovo.addActionListener( listener ); + nuovo.setMnemonic( 'N' ); + file.add( exit ); + file.add( nuovo ); + file.setMnemonic( 'F' ); + info.add( informazioni ); + info.setMnemonic( '?' ); + barraMenu.add( file ); + barraMenu.add( info ); + setJMenuBar( barraMenu ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0/src/List.java b/robottino/all_versions/v4.0/src/List.java new file mode 100755 index 0000000..b4f9982 --- /dev/null +++ b/robottino/all_versions/v4.0/src/List.java @@ -0,0 +1,74 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.JOptionPane; + +public class List { + public static Main main = new Main(); + public Robot primoRobot, ultimoRobot; + public List() { + primoRobot = ultimoRobot = null; + } + public boolean vuota() { + return primoRobot == null; + } + public Robot getRobot( String nome ) { + Robot i = primoRobot; + for ( ; !i.nomeRobot.equals( nome ); i = i.prossimoRobot ) ; + return i; + } + public void newRobot() { + newRobot( false, false, false, false, "" ); + } + public void newRobot( String nome ) { + newRobot( false, false, false, false, nome ); + } + public void newRobot( boolean la, boolean ra, boolean ll, boolean rl, String nome ) { + if ( vuota() ) + primoRobot = ultimoRobot = new Robot( la, ra, ll, rl, nome, null, null ); + else { + ultimoRobot = new Robot( la, ra, ll, rl, nome, ultimoRobot, null ); + ultimoRobot.precedenteRobot.prossimoRobot = ultimoRobot; + } + } + public void deleteRobot( String nome ) { + if ( vuota() ) + JOptionPane.showMessageDialog( main.frame, "Nessun robottino presente. Impossibile cancellarne uno", "Robottino v4.0 - Errore", JOptionPane.ERROR_MESSAGE ); + else { + Robot i = primoRobot; + for ( ; !i.nomeRobot.equals( nome ); i = i.prossimoRobot ) ; + if ( i.precedenteRobot != null ) + i.precedenteRobot.prossimoRobot = i.prossimoRobot; + else + primoRobot = i.prossimoRobot; + if ( i.prossimoRobot != null ) + i.prossimoRobot.precedenteRobot = i.precedenteRobot; + else + ultimoRobot = i.precedenteRobot; + } + } + public void printList() { + String lista = ""; + for ( Robot i = primoRobot; i != null; i = i.prossimoRobot ) + lista += i.getName() + " "; + JOptionPane.showMessageDialog( main.frame, lista, "Robottino v4.0 - Robottini Presenti", JOptionPane.PLAIN_MESSAGE ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0/src/Main.java b/robottino/all_versions/v4.0/src/Main.java new file mode 100755 index 0000000..4ef0206 --- /dev/null +++ b/robottino/all_versions/v4.0/src/Main.java @@ -0,0 +1,36 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.JFrame; + +public class Main { + public static int robots; + public static List list; + public static Frame frame; + public static void main ( String args[] ) { + robots = 0; + list = new List(); + frame = new Frame(); + frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); + frame.setSize( 350, 150 ); + frame.setVisible( true ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0/src/Robot.java b/robottino/all_versions/v4.0/src/Robot.java new file mode 100755 index 0000000..bf0e186 --- /dev/null +++ b/robottino/all_versions/v4.0/src/Robot.java @@ -0,0 +1,126 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; + +public class Robot { + public static Main main = new Main(); + boolean leftArm, rightArm, leftLeg, rightLeg; + String nomeRobot; + Robot precedenteRobot, prossimoRobot; + RobotFrame robotFrame; + Robot() { + this( false, false, false, false, "", main.list.ultimoRobot, null ); + } + Robot( String nome ) { + this ( false, false, false, false, nome, main.list.ultimoRobot, null ); + } + Robot( boolean la, boolean ra, boolean ll, boolean rl, String nome, Robot prec, Robot prox ) { + leftArm = la; + rightArm = ra; + leftLeg = ll; + rightLeg = rl; + nomeRobot = nome; + precedenteRobot = prec; + prossimoRobot = prox; + robotFrame = new RobotFrame( nome ); + robotFrame.setSize( 350, 550 ); + robotFrame.setVisible( true ); + robotFrame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE ); + robotFrame.addWindowListener( + new WindowAdapter() { + public void windowClosing( WindowEvent e ) { + int selezione = JOptionPane.showOptionDialog( Robot.this.robotFrame, "Eliminare il robottino " + Robot.this.getName() + " ?", "Robottino v4.0 - Cancellazione robottino", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" ); + if ( selezione == JOptionPane.YES_OPTION ) { + main.list.deleteRobot( Robot.this.getName() ); + robotFrame.dispose(); + } + else { + try { + Thread.currentThread().sleep( 50 ); + } catch ( Exception e2 ) {} + robotFrame.repaint(); + } + } + public void windowActivated( WindowEvent e ) { + robotFrame.repaint(); + } + } + ); + robotFrame.addComponentListener( + new ComponentAdapter() { + public void componentMoved( ComponentEvent e ) { + try { + Thread.currentThread().sleep( 50 ); + } catch ( Exception e2 ) {} + robotFrame.repaint(); + } + public void componentResized( ComponentEvent e ) { + try { + Thread.currentThread().sleep( 50 ); + } catch ( Exception e2 ) {} + robotFrame.repaint(); + } + } + ); + } + void setLA( boolean la ) { + setPositions( la, this.rightArm, this.leftLeg, this.rightLeg ); + } + void setRA( boolean ra ) { + setPositions( this.leftArm, ra, this.leftLeg, this.rightLeg ); + } + void setLL( boolean ll ) { + setPositions( this.leftArm, this.rightArm, ll, this.rightLeg ); + } + void setRL( boolean rl ) { + setPositions( this.leftArm, this.rightArm, this.leftLeg, rl ); + } + void setPositions( boolean la, boolean ra, boolean ll, boolean rl ) { + leftArm = la; + rightArm = ra; + leftLeg = ll; + rightLeg = rl; + } + void setName( String nome ) { + nomeRobot = nome; + } + boolean getLA() { + return leftArm; + } + boolean getRA() { + return rightArm; + } + boolean getLL() { + return leftLeg; + } + boolean getRL() { + return rightLeg; + } + String getName() { + return nomeRobot; + } + Robot getNext() { + return prossimoRobot; + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0/src/RobotFrame.java b/robottino/all_versions/v4.0/src/RobotFrame.java new file mode 100755 index 0000000..ad7067f --- /dev/null +++ b/robottino/all_versions/v4.0/src/RobotFrame.java @@ -0,0 +1,179 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; + +public class RobotFrame extends JFrame implements ActionListener { + public static int rax, ray, lax, lay, rlx, rly, llx, lly; + public static Main main; + public static ImageIcon ra, la, rl, ll, body; + public static JMenuBar barraMenu; + public static JMenu modifica, raMenu, laMenu, rlMenu, llMenu; + public static JMenuItem raonMenuItem, raoffMenuItem, rachangeMenuItem, laonMenuItem, laoffMenuItem, lachangeMenuItem; + public static JMenuItem rlonMenuItem, rloffMenuItem, rlchangeMenuItem, llonMenuItem, lloffMenuItem, llchangeMenuItem; + RobotFrame( String titolo ) { + super ( titolo ); + rax = 66; + ray = 248; + lax = 225; + lay = 242; + rlx = 84; + rly = 367; + llx = 148; + lly = 367; + ra = new ImageIcon( ClassLoader.getSystemResource( "img/raoff.gif" ) ); + la = new ImageIcon( ClassLoader.getSystemResource( "img/laoff.gif" ) ); + rl = new ImageIcon( ClassLoader.getSystemResource( "img/rloff.gif" ) ); + ll = new ImageIcon( ClassLoader.getSystemResource( "img/lloff.gif" ) ); + body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) ); + raonMenuItem = new JMenuItem( "Alza" ); + laonMenuItem = new JMenuItem( "Alza" ); + rlonMenuItem = new JMenuItem( "Alza" ); + llonMenuItem = new JMenuItem( "Alza" ); + raoffMenuItem = new JMenuItem( "Abbassa" ); + laoffMenuItem = new JMenuItem( "Abbassa" ); + rloffMenuItem = new JMenuItem( "Abbassa" ); + lloffMenuItem = new JMenuItem( "Abbassa" ); + rachangeMenuItem = new JMenuItem( "Cambia posizione" ); + lachangeMenuItem = new JMenuItem( "Cambia posizione" ); + rlchangeMenuItem = new JMenuItem( "Cambia posizione" ); + llchangeMenuItem = new JMenuItem( "Cambia posizione" ); + raonMenuItem.addActionListener( this ); + raoffMenuItem.addActionListener( this ); + rachangeMenuItem.addActionListener( this ); + laonMenuItem.addActionListener( this ); + laoffMenuItem.addActionListener( this ); + lachangeMenuItem.addActionListener( this ); + rlonMenuItem.addActionListener( this ); + rloffMenuItem.addActionListener( this ); + rlchangeMenuItem.addActionListener( this ); + llonMenuItem.addActionListener( this ); + lloffMenuItem.addActionListener( this ); + llchangeMenuItem.addActionListener( this ); + raMenu = new JMenu( "Braccio destro" ); + raMenu.add( raonMenuItem ); + raMenu.add( raoffMenuItem ); + raMenu.add( rachangeMenuItem ); + laMenu = new JMenu( "Braccio sinistro" ); + laMenu.add( laonMenuItem ); + laMenu.add( laoffMenuItem ); + laMenu.add( lachangeMenuItem ); + rlMenu = new JMenu( "Gamba destra" ); + rlMenu.add( rlonMenuItem ); + rlMenu.add( rloffMenuItem ); + rlMenu.add( rlchangeMenuItem ); + llMenu = new JMenu( "Gamba sinistra" ); + llMenu.add( llonMenuItem ); + llMenu.add( lloffMenuItem ); + llMenu.add( llchangeMenuItem ); + modifica = new JMenu( "Modifica" ); + modifica.add( raMenu ); + modifica.add( laMenu ); + modifica.add( rlMenu ); + modifica.add( llMenu ); + barraMenu = new JMenuBar(); + barraMenu.add( modifica ); + setJMenuBar( barraMenu ); + } + public void paint ( Graphics g ) { + super.paint( g ); + body.paintIcon( this, g, 100, 60 ); + ra.paintIcon( this, g, this.rax, this.ray ); + la.paintIcon( this, g, this.lax, this.lay ); + rl.paintIcon( this, g, this.rlx, this.rly ); + ll.paintIcon( this, g, this.llx, this.lly ); + } + public void actionPerformed( ActionEvent e ) { + esegui( e ); + } + public void esegui( ActionEvent e ) { + if ( e.getSource() == raonMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = true; + else if ( e.getSource() == raoffMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = false; + else if ( e.getSource() == rachangeMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = !main.list.getRobot( this.getTitle() ).rightArm; + else if ( e.getSource() == laonMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = true; + else if ( e.getSource() == laoffMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = false; + else if ( e.getSource() == lachangeMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = !main.list.getRobot( this.getTitle() ).leftArm; + if ( e.getSource() == rlonMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = true; + else if ( e.getSource() == rloffMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = false; + else if ( e.getSource() == rlchangeMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = !main.list.getRobot( this.getTitle() ).rightLeg; + else if ( e.getSource() == llonMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = true; + else if ( e.getSource() == lloffMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = false; + else if ( e.getSource() == llchangeMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = !main.list.getRobot( this.getTitle() ).leftLeg; + setImages(); + repaint(); + } + public void setImages() { + if ( main.list.getRobot( this.getTitle() ).rightArm ) { + this.ra = new ImageIcon( ClassLoader.getSystemResource( "img/raon.gif" ) ); + this.rax = 68; + this.ray = 128; + } + else { + this.ra = new ImageIcon( ClassLoader.getSystemResource( "img/raoff.gif" ) ); + this.rax = 66; + this.ray = 248; + } + if ( main.list.getRobot( this.getTitle() ).leftArm ) { + this.la = new ImageIcon( ClassLoader.getSystemResource( "img/laon.gif" ) ); + this.lax = 224; + this.lay = 118; + } + else { + this.la = new ImageIcon( ClassLoader.getSystemResource( "img/laoff.gif" ) ); + this.lax = 225; + this.lay = 242; + } + if ( main.list.getRobot( this.getTitle() ).rightLeg ) { + this.rl = new ImageIcon( ClassLoader.getSystemResource( "img/rlon.gif" ) ); + this.rlx = 84; + this.rly = 356; + } + else { + this.rl = new ImageIcon( ClassLoader.getSystemResource( "img/rloff.gif" ) ); + this.rlx = 84; + this.rly = 367; + } + if ( main.list.getRobot( this.getTitle() ).leftLeg ) { + this.ll = new ImageIcon( ClassLoader.getSystemResource( "img/llon.gif" ) ); + this.llx = 140; + this.lly = 363; + } + else { + this.ll = new ImageIcon( ClassLoader.getSystemResource( "img/lloff.gif" ) ); + this.llx = 148; + this.lly = 367; + } + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.0/src/img/laoff.gif b/robottino/all_versions/v4.0/src/img/laoff.gif new file mode 100755 index 0000000..49d9db0 Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/laoff.gif differ diff --git a/robottino/all_versions/v4.0/src/img/laon.gif b/robottino/all_versions/v4.0/src/img/laon.gif new file mode 100755 index 0000000..1880677 Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/laon.gif differ diff --git a/robottino/all_versions/v4.0/src/img/lloff.gif b/robottino/all_versions/v4.0/src/img/lloff.gif new file mode 100755 index 0000000..3db1ceb Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/lloff.gif differ diff --git a/robottino/all_versions/v4.0/src/img/llon.gif b/robottino/all_versions/v4.0/src/img/llon.gif new file mode 100755 index 0000000..ab1ff75 Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/llon.gif differ diff --git a/robottino/all_versions/v4.0/src/img/raoff.gif b/robottino/all_versions/v4.0/src/img/raoff.gif new file mode 100755 index 0000000..88aabc4 Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/raoff.gif differ diff --git a/robottino/all_versions/v4.0/src/img/raon.gif b/robottino/all_versions/v4.0/src/img/raon.gif new file mode 100755 index 0000000..46190a8 Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/raon.gif differ diff --git a/robottino/all_versions/v4.0/src/img/rloff.gif b/robottino/all_versions/v4.0/src/img/rloff.gif new file mode 100755 index 0000000..04bda22 Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/rloff.gif differ diff --git a/robottino/all_versions/v4.0/src/img/rlon.gif b/robottino/all_versions/v4.0/src/img/rlon.gif new file mode 100755 index 0000000..447464b Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/rlon.gif differ diff --git a/robottino/all_versions/v4.0/src/img/robot.gif b/robottino/all_versions/v4.0/src/img/robot.gif new file mode 100755 index 0000000..db87686 Binary files /dev/null and b/robottino/all_versions/v4.0/src/img/robot.gif differ diff --git a/robottino/all_versions/v4.1/Robottino.jar b/robottino/all_versions/v4.1/Robottino.jar new file mode 100755 index 0000000..61de888 Binary files /dev/null and b/robottino/all_versions/v4.1/Robottino.jar differ diff --git a/robottino/all_versions/v4.1/license.txt b/robottino/all_versions/v4.1/license.txt new file mode 100755 index 0000000..3912109 --- /dev/null +++ b/robottino/all_versions/v4.1/license.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/robottino/all_versions/v4.1/src/Frame.java b/robottino/all_versions/v4.1/src/Frame.java new file mode 100755 index 0000000..a5283c1 --- /dev/null +++ b/robottino/all_versions/v4.1/src/Frame.java @@ -0,0 +1,66 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; + +public class Frame extends JFrame { + public static Listener listener; + public static Main main; + public static JMenuBar barraMenu = new JMenuBar(); + public static JMenu file = new JMenu( "File" ); + public static JMenu info = new JMenu( "?" ); + public static JMenuItem exit = new JMenuItem( "Esci" ); + public static JMenuItem informazioni = new JMenuItem( "Informazioni" ); + public static JMenuItem nuovo = new JMenuItem( "Nuovo Robot" ); + public Frame() { + super( "Robottino versione 4.1" ); + listener = new Listener(); + main = new Main(); + exit.addActionListener( listener ); + exit.setMnemonic( 'E' ); + informazioni.addActionListener( listener ); + informazioni.setMnemonic( 'I' ); + nuovo.addActionListener( listener ); + nuovo.setMnemonic( 'N' ); + file.add( exit ); + file.add( nuovo ); + file.setMnemonic( 'F' ); + info.add( informazioni ); + info.setMnemonic( '?' ); + barraMenu.add( file ); + barraMenu.add( info ); + setJMenuBar( barraMenu ); + } + public class Listener implements ActionListener { + public void actionPerformed( ActionEvent e ) { + if ( e.getSource() == exit ) + System.exit(0); + else if ( e.getSource() == informazioni ) + JOptionPane.showMessageDialog( main.frame, "info", "Robottino v4.1 - Informazioni", JOptionPane.INFORMATION_MESSAGE ); + else if ( e.getSource() == nuovo ) { + String nome = JOptionPane.showInputDialog( main.frame, "Inserire il nome del nuovo robottino:", "Robot " + ( ++main.robots ) ); + if ( nome != null ) + main.list.newRobot( nome ); + } + } + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.1/src/List.java b/robottino/all_versions/v4.1/src/List.java new file mode 100755 index 0000000..13a8ab6 --- /dev/null +++ b/robottino/all_versions/v4.1/src/List.java @@ -0,0 +1,74 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.JOptionPane; + +public class List { + public static Main main = new Main(); + public Robot primoRobot, ultimoRobot; + public List() { + primoRobot = ultimoRobot = null; + } + public boolean vuota() { + return primoRobot == null; + } + public Robot getRobot( String nome ) { + Robot i = primoRobot; + for ( ; !i.nomeRobot.equals( nome ); i = i.prossimoRobot ) ; + return i; + } + public void newRobot() { + newRobot( false, false, false, false, "" ); + } + public void newRobot( String nome ) { + newRobot( false, false, false, false, nome ); + } + public void newRobot( boolean la, boolean ra, boolean ll, boolean rl, String nome ) { + if ( vuota() ) + primoRobot = ultimoRobot = new Robot( la, ra, ll, rl, nome, null, null ); + else { + ultimoRobot = new Robot( la, ra, ll, rl, nome, ultimoRobot, null ); + ultimoRobot.precedenteRobot.prossimoRobot = ultimoRobot; + } + } + public void deleteRobot( String nome ) { + if ( vuota() ) + JOptionPane.showMessageDialog( main.frame, "Nessun robottino presente. Impossibile cancellarne uno", "Robottino v4.1 - Errore", JOptionPane.ERROR_MESSAGE ); + else { + Robot i = primoRobot; + for ( ; !i.nomeRobot.equals( nome ); i = i.prossimoRobot ) ; + if ( i.precedenteRobot != null ) + i.precedenteRobot.prossimoRobot = i.prossimoRobot; + else + primoRobot = i.prossimoRobot; + if ( i.prossimoRobot != null ) + i.prossimoRobot.precedenteRobot = i.precedenteRobot; + else + ultimoRobot = i.precedenteRobot; + } + } + public void printList() { + String lista = ""; + for ( Robot i = primoRobot; i != null; i = i.prossimoRobot ) + lista += i.getName() + " "; + JOptionPane.showMessageDialog( main.frame, lista, "Robottino v4.1 - Robottini Presenti", JOptionPane.PLAIN_MESSAGE ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.1/src/Main.java b/robottino/all_versions/v4.1/src/Main.java new file mode 100755 index 0000000..4ef0206 --- /dev/null +++ b/robottino/all_versions/v4.1/src/Main.java @@ -0,0 +1,36 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.JFrame; + +public class Main { + public static int robots; + public static List list; + public static Frame frame; + public static void main ( String args[] ) { + robots = 0; + list = new List(); + frame = new Frame(); + frame.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE ); + frame.setSize( 350, 150 ); + frame.setVisible( true ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.1/src/Robot.java b/robottino/all_versions/v4.1/src/Robot.java new file mode 100755 index 0000000..c52f29c --- /dev/null +++ b/robottino/all_versions/v4.1/src/Robot.java @@ -0,0 +1,101 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; + +public class Robot { + public static Main main = new Main(); + boolean leftArm, rightArm, leftLeg, rightLeg; + String nomeRobot; + Robot precedenteRobot, prossimoRobot; + RobotFrame robotFrame; + Robot() { + this( false, false, false, false, "", main.list.ultimoRobot, null ); + } + Robot( String nome ) { + this ( false, false, false, false, nome, main.list.ultimoRobot, null ); + } + Robot( boolean la, boolean ra, boolean ll, boolean rl, String nome, Robot prec, Robot prox ) { + leftArm = la; + rightArm = ra; + leftLeg = ll; + rightLeg = rl; + nomeRobot = nome; + precedenteRobot = prec; + prossimoRobot = prox; + robotFrame = new RobotFrame( nome ); + robotFrame.setSize( 350, 600 ); + robotFrame.setVisible( true ); + robotFrame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE ); + robotFrame.addWindowListener( + new WindowAdapter() { + public void windowClosing( WindowEvent e ) { + int selezione = JOptionPane.showOptionDialog( Robot.this.robotFrame, "Eliminare il robottino " + Robot.this.getName() + " ?", "Robottino v4.1 - Cancellazione robottino", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" ); + if ( selezione == JOptionPane.YES_OPTION ) { + main.list.deleteRobot( Robot.this.getName() ); + robotFrame.dispose(); + } + } + } + ); + } + void setLA( boolean la ) { + setPositions( la, this.rightArm, this.leftLeg, this.rightLeg ); + } + void setRA( boolean ra ) { + setPositions( this.leftArm, ra, this.leftLeg, this.rightLeg ); + } + void setLL( boolean ll ) { + setPositions( this.leftArm, this.rightArm, ll, this.rightLeg ); + } + void setRL( boolean rl ) { + setPositions( this.leftArm, this.rightArm, this.leftLeg, rl ); + } + void setPositions( boolean la, boolean ra, boolean ll, boolean rl ) { + this.leftArm = la; + this.rightArm = ra; + this.leftLeg = ll; + this.rightLeg = rl; + } + void setName( String nome ) { + nomeRobot = nome; + } + boolean getLA() { + return leftArm; + } + boolean getRA() { + return rightArm; + } + boolean getLL() { + return leftLeg; + } + boolean getRL() { + return rightLeg; + } + String getName() { + return nomeRobot; + } + Robot getNext() { + return prossimoRobot; + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.1/src/RobotFrame.java b/robottino/all_versions/v4.1/src/RobotFrame.java new file mode 100755 index 0000000..c8cbf13 --- /dev/null +++ b/robottino/all_versions/v4.1/src/RobotFrame.java @@ -0,0 +1,312 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; + +public class RobotFrame extends JFrame implements ActionListener { + public static int numeroCopie, i; + public static Main main; + public static RobotPanel robotPanel; + public static Timer timer; + public static JMenuBar barraMenu; + public static JMenu file, modifica, azioni, info, raMenu, laMenu, rlMenu, llMenu; + public static JMenuItem raonMenuItem, raoffMenuItem, rachangeMenuItem, laonMenuItem, laoffMenuItem, lachangeMenuItem; + public static JMenuItem rlonMenuItem, rloffMenuItem, rlchangeMenuItem, llonMenuItem, lloffMenuItem, llchangeMenuItem; + public static JMenuItem rinomina, elimina, duplica, birra, balla, esplodi, informazioni; + RobotFrame( String titolo ) { + super ( titolo ); + numeroCopie = 0; + robotPanel = new RobotPanel( titolo ); + rinomina = new JMenuItem( "Cambia nome" ); + elimina = new JMenuItem( "Elimina" ); + duplica = new JMenuItem( "Duplica robot" ); + birra = new JMenuItem( "Birra" ); + balla = new JMenuItem( "Balla" ); + esplodi = new JMenuItem( "Esplodi" ); + informazioni = new JMenuItem( "Informazioni" ); + raonMenuItem = new JMenuItem( "Alza" ); + laonMenuItem = new JMenuItem( "Alza" ); + rlonMenuItem = new JMenuItem( "Alza" ); + llonMenuItem = new JMenuItem( "Alza" ); + raoffMenuItem = new JMenuItem( "Abbassa" ); + laoffMenuItem = new JMenuItem( "Abbassa" ); + rloffMenuItem = new JMenuItem( "Abbassa" ); + lloffMenuItem = new JMenuItem( "Abbassa" ); + rachangeMenuItem = new JMenuItem( "Cambia posizione" ); + lachangeMenuItem = new JMenuItem( "Cambia posizione" ); + rlchangeMenuItem = new JMenuItem( "Cambia posizione" ); + llchangeMenuItem = new JMenuItem( "Cambia posizione" ); + rinomina.addActionListener( this ); + elimina.addActionListener( this ); + duplica.addActionListener( this ); + birra.addActionListener( this ); + balla.addActionListener( this ); + esplodi.addActionListener( this ); + informazioni.addActionListener( this ); + raonMenuItem.addActionListener( this ); + raoffMenuItem.addActionListener( this ); + rachangeMenuItem.addActionListener( this ); + laonMenuItem.addActionListener( this ); + laoffMenuItem.addActionListener( this ); + lachangeMenuItem.addActionListener( this ); + rlonMenuItem.addActionListener( this ); + rloffMenuItem.addActionListener( this ); + rlchangeMenuItem.addActionListener( this ); + llonMenuItem.addActionListener( this ); + lloffMenuItem.addActionListener( this ); + llchangeMenuItem.addActionListener( this ); + raMenu = new JMenu( "Braccio destro" ); + raMenu.add( raonMenuItem ); + raMenu.add( raoffMenuItem ); + raMenu.add( rachangeMenuItem ); + laMenu = new JMenu( "Braccio sinistro" ); + laMenu.add( laonMenuItem ); + laMenu.add( laoffMenuItem ); + laMenu.add( lachangeMenuItem ); + rlMenu = new JMenu( "Gamba destra" ); + rlMenu.add( rlonMenuItem ); + rlMenu.add( rloffMenuItem ); + rlMenu.add( rlchangeMenuItem ); + llMenu = new JMenu( "Gamba sinistra" ); + llMenu.add( llonMenuItem ); + llMenu.add( lloffMenuItem ); + llMenu.add( llchangeMenuItem ); + modifica = new JMenu( "Modifica" ); + modifica.add( raMenu ); + modifica.add( laMenu ); + modifica.add( rlMenu ); + modifica.add( llMenu ); + file = new JMenu( "File" ); + file.add( rinomina ); + file.add( duplica ); + file.add( elimina ); + azioni = new JMenu( "Azioni" ); + azioni.add( birra ); + azioni.add( balla ); + azioni.add( esplodi ); + info = new JMenu( "?" ); + info.add( informazioni ); + barraMenu = new JMenuBar(); + barraMenu.add( file ); + barraMenu.add( azioni ); + barraMenu.add( modifica ); + barraMenu.add( info ); + setJMenuBar( barraMenu ); + add( robotPanel ); + } + public void actionPerformed( ActionEvent e ) { + esegui( e ); + } + public void esegui( ActionEvent e ) { + if ( e.getSource() == raonMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = true; + else if ( e.getSource() == raoffMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = false; + else if ( e.getSource() == rachangeMenuItem ) + main.list.getRobot( this.getTitle() ).rightArm = !main.list.getRobot( this.getTitle() ).rightArm; + else if ( e.getSource() == laonMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = true; + else if ( e.getSource() == laoffMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = false; + else if ( e.getSource() == lachangeMenuItem ) + main.list.getRobot( this.getTitle() ).leftArm = !main.list.getRobot( this.getTitle() ).leftArm; + else if ( e.getSource() == rlonMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = true; + else if ( e.getSource() == rloffMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = false; + else if ( e.getSource() == rlchangeMenuItem ) + main.list.getRobot( this.getTitle() ).rightLeg = !main.list.getRobot( this.getTitle() ).rightLeg; + else if ( e.getSource() == llonMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = true; + else if ( e.getSource() == lloffMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = false; + else if ( e.getSource() == llchangeMenuItem ) + main.list.getRobot( this.getTitle() ).leftLeg = !main.list.getRobot( this.getTitle() ).leftLeg; + else if ( e.getSource() == rinomina ) { + String newName = JOptionPane.showInputDialog( this, "Inserire il nuovo nome per questo robot:", this.getTitle() ); + if ( newName != null ) { + main.list.getRobot( this.getTitle() ).setName( newName ); + this.setTitle( newName ); + robotPanel.nomeRobot = newName; + } + } + else if ( e.getSource() == elimina ) { + 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" ); + if ( selezione == JOptionPane.YES_OPTION ) { + main.list.deleteRobot( this.getTitle() ); + this.dispose(); + } + } + else if ( e.getSource() == duplica ) { + String newName = JOptionPane.showInputDialog( this, "Inserire il nome per il nuovo robot:", this.getTitle() + " #" + (++numeroCopie) ); + if ( newName != null ) { + 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 ); + } + } + else if ( e.getSource() == birra ) { + ImageIcon birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra5.gif" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra ); + birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra1.jpg" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra ); + birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra2.jpg" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra ); + birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra3.jpg" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra ); + birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra4.jpg" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, birra ); + JOptionPane.showMessageDialog( this, "Che bevuta!", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE ); + JOptionPane.showMessageDialog( this, "Buuuuuuurp!", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE ); + robotPanel.body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) ); + } + else if ( e.getSource() == balla ) { + this.i = 0; + main.list.getRobot( this.getTitle() ).setPositions( false, false, false, false ); + timer = new Timer( 250, + new ActionListener() { + public void actionPerformed( ActionEvent e ) { + RobotFrame.this.i++; + switch( RobotFrame.this.i ) { + case 1: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setRA( true ); + break; + case 2: + break; + case 3: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setLA( true ); + break; + case 4: + break; + case 5: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, true ); + break; + case 6: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, true, false, false ); + break; + case 7: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, true, false ); + break; + case 8: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, true, false, false ); + break; + case 9: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, false, false, true ); + break; + case 10: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, false ); + break; + case 11: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, false, false, true ); + break; + case 12: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, true, true, false ); + break; + case 13: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, false ); + break; + case 14: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, true, true, false ); + break; + case 15: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, false ); + break; + case 16: + break; + case 17: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, true, false ); + break; + case 18: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, true ); + break; + case 19: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, true, false ); + break; + case 20: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, true ); + break; + case 21: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, true, false ); + break; + case 22: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, true ); + break; + case 23: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( true, true, true, true ); + break; + case 24: + break; + case 25: + break; + case 26: + RobotFrame.main.list.getRobot( RobotFrame.this.getTitle() ).setPositions( false, false, false, false ); + break; + case 27: + JOptionPane.showMessageDialog( RobotFrame.this, "Cha fatica!", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE ); + JOptionPane.showMessageDialog( RobotFrame.this, RobotFrame.this.getTitle() + " è tornato alla posizione di partenza", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE ); + break; + default: + timer.stop(); + break; + } + RobotFrame.robotPanel.setImages(); + RobotFrame.robotPanel.repaint(); + RobotFrame.this.repaint(); + } + } + ); + timer.start(); + } + if ( e.getSource() == esplodi ) { + String aux = this.getTitle(); + main.list.deleteRobot( this.getTitle() ); + this.dispose(); + ImageIcon boom = new ImageIcon( ClassLoader.getSystemResource( "img/boom.png" ) ); + JOptionPane.showMessageDialog( null, "", "Robottino v4.1", JOptionPane.PLAIN_MESSAGE, boom ); + JOptionPane.showMessageDialog( null, aux + " si è autodistrutto!", "Robottino v4.1", JOptionPane.WARNING_MESSAGE ); + } + if ( e.getSource() == informazioni ) { + String aux = this.getTitle() + ":\n\n"; + if ( main.list.getRobot( RobotFrame.this.getTitle() ).rightArm ) + aux += "Braccio destro: alzato\n"; + else + aux += "Braccio destro: abbassato\n"; + if ( main.list.getRobot( RobotFrame.this.getTitle() ).leftArm ) + aux += "Braccio sinistro: alzato\n"; + else + aux += "Braccio sinistro: abbassato\n"; + if ( main.list.getRobot( RobotFrame.this.getTitle() ).rightLeg ) + aux += "Gamba destra: alzata\n"; + else + aux += "Gamba destra: abbassata\n"; + if ( main.list.getRobot( RobotFrame.this.getTitle() ).leftLeg ) + aux += "Gamba sinistra: alzata\n"; + else + aux += "Gamba sinistra: abbassata\n"; + JOptionPane.showMessageDialog( this, aux, "Robottino - v4.1", JOptionPane.INFORMATION_MESSAGE ); + } + try { + robotPanel.setImages(); + robotPanel.repaint(); + repaint(); + } catch ( NullPointerException n ) { } + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.1/src/RobotPanel.java b/robottino/all_versions/v4.1/src/RobotPanel.java new file mode 100755 index 0000000..b66d90e --- /dev/null +++ b/robottino/all_versions/v4.1/src/RobotPanel.java @@ -0,0 +1,96 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.*; + +public class RobotPanel extends JPanel { + public static String nomeRobot; + public static Main main; + public static ImageIcon ra, la, rl, ll, body; + public static int rax, ray, lax, lay, rlx, rly, llx, lly; + RobotPanel( String nomeRobot ) { + this.nomeRobot = nomeRobot; + rax = 66; + ray = 248; + lax = 225; + lay = 242; + rlx = 84; + rly = 367; + llx = 148; + lly = 367; + body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) ); + ra = new ImageIcon( ClassLoader.getSystemResource( "img/raoff.gif" ) ); + la = new ImageIcon( ClassLoader.getSystemResource( "img/laoff.gif" ) ); + rl = new ImageIcon( ClassLoader.getSystemResource( "img/rloff.gif" ) ); + ll = new ImageIcon( ClassLoader.getSystemResource( "img/lloff.gif" ) ); + } + public void paint ( Graphics g ) { + super.paint( g ); + body.paintIcon( this, g, 100, 60 ); + ra.paintIcon( this, g, this.rax, this.ray ); + la.paintIcon( this, g, this.lax, this.lay ); + rl.paintIcon( this, g, this.rlx, this.rly ); + ll.paintIcon( this, g, this.llx, this.lly ); + } + public void setImages() { + if ( main.list.getRobot( nomeRobot ).rightArm ) { + this.ra = new ImageIcon( ClassLoader.getSystemResource( "img/raon.gif" ) ); + this.rax = 68; + this.ray = 128; + } + else { + this.ra = new ImageIcon( ClassLoader.getSystemResource( "img/raoff.gif" ) ); + this.rax = 66; + this.ray = 248; + } + if ( main.list.getRobot( nomeRobot ).leftArm ) { + this.la = new ImageIcon( ClassLoader.getSystemResource( "img/laon.gif" ) ); + this.lax = 224; + this.lay = 118; + } + else { + this.la = new ImageIcon( ClassLoader.getSystemResource( "img/laoff.gif" ) ); + this.lax = 225; + this.lay = 242; + } + if ( main.list.getRobot( nomeRobot ).rightLeg ) { + this.rl = new ImageIcon( ClassLoader.getSystemResource( "img/rlon.gif" ) ); + this.rlx = 84; + this.rly = 356; + } + else { + this.rl = new ImageIcon( ClassLoader.getSystemResource( "img/rloff.gif" ) ); + this.rlx = 84; + this.rly = 367; + } + if ( main.list.getRobot( nomeRobot ).leftLeg ) { + this.ll = new ImageIcon( ClassLoader.getSystemResource( "img/llon.gif" ) ); + this.llx = 140; + this.lly = 363; + } + else { + this.ll = new ImageIcon( ClassLoader.getSystemResource( "img/lloff.gif" ) ); + this.llx = 148; + this.lly = 367; + } + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.1/src/img/birra1.jpg b/robottino/all_versions/v4.1/src/img/birra1.jpg new file mode 100755 index 0000000..6cbf8a8 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/birra1.jpg differ diff --git a/robottino/all_versions/v4.1/src/img/birra2.jpg b/robottino/all_versions/v4.1/src/img/birra2.jpg new file mode 100755 index 0000000..3b3caae Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/birra2.jpg differ diff --git a/robottino/all_versions/v4.1/src/img/birra3.jpg b/robottino/all_versions/v4.1/src/img/birra3.jpg new file mode 100755 index 0000000..9bc6971 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/birra3.jpg differ diff --git a/robottino/all_versions/v4.1/src/img/birra4.jpg b/robottino/all_versions/v4.1/src/img/birra4.jpg new file mode 100755 index 0000000..970f2ff Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/birra4.jpg differ diff --git a/robottino/all_versions/v4.1/src/img/birra5.gif b/robottino/all_versions/v4.1/src/img/birra5.gif new file mode 100755 index 0000000..6318d90 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/birra5.gif differ diff --git a/robottino/all_versions/v4.1/src/img/boom.png b/robottino/all_versions/v4.1/src/img/boom.png new file mode 100755 index 0000000..59b507a Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/boom.png differ diff --git a/robottino/all_versions/v4.1/src/img/laoff.gif b/robottino/all_versions/v4.1/src/img/laoff.gif new file mode 100755 index 0000000..49d9db0 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/laoff.gif differ diff --git a/robottino/all_versions/v4.1/src/img/laon.gif b/robottino/all_versions/v4.1/src/img/laon.gif new file mode 100755 index 0000000..1880677 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/laon.gif differ diff --git a/robottino/all_versions/v4.1/src/img/lloff.gif b/robottino/all_versions/v4.1/src/img/lloff.gif new file mode 100755 index 0000000..3db1ceb Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/lloff.gif differ diff --git a/robottino/all_versions/v4.1/src/img/llon.gif b/robottino/all_versions/v4.1/src/img/llon.gif new file mode 100755 index 0000000..ab1ff75 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/llon.gif differ diff --git a/robottino/all_versions/v4.1/src/img/raoff.gif b/robottino/all_versions/v4.1/src/img/raoff.gif new file mode 100755 index 0000000..88aabc4 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/raoff.gif differ diff --git a/robottino/all_versions/v4.1/src/img/raon.gif b/robottino/all_versions/v4.1/src/img/raon.gif new file mode 100755 index 0000000..46190a8 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/raon.gif differ diff --git a/robottino/all_versions/v4.1/src/img/rloff.gif b/robottino/all_versions/v4.1/src/img/rloff.gif new file mode 100755 index 0000000..04bda22 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/rloff.gif differ diff --git a/robottino/all_versions/v4.1/src/img/rlon.gif b/robottino/all_versions/v4.1/src/img/rlon.gif new file mode 100755 index 0000000..447464b Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/rlon.gif differ diff --git a/robottino/all_versions/v4.1/src/img/robot.gif b/robottino/all_versions/v4.1/src/img/robot.gif new file mode 100755 index 0000000..db87686 Binary files /dev/null and b/robottino/all_versions/v4.1/src/img/robot.gif differ diff --git a/robottino/all_versions/v4.2/Robottino.jar b/robottino/all_versions/v4.2/Robottino.jar new file mode 100755 index 0000000..a3dc9e7 Binary files /dev/null and b/robottino/all_versions/v4.2/Robottino.jar differ diff --git a/robottino/all_versions/v4.2/license.txt b/robottino/all_versions/v4.2/license.txt new file mode 100755 index 0000000..3912109 --- /dev/null +++ b/robottino/all_versions/v4.2/license.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/robottino/all_versions/v4.2/src/Frame.java b/robottino/all_versions/v4.2/src/Frame.java new file mode 100755 index 0000000..6015c41 --- /dev/null +++ b/robottino/all_versions/v4.2/src/Frame.java @@ -0,0 +1,314 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; + +public class Frame extends JFrame implements ActionListener { + public static int i; + public static Main main; + public static RobotPanel robotPanel; + public static JLabel label; + public static Timer timer; + public static JMenuBar barraMenu; + public static JMenu file, modifica, azioni, info, raMenu, laMenu, rlMenu, llMenu; + public static JMenuItem raonMenuItem, raoffMenuItem, rachangeMenuItem, laonMenuItem, laoffMenuItem, lachangeMenuItem; + public static JMenuItem rlonMenuItem, rloffMenuItem, rlchangeMenuItem, llonMenuItem, lloffMenuItem, llchangeMenuItem; + public static JMenuItem rinomina, birra, balla, esplodi, informazioni, esci; + public Frame() { + super( "Robottino versione 4.2" ); + i = 0; + main = new Main(); + robotPanel = new RobotPanel(); + label = new JLabel( "Robot: " + main.robot.getName() ); + label.setFont( new Font( "Monospace", 0, 30 ) ); + barraMenu = new JMenuBar(); + rinomina = new JMenuItem( "Cambia nome" ); + birra = new JMenuItem( "Birra" ); + balla = new JMenuItem( "Balla" ); + esplodi = new JMenuItem( "Esplodi" ); + informazioni = new JMenuItem( "Informazioni" ); + esci = new JMenuItem( "Esci" ); + raonMenuItem = new JMenuItem( "Alza" ); + laonMenuItem = new JMenuItem( "Alza" ); + rlonMenuItem = new JMenuItem( "Alza" ); + llonMenuItem = new JMenuItem( "Alza" ); + raoffMenuItem = new JMenuItem( "Abbassa" ); + laoffMenuItem = new JMenuItem( "Abbassa" ); + rloffMenuItem = new JMenuItem( "Abbassa" ); + lloffMenuItem = new JMenuItem( "Abbassa" ); + rachangeMenuItem = new JMenuItem( "Cambia posizione" ); + lachangeMenuItem = new JMenuItem( "Cambia posizione" ); + rlchangeMenuItem = new JMenuItem( "Cambia posizione" ); + llchangeMenuItem = new JMenuItem( "Cambia posizione" ); + esci.addActionListener( this ); + rinomina.addActionListener( this ); + birra.addActionListener( this ); + balla.addActionListener( this ); + esplodi.addActionListener( this ); + informazioni.addActionListener( this ); + raonMenuItem.addActionListener( this ); + raoffMenuItem.addActionListener( this ); + rachangeMenuItem.addActionListener( this ); + laonMenuItem.addActionListener( this ); + laoffMenuItem.addActionListener( this ); + lachangeMenuItem.addActionListener( this ); + rlonMenuItem.addActionListener( this ); + rloffMenuItem.addActionListener( this ); + rlchangeMenuItem.addActionListener( this ); + llonMenuItem.addActionListener( this ); + lloffMenuItem.addActionListener( this ); + llchangeMenuItem.addActionListener( this ); + raMenu = new JMenu( "Braccio destro" ); + raMenu.add( raonMenuItem ); + raMenu.add( raoffMenuItem ); + raMenu.add( rachangeMenuItem ); + laMenu = new JMenu( "Braccio sinistro" ); + laMenu.add( laonMenuItem ); + laMenu.add( laoffMenuItem ); + laMenu.add( lachangeMenuItem ); + rlMenu = new JMenu( "Gamba destra" ); + rlMenu.add( rlonMenuItem ); + rlMenu.add( rloffMenuItem ); + rlMenu.add( rlchangeMenuItem ); + llMenu = new JMenu( "Gamba sinistra" ); + llMenu.add( llonMenuItem ); + llMenu.add( lloffMenuItem ); + llMenu.add( llchangeMenuItem ); + modifica = new JMenu( "Modifica" ); + modifica.add( raMenu ); + modifica.add( laMenu ); + modifica.add( rlMenu ); + modifica.add( llMenu ); + file = new JMenu( "File" ); + file.add( rinomina ); + file.add( esci ); + azioni = new JMenu( "Azioni" ); + azioni.add( birra ); + azioni.add( balla ); + azioni.add( esplodi ); + info = new JMenu( "?" ); + info.add( informazioni ); + barraMenu.add( file ); + barraMenu.add( modifica ); + barraMenu.add( azioni ); + barraMenu.add( info ); + setJMenuBar( barraMenu ); + add( robotPanel, BorderLayout.CENTER ); + add( label, BorderLayout.SOUTH ); + addWindowListener( + new WindowAdapter() { + public void windowClosing( WindowEvent e ) { + 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" ); + if ( selezione == JOptionPane.YES_OPTION ) + System.exit( 0 ); + } + } + ); + } + public void actionPerformed( ActionEvent e ) { + if ( e.getSource() == esci ) { + int selezione = JOptionPane.showOptionDialog( this, "Vuoi davvero uscire?", "Robottino v4.2", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE, null, new String[] { "Si", "No" }, "No" ); + if ( selezione == JOptionPane.YES_OPTION ) + System.exit( 0 ); + } + else if ( e.getSource() == rinomina ) { + String newName = main.robot.getName(); + newName = JOptionPane.showInputDialog( this, "Inserire il nuovo nome per il robottino:", newName ); + if ( newName != null ) { + main.robot.setName( newName ); + label .setText( "Robot: " + main.robot.getName() ); + } + } + else if ( e.getSource() == raonMenuItem ) + main.robot.setRA( true ); + else if ( e.getSource() == raoffMenuItem ) + main.robot.setRA( false ); + else if ( e.getSource() == rachangeMenuItem ) + main.robot.setRA( !main.robot.rightArm ); + else if ( e.getSource() == laonMenuItem ) + main.robot.setLA( true ); + else if ( e.getSource() == laoffMenuItem ) + main.robot.setLA( false ); + else if ( e.getSource() == lachangeMenuItem ) + main.robot.setLA( !main.robot.leftArm ); + else if ( e.getSource() == rlonMenuItem ) + main.robot.setRL( true ); + else if ( e.getSource() == rloffMenuItem ) + main.robot.setRL( false ); + else if ( e.getSource() == rlchangeMenuItem ) + main.robot.setRL( !main.robot.rightLeg ); + else if ( e.getSource() == llonMenuItem ) + main.robot.setLL( true ); + else if ( e.getSource() == lloffMenuItem ) + main.robot.setLL( false ); + else if ( e.getSource() == llchangeMenuItem ) + main.robot.setLL( !main.robot.leftLeg ); + else if ( e.getSource() == birra ) { + ImageIcon birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra5.gif" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); + birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra1.jpg" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); + birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra2.jpg" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); + birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra3.jpg" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); + birra = new ImageIcon( ClassLoader.getSystemResource( "img/birra4.jpg" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, birra ); + JOptionPane.showMessageDialog( this, "Che bevuta!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE ); + JOptionPane.showMessageDialog( this, "Buuuuuuurp!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE ); + robotPanel.body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) ); + } + if ( e.getSource() == esplodi ) { + String aux = main.robot.getName(); + main.robot.setPositions( false, false, false, false ); + main.robot.setName( "no-name" ); + label.setText( "Robot: " + main.robot.getName() ); + ImageIcon boom = new ImageIcon( ClassLoader.getSystemResource( "img/boom.png" ) ); + JOptionPane.showMessageDialog( this, "", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE, boom ); + JOptionPane.showMessageDialog( this, aux + " si è autodistrutto!", "Robottino v4.2", JOptionPane.WARNING_MESSAGE ); + JOptionPane.showMessageDialog( this, "È stato creato un nuovo robottino: " + main.robot.getName(), "Robottino v4.2", JOptionPane.INFORMATION_MESSAGE ); + } + if ( e.getSource() == informazioni ) { + String aux = main.robot.getName() + ":\n\n"; + if ( main.robot.rightArm ) + aux += "Braccio destro: alzato\n"; + else + aux += "Braccio destro: abbassato\n"; + if ( main.robot.leftArm ) + aux += "Braccio sinistro: alzato\n"; + else + aux += "Braccio sinistro: abbassato\n"; + if ( main.robot.rightLeg ) + aux += "Gamba destra: alzata\n"; + else + aux += "Gamba destra: abbassata\n"; + if ( main.robot.leftLeg ) + aux += "Gamba sinistra: alzata\n"; + else + aux += "Gamba sinistra: abbassata\n"; + JOptionPane.showMessageDialog( this, aux, "Robottino - v4.2", JOptionPane.INFORMATION_MESSAGE ); + } + else if ( e.getSource() == balla ) { + this.i = 0; + main.robot.setPositions( false, false, false, false ); + timer = new Timer( 250, + new ActionListener() { + public void actionPerformed( ActionEvent e ) { + Frame.this.i++; + switch( Frame.this.i ) { + case 1: + Frame.main.robot.setRA( true ); + break; + case 2: + break; + case 3: + Frame.main.robot.setLA( true ); + break; + case 4: + break; + case 5: + Frame.main.robot.setPositions( false, false, false, true ); + break; + case 6: + Frame.main.robot.setPositions( true, true, false, false ); + break; + case 7: + Frame.main.robot.setPositions( false, false, true, false ); + break; + case 8: + Frame.main.robot.setPositions( true, true, false, false ); + break; + case 9: + Frame.main.robot.setPositions( true, false, false, true ); + break; + case 10: + Frame.main.robot.setPositions( false, false, false, false ); + break; + case 11: + Frame.main.robot.setPositions( true, false, false, true ); + break; + case 12: + Frame.main.robot.setPositions( false, true, true, false ); + break; + case 13: + Frame.main.robot.setPositions( false, false, false, false ); + break; + case 14: + Frame.main.robot.setPositions( false, true, true, false ); + break; + case 15: + Frame.main.robot.setPositions( false, false, false, false ); + break; + case 16: + break; + case 17: + Frame.main.robot.setPositions( false, false, true, false ); + break; + case 18: + Frame.main.robot.setPositions( false, false, false, true ); + break; + case 19: + Frame.main.robot.setPositions( false, false, true, false ); + break; + case 20: + Frame.main.robot.setPositions( false, false, false, true ); + break; + case 21: + Frame.main.robot.setPositions( false, false, true, false ); + break; + case 22: + Frame.main.robot.setPositions( false, false, false, true ); + break; + case 23: + Frame.main.robot.setPositions( true, true, true, true ); + break; + case 24: + break; + case 25: + break; + case 26: + Frame.main.robot.setPositions( false, false, false, false ); + break; + case 27: + JOptionPane.showMessageDialog( Frame.this, "Cha fatica!", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE ); + JOptionPane.showMessageDialog( Frame.this, Frame.main.robot.getName() + " è tornato alla posizione di partenza", "Robottino v4.2", JOptionPane.PLAIN_MESSAGE ); + break; + default: + timer.stop(); + break; + } + Frame.this.robotPanel.setImages(); + Frame.this.robotPanel.repaint(); + Frame.this.repaint(); + } + } + ); + timer.start(); + } + try { + this.robotPanel.setImages(); + this.robotPanel.repaint(); + this.repaint(); + } catch ( NullPointerException n ) { } + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.2/src/Main.java b/robottino/all_versions/v4.2/src/Main.java new file mode 100755 index 0000000..61eecc4 --- /dev/null +++ b/robottino/all_versions/v4.2/src/Main.java @@ -0,0 +1,34 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.JFrame; + +public class Main { + public static Robot robot; + public static Frame frame; + public static void main ( String args[] ) { + robot = new Robot( "no-name" ); + frame = new Frame(); + frame.setDefaultCloseOperation( JFrame.DO_NOTHING_ON_CLOSE ); + frame.setSize( 350, 600 ); + frame.setVisible( true ); + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.2/src/Robot.java b/robottino/all_versions/v4.2/src/Robot.java new file mode 100755 index 0000000..378f2db --- /dev/null +++ b/robottino/all_versions/v4.2/src/Robot.java @@ -0,0 +1,72 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.event.*; +import java.awt.*; + +public class Robot { + boolean leftArm, rightArm, leftLeg, rightLeg; + String nomeRobot; + Robot( String nome ) { + this.leftArm = false; + this.rightArm = false; + this.leftLeg = false; + this.rightLeg = false; + this.nomeRobot = nome; + } + void setLA( boolean la ) { + setPositions( la, this.rightArm, this.leftLeg, this.rightLeg ); + } + void setRA( boolean ra ) { + setPositions( this.leftArm, ra, this.leftLeg, this.rightLeg ); + } + void setLL( boolean ll ) { + setPositions( this.leftArm, this.rightArm, ll, this.rightLeg ); + } + void setRL( boolean rl ) { + setPositions( this.leftArm, this.rightArm, this.leftLeg, rl ); + } + void setPositions( boolean la, boolean ra, boolean ll, boolean rl ) { + this.leftArm = la; + this.rightArm = ra; + this.leftLeg = ll; + this.rightLeg = rl; + } + void setName( String nome ) { + nomeRobot = nome; + } + boolean getLA() { + return leftArm; + } + boolean getRA() { + return rightArm; + } + boolean getLL() { + return leftLeg; + } + boolean getRL() { + return rightLeg; + } + String getName() { + return nomeRobot; + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.2/src/RobotPanel.java b/robottino/all_versions/v4.2/src/RobotPanel.java new file mode 100755 index 0000000..896723a --- /dev/null +++ b/robottino/all_versions/v4.2/src/RobotPanel.java @@ -0,0 +1,94 @@ +/* +Copyright 2008, 2009 Sebastiano Tronto + +This file is part of Robottino. + + Robottino is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + Robottino is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Robottino; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +*/ + +import javax.swing.*; +import java.awt.*; + +public class RobotPanel extends JPanel { + public static Main main; + public static ImageIcon ra, la, rl, ll, body; + public static int rax, ray, lax, lay, rlx, rly, llx, lly; + RobotPanel() { + rax = 66; + ray = 248; + lax = 225; + lay = 242; + rlx = 84; + rly = 367; + llx = 148; + lly = 367; + body = new ImageIcon( ClassLoader.getSystemResource( "img/robot.gif" ) ); + ra = new ImageIcon( ClassLoader.getSystemResource( "img/raoff.gif" ) ); + la = new ImageIcon( ClassLoader.getSystemResource( "img/laoff.gif" ) ); + rl = new ImageIcon( ClassLoader.getSystemResource( "img/rloff.gif" ) ); + ll = new ImageIcon( ClassLoader.getSystemResource( "img/lloff.gif" ) ); + } + public void paint ( Graphics g ) { + super.paint( g ); + body.paintIcon( this, g, 100, 60 ); + ra.paintIcon( this, g, this.rax, this.ray ); + la.paintIcon( this, g, this.lax, this.lay ); + rl.paintIcon( this, g, this.rlx, this.rly ); + ll.paintIcon( this, g, this.llx, this.lly ); + } + public void setImages() { + if ( main.robot.rightArm ) { + this.ra = new ImageIcon( ClassLoader.getSystemResource( "img/raon.gif" ) ); + this.rax = 68; + this.ray = 128; + } + else { + this.ra = new ImageIcon( ClassLoader.getSystemResource( "img/raoff.gif" ) ); + this.rax = 66; + this.ray = 248; + } + if ( main.robot.leftArm ) { + this.la = new ImageIcon( ClassLoader.getSystemResource( "img/laon.gif" ) ); + this.lax = 224; + this.lay = 118; + } + else { + this.la = new ImageIcon( ClassLoader.getSystemResource( "img/laoff.gif" ) ); + this.lax = 225; + this.lay = 242; + } + if ( main.robot.rightLeg ) { + this.rl = new ImageIcon( ClassLoader.getSystemResource( "img/rlon.gif" ) ); + this.rlx = 84; + this.rly = 356; + } + else { + this.rl = new ImageIcon( ClassLoader.getSystemResource( "img/rloff.gif" ) ); + this.rlx = 84; + this.rly = 367; + } + if ( main.robot.leftLeg ) { + this.ll = new ImageIcon( ClassLoader.getSystemResource( "img/llon.gif" ) ); + this.llx = 140; + this.lly = 363; + } + else { + this.ll = new ImageIcon( ClassLoader.getSystemResource( "img/lloff.gif" ) ); + this.llx = 148; + this.lly = 367; + } + } +} \ No newline at end of file diff --git a/robottino/all_versions/v4.2/src/img/birra1.jpg b/robottino/all_versions/v4.2/src/img/birra1.jpg new file mode 100755 index 0000000..6cbf8a8 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/birra1.jpg differ diff --git a/robottino/all_versions/v4.2/src/img/birra2.jpg b/robottino/all_versions/v4.2/src/img/birra2.jpg new file mode 100755 index 0000000..3b3caae Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/birra2.jpg differ diff --git a/robottino/all_versions/v4.2/src/img/birra3.jpg b/robottino/all_versions/v4.2/src/img/birra3.jpg new file mode 100755 index 0000000..9bc6971 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/birra3.jpg differ diff --git a/robottino/all_versions/v4.2/src/img/birra4.jpg b/robottino/all_versions/v4.2/src/img/birra4.jpg new file mode 100755 index 0000000..970f2ff Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/birra4.jpg differ diff --git a/robottino/all_versions/v4.2/src/img/birra5.gif b/robottino/all_versions/v4.2/src/img/birra5.gif new file mode 100755 index 0000000..6318d90 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/birra5.gif differ diff --git a/robottino/all_versions/v4.2/src/img/boom.png b/robottino/all_versions/v4.2/src/img/boom.png new file mode 100755 index 0000000..59b507a Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/boom.png differ diff --git a/robottino/all_versions/v4.2/src/img/laoff.gif b/robottino/all_versions/v4.2/src/img/laoff.gif new file mode 100755 index 0000000..49d9db0 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/laoff.gif differ diff --git a/robottino/all_versions/v4.2/src/img/laon.gif b/robottino/all_versions/v4.2/src/img/laon.gif new file mode 100755 index 0000000..1880677 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/laon.gif differ diff --git a/robottino/all_versions/v4.2/src/img/lloff.gif b/robottino/all_versions/v4.2/src/img/lloff.gif new file mode 100755 index 0000000..3db1ceb Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/lloff.gif differ diff --git a/robottino/all_versions/v4.2/src/img/llon.gif b/robottino/all_versions/v4.2/src/img/llon.gif new file mode 100755 index 0000000..ab1ff75 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/llon.gif differ diff --git a/robottino/all_versions/v4.2/src/img/raoff.gif b/robottino/all_versions/v4.2/src/img/raoff.gif new file mode 100755 index 0000000..88aabc4 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/raoff.gif differ diff --git a/robottino/all_versions/v4.2/src/img/raon.gif b/robottino/all_versions/v4.2/src/img/raon.gif new file mode 100755 index 0000000..46190a8 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/raon.gif differ diff --git a/robottino/all_versions/v4.2/src/img/rloff.gif b/robottino/all_versions/v4.2/src/img/rloff.gif new file mode 100755 index 0000000..04bda22 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/rloff.gif differ diff --git a/robottino/all_versions/v4.2/src/img/rlon.gif b/robottino/all_versions/v4.2/src/img/rlon.gif new file mode 100755 index 0000000..447464b Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/rlon.gif differ diff --git a/robottino/all_versions/v4.2/src/img/robot.gif b/robottino/all_versions/v4.2/src/img/robot.gif new file mode 100755 index 0000000..db87686 Binary files /dev/null and b/robottino/all_versions/v4.2/src/img/robot.gif differ -- cgit v1.3