From c219c9ad217fc85d2de67a1791e1ce9d2bef6aa2 Mon Sep 17 00:00:00 2001 From: xxsoca Date: Thu, 22 Jun 2023 21:05:01 +0200 Subject: [PATCH] working visual update of table and controls --- gui.pl | 79 ++++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 58 insertions(+), 21 deletions(-) diff --git a/gui.pl b/gui.pl index 87b91ba..34d96c5 100644 --- a/gui.pl +++ b/gui.pl @@ -68,38 +68,41 @@ change_cell_content(T, Row, Col, NewContent) :- send(Cell, free), send(T, append(NewContent, bold, center, center, Row, Col, blue)). -init_spielfeld(Name) :- - init_feld1, - - new(P, dialog(Name)), - send(P, size, size(230, 200)), % Fenstergröße festlegen +init_table :- + game_window(P), new(T, tabular), send(T, table_width, 200), send(T, border, 1), send(T, cell_spacing, -1), send(T, rules, all), - - % Window und Tabelle speichern - assert(game_window(P)), - assert(game_table(T)), - - spielfeld(Name), - - % Table an Spielfeld andocken send(P, append, T), + assert(game_table(T)). +init_spielfeld(Name) :- + init_feld1, - - - % Controls an Spielfeld andocken + new(P, dialog(Name)), + send(P, size, size(400, 200)), % Fenstergröße festlegen + assert(game_window(P)), + init_table, + game_table(T), show_controls(P), + + + spielfeld, + % Spielfeld öffnen send(P, open). -spielfeld(Name) :- +spielfeld :- game_window(P), + game_table(T_old), + send(T_old, free), + retract(game_table(T_old)), + init_table, game_table(T), + %T?for_all(message(@arg1?contents, equal, '1'), message(@arg1, background, red)), % Zelle 1: Rote Hintergrundfarbe % T?for_all(message(@arg1?contents, equal, '2'), message(@arg1, background, green)), % Zelle 2: Grüne Hintergrundfarbe @@ -257,16 +260,50 @@ unit_symbol_at_cell(Row, Col, Symbol) :- show_controls(D) :- new(Controls, dialog('Steuerung')), - send(Controls, size, size(200, 200)), + send(Controls, size, size(400, 300)), current_player(Player), + player_tokens(Player, Tokens), string_concat('Aktiv: Spieler ', Player, String_active_player), - + string_concat('Tokens: ', Tokens, String_tokens), % die Bausteine zur Steuerung send(Controls, append, new(Label1, label(name, String_active_player))), - send(Controls, append, button('testbutton reset',message(@prolog, reset_game))), + send(Controls, append, new(Label4, label(name, String_tokens))), + send(Controls, append, new(Label2, label(name, 'Einheit waehlen:'))), + send(Controls, append, new(FromX,text_item('X:'))), + send(Controls, append, new(FromY,text_item('Y:'))), + send(Controls, append, new(Label3, label(name, 'Bewegen nach:'))), + send(Controls, append, new(ToX,text_item('X:'))), + send(Controls, append, new(ToY,text_item('Y:'))), + send(Controls, append, button('Bestaetigen',message(@prolog, process_move_unit, FromX, FromY, ToX, ToY, Controls))), + %send(D, left, Controls), + send(Controls, open), + assert(game_control(Controls)). - send(Controls, right, D). + +update_controls :- + game_window(D), + game_control(Controls), + send(Controls, free), + abolish(game_control/1), + show_controls(D). + +process_move_unit(FromX, FromY, ToX, ToY, Controls) :- + game_control(Controls), + + + get(FromX, selection, FX), + get(FromY, selection, FY), + get(ToX, selection, TX), + get(ToY, selection, TY), + + atom_number(FX, FX2), + atom_number(FY, FY2), + atom_number(TX, TX2), + atom_number(TY, TY2), + einheit_move(FX2, FY2, TX2, TY2), + update_controls, + spielfeld. test_change :- new(D, dialog),