diff --git a/server/game-logic/Manager/AttackInformations/AttackInformations.java b/server/game-logic/Manager/AttackInformations/AttackInformations.java index 4239b28..059255f 100644 --- a/server/game-logic/Manager/AttackInformations/AttackInformations.java +++ b/server/game-logic/Manager/AttackInformations/AttackInformations.java @@ -1,5 +1,11 @@ package manager.attackinformations; +/** + * AttackInformations is just for the Informations of which field threw which + * Number with the current Dice, if the Attack was succesfull or not and + * if the Attack was allowed. + * **/ + public class AttackInformations{ private int attack_field_dice; private int defense_field_dice; diff --git a/server/game-logic/Manager/Field/Field.java b/server/game-logic/Manager/Field/Field.java index d08134c..fbf8d4d 100644 --- a/server/game-logic/Manager/Field/Field.java +++ b/server/game-logic/Manager/Field/Field.java @@ -2,6 +2,13 @@ package manager.field; import java.util.ArrayList; +/** + * Each Field has a number of dices on it, neighbours which they can attack + * and a owner who can be changed while the Game. + * The Neighbours can be set at the beginning of the game, so the class field + * must have an option to add a neighbour as a field. + * **/ + public class Field { private int dice_number; private ArrayList neighbours; diff --git a/server/game-logic/Manager/GameManager.java b/server/game-logic/Manager/GameManager.java index 22dfee9..47261a7 100644 --- a/server/game-logic/Manager/GameManager.java +++ b/server/game-logic/Manager/GameManager.java @@ -6,27 +6,9 @@ import manager.field.Player; import java.util.ArrayList; import java.util.Random; -class Max{ - private int max; - - public Max(int num1, int num2){ - if(num1 < num2){ - max = num1; - } - else{ - max = num2; - } - } - - public int get_max(){ - return max; - } -} - public class GameManager { private ArrayList fields; private ArrayList players; - private Player current_att_pl; private Random rand_num_gen; public GameManager(){ @@ -47,6 +29,10 @@ public class GameManager { } public AttackInformations attack_field(Field att_field, Field def_field){ + // In the following in Lines we check if the attack is allowed or not + // For this we have to check, that the field exist in our ArrayList + // Fields and that they are Neighbours. + boolean attack_allowed= false; boolean att_field_allowed = false; boolean def_field_allowed = false; @@ -60,36 +46,50 @@ public class GameManager { } } + if(att_field.get_dice_number()<= 1){ + att_field_allowed = false; + } + for(Field neigh:att_field.get_neighbours()){ if(neigh == def_field){ attack_allowed = true; + break; } } - attack_allowed = att_field_allowed && def_field_allowed && attack_allowed; + attack_allowed = att_field_allowed && def_field_allowed && attack_allowed && (att_field.get_owner() != def_field.get_owner()); AttackInformations infor; if(attack_allowed){ + // Now we know, that the Attack is allowed. + // Now we simulate the threw of the Dices. + int att_field_sum = 0; int def_field_sum = 0; - + + // The sum of all dice-threws of the attacking Field get counted here: for(int i = 0; i < att_field.get_dice_number();i++){ att_field_sum += 1 + rand_num_gen.nextInt(6); } + + // Analof the of all dice-threws of the defending Field get counted here: for(int i = 0; i < def_field.get_dice_number();i++){ def_field_sum += 1 + rand_num_gen.nextInt(6); } + // We save the Attackinformations here, so they can be given out at the end: infor = new AttackInformations(att_field_sum, def_field_sum,true); - + + // We update the Status of the different Fields in this part: if(infor.get_attack_success()){ - Max M = new Max(att_field.get_dice_number()-1,1); - def_field.set_dice_number(M.get_max()); + def_field.set_dice_number(java.lang.Math.max(att_field.get_dice_number()-1,1)); def_field.set_owner(att_field.get_owner()); } - att_field.set_dice_number(1); + else{ + att_field.set_dice_number(1); + } } else{ infor = new AttackInformations(-1,-1,false); @@ -102,15 +102,7 @@ public class GameManager { return fields; } - public void new_game(){ - fields.clear(); - - int num_fields = 20 + rand_num_gen.nextInt(10); - - int[] player_num_fields = new int[players.size()]; - - for(int x: player_num_fields){ - x = 0; - } + public void new_game(ArrayList inp){ + fields = inp; } } \ No newline at end of file diff --git a/server/game-logic/Manager/Test.java b/server/game-logic/Manager/Test.java index 57bd046..5991401 100644 --- a/server/game-logic/Manager/Test.java +++ b/server/game-logic/Manager/Test.java @@ -1,11 +1,15 @@ package manager; import manager.GameManager; +import manager.field.Field; import manager.field.Player; +import java.util.ArrayList; public class Test { public static void main(String[] args){ GameManager gm = new GameManager(); + + // Test to add Players to the Gamemanager and print them: gm.add_player("Sebastian"); gm.add_player("Lars"); gm.add_player("Nils"); @@ -13,5 +17,33 @@ public class Test { for(Player current:gm.get_players()){ System.out.println(current.get_name()); } + + // Test to add a Field-List to the Gamemanager: + ArrayList fields = new ArrayList(); + Field f1 = new Field(4,gm.get_players().get(0)); + Field f2 = new Field(3,gm.get_players().get(1)); + Field f3 = new Field(5,gm.get_players().get(2)); + f1.add_neighbour(f2); + f2.add_neighbour(f1); + fields.add(f1); + fields.add(f2); + fields.add(f3); + gm.new_game(fields); + + // Test to attack a neighboured fields: + System.out.println("\n The Owner of the First Field is:"); + System.out.println(gm.get_fields().get(0).get_owner().get_name()); + System.out.println("The Number of Dices of the First Field is:"); + System.out.println(gm.get_fields().get(0).get_dice_number()); + System.out.println("\n"); + gm.attack_field(gm.get_fields().get(1),gm.get_fields().get(0)); + + System.out.println("\n Attack Field 1 with Field 2: \n"); + + System.out.println("\n The Owner of the First Field is:"); + System.out.println(gm.get_fields().get(0).get_owner().get_name()); + System.out.println("The Number of Dices of the First Field is:"); + System.out.println(gm.get_fields().get(0).get_dice_number()); + System.out.println("\n"); } } \ No newline at end of file