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]
Wystarczy ci TPanel (Standard) oraz rysowanie.
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
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 ??
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;
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