diff --git a/daten.pl b/daten.pl index 52a444d..408166d 100644 --- a/daten.pl +++ b/daten.pl @@ -58,20 +58,25 @@ init_feld1 :- % Setzt das Spielfeld sowie die zugewiesenen einheiten zurück reset_game :- retractall( feld(_,_,_) ), - retractall( einheit_active(_,_,_,_) ). + retractall( einheit_active(_,_,_,_) ), + retractall( player_tokens(_,_) ). % Initialisiert die Einheiten für die jeweiligen Spieler init_player(Player, Type1, Type2, Type3) :- - % der shabang ist hier damit die einheiten jeweils in den ecken spawnen + % der shabang ist hier damit die einheiten jeweils in den + % richtigen ecken spawnen playerStart(Player, X, Y), Xp1 is X + 1, + Xp2 is X + 2, + Yp1 is Y + 1, + Yp2 is Y + 2, % einheit_active(Player, Einheit Type, feldX, feldY) assert( einheit_active(Player,Type1,Xp1,Yp1) ), - assert( einheit_active(Player,Type2,Xp1,Y ) ), - assert( enemy_active(Player,Type3,X ,Yp1) ), + assert( einheit_active(Player,Type2,Xp2,Yp1) ), + assert( einheit_active(Player,Type3,Xp1,Yp2) ), % Berechnet die zustehenden Tokens pro Runde für den Spieler einheit(Type1, _,_,_, Cost1), diff --git a/logik.pl b/logik.pl index 8bedf0e..8922142 100644 --- a/logik.pl +++ b/logik.pl @@ -5,7 +5,7 @@ player_turn(Player) :- % calculate action points - calc_action_points(Player, Turncounter) + calc_action_points(Player, Turncounter), % further logic @@ -14,4 +14,18 @@ player_turn(Player) :- % save remaining ap - save_action_points(Player) \ No newline at end of file + save_action_points(Player). + + +% Bewegt die Einheit des Spielers an position Xold, Yold +% um Xmove, Ymove in die jeweilige Richtung +move_einheit(Player, Xold, Yold, Xmove, Ymove) :- + % Die Einheit entfernen + retract( einheit_active(Player, Type, Xold, Yold) ), + + % Neue position berechnen + Xnew is Xold + Xmove, + Ynew is Yold + Ymove, + + % Die Einheit an die neue Position setzen + assert( einheit_active(Player, Type, Xnew, Ynew) ). \ No newline at end of file