move_einheit implementiert

This commit is contained in:
Maximilian Wagner 2023-05-22 15:56:32 +02:00
parent 4ee16dcf06
commit a136b99ea2
2 changed files with 25 additions and 6 deletions

View File

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

View File

@ -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)
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) ).