[Delphi] plansza do gry

0

Witam
chciałem sie zapytać jak stworzyć prostą plansze do gry [do każdego elementu planszy ma być przypisana losowa wartość liczbowa a po naciśnięciu dwóch sąsiednich pól pola zamieniają sie miejscami - zgodnie z założeniami mojej gry ] [glowa]

0

Wystarczy ci TPanel (Standard) oraz rysowanie.

0

stringgrid, np wypełnij wartościami 0 i 1 przy starcie

Randomize;
for i:=0 to SrtingGrid.RowCount-1 do
  for j:=0 to SrtingGrid.ColCount-1 do
    stringGrid.cells[j,i] := inttostr(random(2));

potem zamiana

na onclik w stringgridzie

w globalnej zmiennej np klik: TPoint zapamiętaj klikniecie

klik.x := StringGrid.Col;
klik.y := StringGrid.Row;

dalszy ciąg onClick

if (StringGrid.Col in [klik.x-1..klik.x+1]) and (StringGrid.Row in [klik.y-1..klik.y+1]) then
  begin
    temp := stringGrid.cells[klik.x,klik.y];
    stringGrid.cells[klik.x,klik.y] := stringgrid.cells[StringGrid.Col,StringGrid.Row];
    stringGrid.cells[StringGrid.Col,StringGrid.Row] := temp;
  end;

powinno zadziałac, nie testowałem tego


0

JacobTheLiar pierwsza cześć działa wydaje mi sie ok
tylko z tym dalszym nie za bardzo kumam o co be
można nieco jaśniej ??

0

chodzi o to byś zapamiętał pierwsze klikniecie, tzn zapamiętał koordynaty komórek grida, a drugie kliknięcie było porównywane z pierwszym, jeżeli drugie kliknięcie jest w komórce obok to podmień wartości z tych komórek...

z tego co widzę to if powinien być wcześniej od
klik.x := StringGrid.Col;
klik.y := StringGrid.Row;

0

zrób sobie dwu wymiarową tablicę, ją wypełnij czym tam chcesz, stwórz metodę której podajesz jako argumenty współrzędne dwóch komórek a ona już z nimi coś zrobi, potem tylko w dowolny sposób ją wizualizujesz ( Line i TextOut powinno starczyć ), w zdarzeniu OnClick tego na czym jest plansza pobierasz pozycję myszy ( względną - mierzysz od lewego górnego rogu ), oba koordynaty dzielisz przez odpowiedni wymiar komórki i masz X i Y komórki, X i Y używasz do obrócenia komórek i rysujesz planszę od nowa

1 użytkowników online, w tym zalogowanych: 0, gości: 1