diff --git a/debug.pl b/debug.pl index 42a064d..5930c9e 100644 --- a/debug.pl +++ b/debug.pl @@ -1,5 +1,10 @@ % hier kommt so debug mäßiges zeugs hin +debug_init :- + init_player1(infantry,infantry,infantry), + init_player2(infantry,infantry,infantry), + init_feld1. + print_info(Type,X,Y,HP) :- write("-------"),nl, write("Type: "), diff --git a/logik.pl b/logik.pl index cc5d124..f3527fa 100644 --- a/logik.pl +++ b/logik.pl @@ -9,6 +9,12 @@ assert( turn_action_points(1, 0) ), assert( turn_action_points(2, 0) ). +% Verhindern von "Unknown procedure" in last_turn +:- + assert( player_turn(1, -1, 0) ), + assert( player_turn(1, 0, 0) ), + assert( player_turn(2, -1, 0) ), + assert( player_turn(2, 0, 0) ). % Verändern der Player Tokens hierüber change_player_tokens(TokensNew) :- @@ -43,6 +49,9 @@ einheit_move(Xold, Yold, Xnew, Ynew) :- % Den aktuellen Spieler abfragen current_player(Player), + % Es darf keine Einheit auf dem Zielfeld bereits vorhanden sein + \+ einheit_active(_, _, Xnew, Ynew, _), + % Errechnen der verbleibenden Tokens betrag(Xold - Xnew, Xmove), betrag(Yold - Ynew, Ymove), @@ -55,9 +64,6 @@ einheit_move(Xold, Yold, Xnew, Ynew) :- % Falls der Spieler nicht genug Tokens hat wird das hier false change_player_tokens(TokensNew), - % Es darf keine Einheit auf dem Zielfeld bereits vorhanden sein - \+ einheit_active(_, _, Xnew, Ynew, _), - % Die Einheitv on der alten Position nehmen retract( einheit_active(Player, Type, Xold, Yold, Defense) ), @@ -108,8 +114,8 @@ einheit_action(Xold, Yold, Xnew, Ynew) :- !; einheit_attack(Xold, Yold, Xnew, Ynew) ), - - end_turn. + + end_turn,!. einheit_alive(AP, HP, HPnew, HPmult) :- @@ -202,6 +208,9 @@ last_turn(Turn) :- findall(X, player_turn(Player,_,X), Turns), max_member(Turn, Turns). +last_turn(Turn) :- + Turn is 0. + % der shizz hier ist nicht getestet, sollte aber funzen % Berechnet die Summe aus Tokens des aktuellen und vergangenen Zuges