[Delphi] Prosta gierka

[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

KiteK
  • Rejestracja:ponad 22 lata
  • Ostatnio:około 14 lat
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).


A mówiłem, że I'll be back :P
Artur
  • Rejestracja:około 22 lata
  • Ostatnio:ponad 5 lat
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


nav
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 2 lata
  • Lokalizacja:Warszawa
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.


utf-8 rlz! ٩(ಥ_ಥ)۶
EX
  • Rejestracja:prawie 21 lat
  • Ostatnio:około 20 lat
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.

EX
  • Rejestracja:prawie 21 lat
  • Ostatnio:około 20 lat
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/

LukaStrz
  • Rejestracja:prawie 21 lat
  • Ostatnio:ponad 7 lat
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.


Sun Certificated Java Programmer 6
migajek
  • Rejestracja:ponad 21 lat
  • Ostatnio:ponad 6 lat
  • Postów:370
0

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

Pozdrawiam

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.