[Delphi] Prosta gierka

0

Witam,
chce napisac prosta gierke w Delphi, ktora by polegala na chodzeniu pionkiem po planszy i przesuwaniem klockow.
W obecnej fazie pracy uzywam z komponentu TCanvas i rysjuje cala plansze i poszczegolne elemnty.
Canvas.Draw(dx,dx, Bitmap1); gdzie dx, dy wspolrzedne wierzcholka bitmapy

Mam pionka ktory porusza sie po planszy.
Pionek jest bitmapa, przesuwam go poprzez zmiane polozenia jego wierzcholka.

Teraz chce zrobic aby podczas ruchu sprawdzalo czy np. na drodze jest sciana czy droga. I wtedy by pionek sie przesuwal albo i nie.

Jezeli ktos moze mi pomoc, to z gory dziekuje,
no chyba ze zmienic sposob rysowania tej mapy na jakis inny, dzieki ktoremu bedzie prosciej sie pracowalo.

Pozdrawiam

0

Zakładając, że masz gdzies zapisane współrzędne ściany czy innych utrudnień, to mozesz sprawdzać, czy przy kolejnym ruchu ludzika, współrzędne (dx + szerokość, dy + wysokosć) nie wejdą na jego pole (np. PtInRect).

0

Ja zrobiłem gierkę Magazynier - miłosnicy linuxa znają ją pod nazwą Sokoban - i zastosowałem DrawGRida - jak chcesz kodzik to napisz e-maila

0

mozesz zrobic 2 obrazek z samymi scianami (zeby sie od tla odroznialo) i zastosowac go jako maske. W ten sposob bedziesz mial 1 system do wielu map. Potem tylko sprawdzasz czy nie ma na masce sciany i dajesz sie przesunac.

0

Sam engine powinien opierac sie na 1 tablicy dwuwymiarowej z wartosciami typu np. Byte. Wartosc 0 oznaczalaby puste pole, 1 - skrzynke, 2 - sciane itd. Nastepnie gdy gracz chce sie przesunac na pole po prawej, sprawdzasz czy wartosc tablicy [n+1] wynosi 0 jesli tak to pionka przesuwasz.
Pozdrawiam

0

Opisze dokladniej moj problem a mianowicie:
plansza jest 15x15 , czyli sklada sie z 225 "elementow" malych bitmap ktore sa wyswietlane.
Kitek tego co proponujesz nie potrafie zrobic, bo praktycznie pionek caly czas nachodzi na jakis elemnt, a nie wiem jak zrobic zeby odroznial te elementy.

Canvas.Draw(4dx,4dy, Bitmap4);
dx,dy = 32
wspolrzedne wierzcholka tego elementu Left=128, Top=128

ta linijka wyswietla na pozycji (4,4) obrazek ze sciezka.
jak napisac jakis warunek ktory by sprawdzal co jest pod tym polem?

Mam np, przycisk ktory odpowiada za poruszanie sie pionka

if (Image5.Left<15*dx) then
begin
x:=Image5.Left;
y:=Image5.Top;
Image5.Left:=x+dx;
Image5.Top:=y;
end;

warunek zastosowany zostal w celu, zeby pionek nie wyszedl za plansze,
potem odczytuje aktualna pozycje pionka i przesuwam go w prawo.

Teraz przydalby by mi sie do tego warunek sprawdzajacy co pod tymi nowymi wspołrzednymi jest. Powiedzmy zeby jakos odczytac caption tej bitmapy, albo coklwiek co by ja identyfikowalo.

Tak jak Artur proponuje na DrawGridzie zrobic, juz ktos mi tez to proponowal, jak mi wysle zrodlo swojej gierki to zobacze, moze bedzie prosciej to wszystko zrobic.

0

Wydaje mi sie ze zwyklym sprawdzaniem wspolrzednych to nie przejdzie - musialbys wszystkie komponentu po kolei leciec i sprawdzac gdzie leza. Jednym slowem lipa. Mowie Ci zrob jedna tablice w ktorej beda zapisane polozenia wszystkich elementow.
Proponuje zapoznac sie z tym (o Tetrisie ale moze jakies wnioski wyciagniesz):
http://www.i-lo.tarnow.pl/edu/inf/prg/grylog/

0

tablice w ktorej beda zapisane polozenia wszystkich elementow.

Właśnie. To jest najlepsze rozwiązanie. i przed wykonaniem ruchu obliczasz jakie byłoby pole na które wejdzie no i jak będzie inne niż 0 to nie idzie.

0

I nie trzeba sie tyle meczyc nad rozpoznaniem skrzynki etc.

0

dziekuje za pomoc, jutro sie zabiore za ta gre i zobacze jakie beda tego skutki :)
jak bede mial jakis problem to napisze :)

Pozdrawiam

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