Fix für einheit_action

This commit is contained in:
Maximilian Wagner 2023-06-22 23:08:33 +02:00
parent e867d7037e
commit 35e75e86b4
2 changed files with 19 additions and 5 deletions

View File

@ -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: "),

View File

@ -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) ),
@ -109,7 +115,7 @@ 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