Dutzel / TTV-Lab2

0 stars 0 forks source link

CheckShipPlacement scheint einen Fehler zu haben. #18

Closed Dutzel closed 6 years ago

Dutzel commented 6 years ago

BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 1. false BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 2. true BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 3. false BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 4. true BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 5. true BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 6. false BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 7. true BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 8. true BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 9. true BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : 10. true BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : percentage: 70.0 BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : set color to: v

Dutzel commented 6 years ago

BattlePlan - 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA : Got a broadcast on target: EF 53 B9 4D EB 90 59 E0 98 B5 AF 73 63 2C 51 F2 76 16 AA 2C ; the hit was: true

BattlePlan - 03 65 1F 4B 14 FD 7B 5F B2 1A 71 63 F7 5A 6C BF DF F6 6A 8B : ########## Another player won the game by killing: 01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA ##########

Dutzel commented 6 years ago

Hier scheint noch ein Fehler vorzuliegen. Oben steht die Ausgabe, wie ID "01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA" direkt vorher schreibt, welche seiner Schiffe getroffen wurden.

Dort haben 3 Schiffe noch ein False, also wurden sie noch nicht getroffen --> 70% seiner Schiffe sind zerstört. (Das trifft auch teilweise bei weniger Prozent, z.B. 40% zu)

Der Spielder mit der ID "03 65 1F 4B 14 FD 7B 5F B2 1A 71 63 F7 5A 6C BF DF F6 6A 8B " behauptet aber, dass er ID "01 E3 3C 16 1B 9F AC DA F7 20 67 D4 70 77 51 8F DF 39 E5 FA" eben gekillt hat und somit der Sieger ist.

Beim lauschen auf einen Broadcast erhöhen wir bei einem hit auch die Anzahl der versunkenen Schiffe mit: this.strategy.putEnemyShipCount(source, ++count);

Möglicherweise müssen wir hier prüfen, ob an die Stelle von "target" bereits geschossen wurde, damit wir vermeiden, dass wir zwei Schüsse auf das selbe Feld zwei mal als Treffer verbuchen.

Dutzel commented 6 years ago

ich hab es in broadcast eben hiermit probiert:

if(this.strategy.getHitEnemyShips().get(source) != null){ if(this.strategy.getHitEnemyShips().get(source).contains(target)){ this.logDebug("##########ALREADY CONTAINS TARGET#############"); } }

Dabei ist mit kein Fall aufgefallen, wobei contains true liefert. Also sollten wir die auch nicht doppelt verbuchen... Möglicherweise ist diese Abfrage allerdings für den Wettkampf sinnvoll, da wir mit Implementationsfehlern der anderen rechnen sollten.

fabianHAW commented 6 years ago

Möglicherweise müssen wir hier prüfen, ob an die Stelle von "target" bereits geschossen wurde, damit wir vermeiden, dass wir zwei Schüsse auf das selbe Feld zwei mal als Treffer verbuchen.

das ist mit commit 4e633473a5ce31991e42c04c2d5a23d1730ed040 und #19 bereits gefixt und tritt so auch nicht mehr auf :)