diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 9bc1558efe2d71e330a9188ef5eb4313e0000c93..85c26899edacd99f13d00dcfbda3700e547a1677 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -66,77 +66,76 @@ <file leaf-file-name="Game.java" pinned="false" current="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/asteroids/Game.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="1168" max-vertical-offset="1683"> - <caret line="90" column="12" selection-start-line="88" selection-start-column="0" selection-end-line="94" selection-end-column="5" /> + <state vertical-scroll-proportion="0.0" vertical-offset="169" max-vertical-offset="1683"> + <caret line="81" column="24" selection-start-line="81" selection-start-column="24" selection-end-line="81" selection-end-column="24" /> <folding /> </state> </provider> </entry> </file> - <file leaf-file-name="SimpleBattle.java" pinned="false" current="true" current-in-tab="true"> - <entry file="file://$PROJECT_DIR$/src/battle/SimpleBattle.java"> + <file leaf-file-name="GameState.java" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/asteroids/GameState.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.891258" vertical-offset="1299" max-vertical-offset="2822"> - <caret line="101" column="27" selection-start-line="101" selection-start-column="27" selection-end-line="101" selection-end-column="27" /> - <folding> - <element signature="imports" expanded="true" /> - <element signature="e#2178#2190#0" expanded="true" /> - </folding> + <state vertical-scroll-proportion="0.0" vertical-offset="884" max-vertical-offset="4505"> + <caret line="38" column="0" selection-start-line="38" selection-start-column="0" selection-end-line="38" selection-end-column="0" /> + <folding /> </state> </provider> </entry> </file> - <file leaf-file-name="RotateAndShoot.java" pinned="false" current="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/src/battle/controllers/RotateAndShoot.java"> + <file leaf-file-name="GameObject.java" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/asteroids/GameObject.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="663"> - <caret line="13" column="27" selection-start-line="13" selection-start-column="13" selection-end-line="13" selection-end-column="27" /> - <folding> - <element signature="e#803#804#0" expanded="true" /> - <element signature="e#848#849#0" expanded="true" /> - </folding> + <state vertical-scroll-proportion="0.0" vertical-offset="80" max-vertical-offset="595"> + <caret line="10" column="11" selection-start-line="10" selection-start-column="11" selection-end-line="10" selection-end-column="11" /> + <folding /> </state> </provider> </entry> </file> - <file leaf-file-name="FireController.java" pinned="false" current="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/src/battle/controllers/FireController.java"> + <file leaf-file-name="SimpleBattle.java" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/battle/SimpleBattle.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="289"> - <caret line="12" column="9" selection-start-line="12" selection-start-column="9" selection-end-line="12" selection-end-column="35" /> - <folding /> + <state vertical-scroll-proportion="-37.28" vertical-offset="1125" max-vertical-offset="3451"> + <caret line="121" column="41" selection-start-line="121" selection-start-column="41" selection-end-line="121" selection-end-column="41" /> + <folding> + <element signature="imports" expanded="true" /> + <element signature="e#2258#2270#0" expanded="true" /> + </folding> </state> </provider> </entry> </file> - <file leaf-file-name="BattleController.java" pinned="false" current="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/src/battle/BattleController.java"> + <file leaf-file-name="Asteroid.java" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/asteroids/Asteroid.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="323"> + <state vertical-scroll-proportion="0.0" vertical-offset="425" max-vertical-offset="1496"> <caret line="11" column="0" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" /> - <folding /> + <folding> + <element signature="imports" expanded="true" /> + </folding> </state> </provider> </entry> </file> - <file leaf-file-name="Constants.java" pinned="false" current="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/src/asteroids/Constants.java"> + <file leaf-file-name="BattleTest.java" pinned="false" current="true" current-in-tab="true"> + <entry file="file://$PROJECT_DIR$/src/battle/BattleTest.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="306" max-vertical-offset="969"> - <caret line="22" column="17" selection-start-line="22" selection-start-column="17" selection-end-line="22" selection-end-column="17" /> - <folding /> + <state vertical-scroll-proportion="0.4291262" vertical-offset="102" max-vertical-offset="748"> + <caret line="19" column="40" selection-start-line="19" selection-start-column="40" selection-end-line="19" selection-end-column="40" /> + <folding> + <element signature="imports" expanded="true" /> + </folding> </state> </provider> </entry> </file> - <file leaf-file-name="BattleTest.java" pinned="false" current="false" current-in-tab="false"> - <entry file="file://$PROJECT_DIR$/src/battle/BattleTest.java"> + <file leaf-file-name="LiveList.java" pinned="false" current="false" current-in-tab="false"> + <entry file="file://$PROJECT_DIR$/src/asteroids/LiveList.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="748"> - <caret line="22" column="55" selection-start-line="22" selection-start-column="55" selection-end-line="22" selection-end-column="55" /> - <folding> - <element signature="imports" expanded="true" /> - </folding> + <state vertical-scroll-proportion="0.0" vertical-offset="1712" max-vertical-offset="2788"> + <caret line="130" column="22" selection-start-line="100" selection-start-column="4" selection-end-line="133" selection-end-column="5" /> + <folding /> </state> </provider> </entry> @@ -156,8 +155,8 @@ <file leaf-file-name="BattleView.java" pinned="false" current="false" current-in-tab="false"> <entry file="file://$PROJECT_DIR$/src/battle/BattleView.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1207"> - <caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" /> + <state vertical-scroll-proportion="0.0" vertical-offset="713" max-vertical-offset="1207"> + <caret line="67" column="0" selection-start-line="67" selection-start-column="0" selection-end-line="67" selection-end-column="0" /> <folding /> </state> </provider> @@ -183,12 +182,12 @@ <component name="IdeDocumentHistory"> <option name="changedFiles"> <list> - <option value="$PROJECT_DIR$/src/battle/BattleView.java" /> <option value="$PROJECT_DIR$/src/battle/NeuroShip.java" /> <option value="$PROJECT_DIR$/src/battle/controllers/FireController.java" /> <option value="$PROJECT_DIR$/src/battle/controllers/RotateAndShoot.java" /> - <option value="$PROJECT_DIR$/src/battle/BattleTest.java" /> + <option value="$PROJECT_DIR$/src/battle/BattleView.java" /> <option value="$PROJECT_DIR$/src/battle/SimpleBattle.java" /> + <option value="$PROJECT_DIR$/src/battle/BattleTest.java" /> </list> </option> </component> @@ -737,12 +736,12 @@ <workItem from="1433330738007" duration="12181000" /> <workItem from="1433701886377" duration="1612000" /> <workItem from="1433761387314" duration="12051000" /> - <workItem from="1434012781175" duration="4113000" /> + <workItem from="1434012781175" duration="4718000" /> </task> <servers /> </component> <component name="TimeTrackingManager"> - <option name="totallyTimeSpent" value="49493000" /> + <option name="totallyTimeSpent" value="50098000" /> </component> <component name="ToolWindowManager"> <frame x="-8" y="-8" width="1936" height="1056" extended-state="6" /> @@ -842,6 +841,7 @@ <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="450"> <caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" /> + <folding /> </state> </provider> </entry> @@ -973,6 +973,11 @@ <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0" vertical-offset="240" max-vertical-offset="1515"> <caret line="31" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="31" selection-end-column="0" /> + <folding> + <element signature="imports" expanded="true" /> + <element signature="e#2500#2501#0" expanded="true" /> + <element signature="e#2592#2593#0" expanded="true" /> + </folding> </state> </provider> </entry> @@ -1122,13 +1127,6 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/asteroids/GameObject.java"> - <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="525"> - <caret line="10" column="11" selection-start-line="10" selection-start-column="11" selection-end-line="10" selection-end-column="11" /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/src/asteroids/View.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0" vertical-offset="330" max-vertical-offset="1305"> @@ -1137,22 +1135,6 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/asteroids/GameState.java"> - <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="3393" max-vertical-offset="4005"> - <caret line="38" column="0" selection-start-line="38" selection-start-column="0" selection-end-line="38" selection-end-column="0" /> - <folding /> - </state> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/src/asteroids/LiveList.java"> - <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="1770" max-vertical-offset="2460"> - <caret line="153" column="0" selection-start-line="153" selection-start-column="0" selection-end-line="153" selection-end-column="0" /> - <folding /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/src/test/tdl/TDLGridTest.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1309"> @@ -1185,24 +1167,6 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/asteroids/Asteroid.java"> - <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="119" max-vertical-offset="1496"> - <caret line="11" column="0" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" /> - <folding> - <element signature="imports" expanded="true" /> - </folding> - </state> - </provider> - </entry> - <entry file="file://$PROJECT_DIR$/src/asteroids/Game.java"> - <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="1168" max-vertical-offset="1683"> - <caret line="90" column="12" selection-start-line="88" selection-start-column="0" selection-end-line="94" selection-end-column="5" /> - <folding /> - </state> - </provider> - </entry> <entry file="file://$PROJECT_DIR$/src/battle/controllers/FireController.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="289"> @@ -1238,6 +1202,24 @@ </state> </provider> </entry> + <entry file="file://$PROJECT_DIR$/src/battle/BattleMissile.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="918"> + <caret line="13" column="16" selection-start-line="13" selection-start-column="16" selection-end-line="13" selection-end-column="16" /> + <folding> + <element signature="imports" expanded="true" /> + </folding> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/battle/BattleView.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="713" max-vertical-offset="1207"> + <caret line="67" column="0" selection-start-line="67" selection-start-column="0" selection-end-line="67" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> <entry file="file://$PROJECT_DIR$/src/battle/NeuroShip.java"> <provider selected="true" editor-type-id="text-editor"> <state vertical-scroll-proportion="0.0" vertical-offset="357" max-vertical-offset="2516"> @@ -1246,41 +1228,65 @@ </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/battle/BattleTest.java"> + <entry file="file://$PROJECT_DIR$/src/asteroids/Asteroid.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="102" max-vertical-offset="748"> - <caret line="22" column="55" selection-start-line="22" selection-start-column="55" selection-end-line="22" selection-end-column="55" /> + <state vertical-scroll-proportion="0.0" vertical-offset="119" max-vertical-offset="1496"> + <caret line="11" column="0" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" /> <folding> <element signature="imports" expanded="true" /> </folding> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/battle/BattleView.java"> + <entry file="file://$PROJECT_DIR$/src/asteroids/Game.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="1207"> - <caret line="32" column="0" selection-start-line="32" selection-start-column="0" selection-end-line="32" selection-end-column="0" /> + <state vertical-scroll-proportion="0.0" vertical-offset="169" max-vertical-offset="1683"> + <caret line="81" column="24" selection-start-line="81" selection-start-column="24" selection-end-line="81" selection-end-column="24" /> <folding /> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/battle/BattleMissile.java"> + <entry file="file://$PROJECT_DIR$/src/asteroids/GameObject.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="918"> - <caret line="13" column="16" selection-start-line="13" selection-start-column="16" selection-end-line="13" selection-end-column="16" /> + <state vertical-scroll-proportion="0.0" vertical-offset="0" max-vertical-offset="525"> + <caret line="10" column="11" selection-start-line="10" selection-start-column="11" selection-end-line="10" selection-end-column="11" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/asteroids/GameState.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="3393" max-vertical-offset="4005"> + <caret line="38" column="0" selection-start-line="38" selection-start-column="0" selection-end-line="38" selection-end-column="0" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/asteroids/LiveList.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="0.0" vertical-offset="1712" max-vertical-offset="2788"> + <caret line="130" column="22" selection-start-line="100" selection-start-column="4" selection-end-line="133" selection-end-column="5" /> + <folding /> + </state> + </provider> + </entry> + <entry file="file://$PROJECT_DIR$/src/battle/SimpleBattle.java"> + <provider selected="true" editor-type-id="text-editor"> + <state vertical-scroll-proportion="-37.28" vertical-offset="1125" max-vertical-offset="3451"> + <caret line="121" column="41" selection-start-line="121" selection-start-column="41" selection-end-line="121" selection-end-column="41" /> <folding> <element signature="imports" expanded="true" /> + <element signature="e#2258#2270#0" expanded="true" /> </folding> </state> </provider> </entry> - <entry file="file://$PROJECT_DIR$/src/battle/SimpleBattle.java"> + <entry file="file://$PROJECT_DIR$/src/battle/BattleTest.java"> <provider selected="true" editor-type-id="text-editor"> - <state vertical-scroll-proportion="0.891258" vertical-offset="1299" max-vertical-offset="2822"> - <caret line="101" column="27" selection-start-line="101" selection-start-column="27" selection-end-line="101" selection-end-column="27" /> + <state vertical-scroll-proportion="0.4291262" vertical-offset="102" max-vertical-offset="748"> + <caret line="19" column="40" selection-start-line="19" selection-start-column="40" selection-end-line="19" selection-end-column="40" /> <folding> <element signature="imports" expanded="true" /> - <element signature="e#2178#2190#0" expanded="true" /> </folding> </state> </provider> diff --git a/src/battle/BattleTest.java b/src/battle/BattleTest.java index 3e5b8fa13ac8a9a794db2981cb9c0fdd376b9687..21a68d129cacd53ebd711d66d2581b54aeaa0289 100644 --- a/src/battle/BattleTest.java +++ b/src/battle/BattleTest.java @@ -17,7 +17,7 @@ public class BattleTest { public static void main(String[] args) { - NeuroShip s1 = buildShip(150,150); + NeuroShip s1 = buildShip(250,250); NeuroShip s2 = buildShip(300,300); SimpleBattle battle = new SimpleBattle(s1, s2); diff --git a/src/battle/BattleView.java b/src/battle/BattleView.java index 6d62fc553af5e6872f14ba88648bfc4ec2a31d80..c491b5fd5b4d5411b2d7cc3e80c29a22e75ae4c9 100644 --- a/src/battle/BattleView.java +++ b/src/battle/BattleView.java @@ -65,7 +65,7 @@ public class BattleView extends JComponent { // + " : " + game.list.isSafe(game.ship) + " : " + game.nLives; // FontMetrics fm = font. - String str = "Battle state goes here"; + String str = game.stats.get(0) + " " + game.stats.get(1); g.drawString(str, 10, 20); } diff --git a/src/battle/SimpleBattle.java b/src/battle/SimpleBattle.java index a24a4360ca9c6ea351531d00fbaa270617c586f5..3c84020fb4654d07018b640f89a0caa1e052afda 100644 --- a/src/battle/SimpleBattle.java +++ b/src/battle/SimpleBattle.java @@ -3,6 +3,7 @@ package battle; import asteroids.Action; import asteroids.GameObject; import asteroids.Missile; +import asteroids.Ship; import math.Vector2d; import utilities.JEasyFrame; @@ -83,6 +84,9 @@ public class SimpleBattle { s1.update(a1); s2.update(a2); + checkCollision(s1); + checkCollision(s2); + // and fire any missiles as necessary if (a1.shoot) fireMissile(s1.s, s1.d, 0); if (a2.shoot) fireMissile(s2.s, s2.d, 1); @@ -104,6 +108,39 @@ public class SimpleBattle { } } + public void checkCollision(GameObject actor) { + // check with all other game objects + // but use a hack to only consider interesting interactions + // e.g. asteroids do not collide with themselves + if (!actor.dead() && + (actor instanceof BattleMissile + || actor instanceof NeuroShip)) { + if (actor instanceof BattleMissile) { + // System.out.println("Missile: " + actor); + } + for (GameObject ob : objects) { + if (overlap(actor, ob)) { + // the object is hit, and the actor is also + + int playerID = (actor == s1 ? 1 : 0); + PlayerStats stats = this.stats.get(playerID); + stats.nPoints += 10; + return; + } + } + } + } + + private boolean overlap(GameObject actor, GameObject ob) { + if (actor.equals(ob)) { + return false; + } + // otherwise do the default check + double dist = actor.s.dist(ob.s); + boolean ret = dist < (actor.r() + ob.r()); + return ret; + } + public void sleep() { try { Thread.sleep(delay);