From 35e75e86b4c54acf53b3ec796dc9abe4f590f9d0 Mon Sep 17 00:00:00 2001 From: Maximilian Wagner Date: Thu, 22 Jun 2023 23:08:33 +0200 Subject: [PATCH] =?UTF-8?q?Fix=20f=C3=BCr=20einheit=5Faction?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- debug.pl | 5 +++++ logik.pl | 19 ++++++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) 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