Strategiczne chodzenie

0

Siema!!
Jak zrobić, aby po kliknięciu na formę, Obrazek (TImage) zaczął się przesuwać (np. w timerze napisać aby co 500 milisekund zmieniał położenie o 1 bliżej do miejsca myszki), a kiedy już tam będzie, skończył przesuwanie??

Można by było po kliknięciu w miejscu kursora wstawić niewidoczny punkt do którego by się zbliżał Obrazek.

Dobrze by tesh było, gdyby ktoś napisał drugi kod, w którym obrazek będzie robił to co wyżej, ale tylko wtedy, jeśli przycisk myszy będzie wciśnięty, i będzie się przesuwać w kierunku myszki nie zależnie od tego, czy mysz zmieni położenie czy nie.

Dzięks.

0

Jedno pytanie o drobny szczegół: czy obrazek ma się przesuwać po linii "skośnej" czy np. najpierw w pionie do y myszki a potem w poziomie do x myszki ? W drugim przypadku jest to prostsze, przy pierwszym trzeba pokombinować trochę więcej.
Aaa i jeszcze jedno : nie za bardzo rozumiem tej ostatniej części Twojego postu. Chodzi o to, że w pierwszym programie obrazek CAŁY CZAS podąża za myszką, a w drugim po kliknięciu zapamiętywany jest punkt kliknięcia, a następnie, jęsli przycisk myszki jest wciśnięty, obrazek jest przesuwany do tego punktu ?

0

jak ma się przesuwać??
Jakkolwiek, byle by wyglądało to tak, jak we wszystkich grach strategicznych.
Możnaby jeszcze dodać, aby zmieniało obrazki, na takie jak np. Up.Picture, Down.Picture itd.

0

We wszystkich grach strategicznych? To w takim razie trzeba jeszcze wziąć pod uwagę przeszkody?

0

LOL... Gra strategiczna na kilku TImage'ach... [rotfl] Po pierwsze do tego się używa np. DelphiX, albo chociaż canvasa. Po drugie, w najprostszym przypadku trzeba zrobić jakąś tablicę dwuwymiarową, w której będą wszystkie obiekty, w tym jednostki, dopiero potem rysować wg niej.

// Dopisane

te, thnkles, wcale nie trzeba robić tablicy trójwymiarowej.
wystarczy odpowiednio oprogramować TImage'e.

A kto tu mówi o tablicy trójwymiarowej? No i spróbuj zrobić jakąś normalnie działającą grę strategiczną na Timage (zresztą nie tylko strategiczną), zobaczysz, z jaką zawrotną prędkością będzie to chodzić oraz jak będą działać kolizje.

0

W pierwszym:
Po kliknięciu program pobiera punkt położenia myszki, a Obrazek idzie do ów punktu.

W drugim:
Dopóki lewy przycisk myszy jest wciśnięty, Obrazek "idzie" tam, gdzie jest myszka, bez względu na to, czy jej pozycja się zmieniła czy nie.

P.S. No w sumie przydałoby się omijanie przeszkód, ale w tym drugim to chyba nie będzie to potrzebne.

0

te, thnkles, wcale nie trzeba robić tablicy trójwymiarowej.
wystarczy odpowiednio oprogramować TImage'e.

0

thenkles ma rację - pisanie gry strategicznej na image'ach to bzdura, ale nie wiem do końca, czy na prawdę o to chodzi autorowi... W każdym wypadku nie widzę problemu stworzenia takiego programu, o jaki chodzi na początku. TTimer, Left, Top i chyba, jeśli mnie pamięć nie mysli, obiekt TMouse, ale nie koniecznie. Można przecież w onMouseDown, onMouseMove, onMouseUp i ew. onClick nadawać odpowiednie wart. (true, false) zmiennym i potem w timerze dzięki temu sprawdzać, czy przycisk jest wciśnięty. A jeśli chodzi o przeszkody, to rzeczywiście, potrzebna jest tablica (wystarczy z 0 i 1...)

0

Witam. Jeżeli chcesz sprawdzić pozycje myszki to użyj czegoś takiego:

Mouse.CursorPos.X i Mouse.CursorPos.Y

Najlepiej by było żebyś to sprawdzał w OnMouseDown. Co do przesuwania mapy i samej gry...najlepiej będzie, jak posłuchasz się ludków co pisali wcześniej i mnie i przestaniesz bawić Image'iem bo daleko nie zajedziesz...użyj DelphiX, PowerDraw a przynajmniej Canvasa. Jak na Canvasie, to sprawdzasz to położenie mychy, a potem każesz przerysować mapę, tyle że jak np. mapa była rysowana od (0 , 0), to teraz odpowiednio rysujesz ją np. (10 , 10) albo (-10 , -10) itp. Narks

0

Sorry stary, ale napisałeś szystko to, co ja już wiem...
a teraz - mógłbyś mi odpowiedzieć na moje pytanie??

PS. Sorka koledzy że jestem taki niemiły, ale już dawno nie dostałem ŻADNEGO posta ze 100 procentową odpowiedzią...

0

niedawno bylo o rysowaniu prostej laczacej 2 dowolne pkt (to jest proste swoja droga). na pods tego mozesz wyliczyc kat i odpowiednio przesuwac jednostke. bedzie wtedy trudniej z kolizjami.

jesli grales w AoE2 (lub inne tego typu) to robiac jakas lansze musiales zauwazyc ze wszystko uklada sie w kwadraciakch, to jest taka tablica. wtedy jak ludzik trafi na pewne pole przed przeskoda komp szuka innej drogi, to zajmnie ci duzo czasu (dlatego porzucilem pomysl robienia takiej gry)

poza tym nie korzystaj z image'a. korztstaj ze zmiennych, a najlepiej tablic rekordowych, czy poszczegolnych pkt ze wsporzednymi i rysuj na canvasie (jesli chcesz bez komponentow). twoj sposob bedzie nie praktyczny, molo efektowny i spowalnial komp i gre.

ale zeby nie rysowac 360 obrazkow bedziesz musial odpowiednio liczyc trase na podstawie tablicy i kwadracik oraz samej lini, bo zapewne zrobisz 8 obrazkow na 8 kierunkow.

jesli nie umiesz operowac na tablicy w grach to zrob gra labirynt, taka prosta ale... zabawa jest przy tym fajna :) potem wezyka, a pozniej platformowke itp :) wazne jest doswiaczenie i umiejetnosc panowania nad grafika ktorej nie widzisz i nad zmennymi. ( tych powieniens miec sporo) :)

tak czy siak zycze powodzenia w zabawie z gra, moze jak sie keidys tym zajme to ci wiecej bede mogl pomoc.

pozdro

0

nie dostałeś 100% odpowiedzi, bo taka jets natura tego forum. Ty masz sam dojść do rozwiązania, a nie wkleić kod!
I zgadzam się z moimi przedmówcami - zrób to w DelphiX'ie, podstawy naprawdę nie są trudne, a tutoriali w internecie jest chyba więcej niż do samego delphiego!

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