Skocz do zawartości

[Delphi Gra]Stick's Adventures


Dexarz

Polecane posty

Otóż ostatnio zachciało mi się zrobić grę ..Nie jest on na żadnym Delphix'ie czy dirext'ie bo jeszcze wole potrenować samo delphi ..

Zrobiłem już menu gry no ale mam kilka pytań ...

 

Wstawiłem komponent RXGifAnimator (StickDef po zmianie nazwy) na formę i chciałbym żeby on jak kliknę na klawisz "do góry" to ,żeby komponent podskoczył i zrobił jakiś gif ..to mniej więcej chciałbym żeby to tak wyglądało :

 

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if key=vk_right then
begin
StickDef.Image.LoadFromFile('sticks/' + Form1.NameStickEdit.Text + '/' + Form1.NameStickEdit.Text + 'Right.gif') ;
StickDef.Left := StickDef.Left + 10
Operat := 'Right'
end else if key=vk_left then
begin
StickDef.Image.LoadFromFile('sticks/' + Form1.NameStickEdit.Text + '/' + Form1.NameStickEdit.Text + 'Left.gif') ;
StickDef.Left := StickDef.Left - 10
Operat := 'Left'
end else If key_up then
begin
StickDef.Image.LoadFromFile('sticks/' + Form1.NameStickEdit.Text + '/' + Form1.NameStickEdit.Text + 'Up.gif') ;
//No i dalej chciałbym żeby był ten podskok komponentu w gore o np 100 Pixeli i powrot w pierwotne miejsce
//Jeśli komponent już wrócił na miejsce przed skokiem to chciałbym żeby StickDef (Gif)  zmieniał Gifa na :
StickDef.Image.LoadFromFile('sticks/' + Form1.NameStickEdit.Text + '/' + Form1.NameStickEdit.Text + 'Stand.gif') ;
end else if key=vk_down then
begin
StickDef.Image.LoadFromFile('sticks/' + Form1.NameStickEdit.Text + '/' + Form1.NameStickEdit.Text + 'Down.gif') ;
//operacja która poczekała by aż Gif powyżej skończy sie odtwarzać (myślałem nad sleep ale on zatrzymuje cały program)
StickDef.Image.LoadFromFile('sticks/' + Form1.NameStickEdit.Text + '/' + Form1.NameStickEdit.Text + 'DownConst.gif') ; //zmiana gifa
Operat := 'Down'
if key=vk_space then close ;
end;

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 62
  • Created
  • Ostatnia odpowiedź

Co do podskoku możesz śmiało zastosować rozwiązania, które przedstawił Spider w swoim arcie o podst. fizyki.

Poza tym nie powinieneś ładować z dysku odpowiednich obrazków w momencie przyciśnięcia jakiegoś klawisza ponieważ jest to masakrycznie nie optymalne. Najpierw wczytujesz wszystko do pamięci potem tylko podmieniasz na odpowiednie.

Ot taka mini-strona moja po godzinach :)http://www.wnetrzekuchni.pl

Link do komentarza
Udostępnij na innych stronach

Dobry pomysl na przeprowadzke do Dizlau Delphi ...

 

Poza tym nie powinieneś ładować z dysku odpowiednich obrazków w momencie przyciśnięcia jakiegoś klawisza ponieważ jest to masakrycznie nie optymalne. Najpierw wczytujesz wszystko do pamięci potem tylko podmieniasz na odpowiednie.

 

Dodam mozliwosc zmiany Ludzika wiec pliki musza sie zmieniac :)

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Wlasnie zainstalowalem komponenty DephiX ..

 

Kiedy kompiluje wychodzi mi blad :

[CYTATError] SA1.pas(62): Missing operator or semicolon ,a odwołuje sie do tego miejsca :

CYTATOperat := 'Right'

 

Co to za błąd ??

 

 

Nie, nie! smile.gif To nie ma nic do rzeczy. Najpierw ładujesz wszystkie zasoby do pamięci, a potem odpowiednio wyświetlasz.

A jak sie to robi ??

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Brakuje Ci średnika na końcu linijki. A tak na marginesie, to daruj sobie robienie gry, skoro nie potrafisz tak prostego komunikatu o błędzie zrozumieć. ;) Nie piszę tego po to, żeby Cię zniechęcić, ale po prostu nie dasz sobie rady. Poczytaj trochę więcej tutoriali lub książek i wtedy dopiero zacznij bawić się w grę...

 

Co do wczytywania zasobów do pamięci... Hmmm... Można to zrobić na wiele sposobów... Jeżeli chodzi Ci o przechowywanie obrazków, to możesz je trzymać w komponencie TImageList, albo wczytywać do listy (obiekt TList). Sposobów jest naprawdę dużo...

Link do komentarza
Udostępnij na innych stronach

Wiedzialem co oznacza ten komunikat i wlasnie sam naprawilem te problem ..po prostu zapomnialem przed dodac srednik ...

To nie pierwszy moj program bo robilem juz wiele programow ..

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Wiedzialem co oznacza ten komunikat i wlasnie sam naprawilem te problem ..po prostu zapomnialem przed dodac srednik ...

To nie pierwszy moj program bo robilem juz wiele programow ..

Nom, ale niektórzy tutaj piszą programy, nie wszyscy robią :D

 

Jak się nie chce Ci zastanawiać, wyszukiwać błędów itp. to nie ma sensu zakładać tematu. Przecież głupie błędy sam możesz wyłapać.

Link do komentarza
Udostępnij na innych stronach

Niedługo wstawię na swoją stronę (download ).Wersję Beta mojej pseudo gry :)Co będzie ona zawierać ?

 

Poruszanie postacią (wszelkie skoki i chód)

Grawitacja

Możliwość zmieniania postaci, levelu lub nawet skina gry (prawdopodobnie)

Ładowanie gry i zamykanie ...

 

CYTAT ...wszelkie skoki ... Wstawiłem komponent Timer który po naciśnięciu do góry porusza komponentem w górę a potem w dół.

 

Tylko mam pytanie ..

 

Jak zrobić żeby integer pobierało z linijki określonego pliku ??

Zrobiłem to tak :

 

CYTATStickDef.Top:=SL.Strings[12];

 

(sl to zmienna a stickdef to postać którą poruszamy (komponent))

 

Ale wychodzi mi błąd :

[Error] SA1.pas(91): Incompatible types: 'Integer' and 'String'

 

Co zrobić ??

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

po prostu go nie dalem ,sprawdz teraz ..

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Gdzie to mam "wepchnac" ??

Juz wiem :

StickDef.Top:=StrToInt(SL.Strings[12]);

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Wiem co to StrToInt ale po prostu o tym zapomnialem

String to Integer a można by dać inne np. InttoExd (Integer to Exdented czy jak sie to piszę) ,a póżniej odwrotnie to Exdented to Integer ?

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

 

String to Integer a można by dać inne np. InttoExd (Integer to Exdented czy jak sie to piszę) ,a póżniej odwrotnie to Exdented to Integer ?

Nie wiem jak inni ale ja kompletnie nie rozumiem toku twojego rozumowania. Masz 2 zmienne Int i String konwertujesz je sobie OK ale potem pytasz się czy nie lepiej zastosować Extended typ. Ext jest zmienno przecinkowy a ty potrzebujesz Stringa to jak to sobie wyobrażasz, chyba gdzieś zgubiłeś tok rozumowania albo ja kompletnie nie kapuje.

Ot taka mini-strona moja po godzinach :)http://www.wnetrzekuchni.pl

Link do komentarza
Udostępnij na innych stronach

Juz nie cchodzi mi o text ..zle napisalem ..po prostu zapytalem sie czy mozna takie dac ..

Mam kalkulator no i chce miec funkcje potegowania ..ake w spinedit jest integer a funkcja power musi miac exdented ...tylko dla tego sie pytam

Aktualnie piszę 32 bitowy system operacyjny.

ASE2.0 100% ,DME (Dynamic Motion Engine) v2.0 10% ,32 bit PumaOS - 40%

Stick's Adventure 3 - 0%

Komp nr.1 AMD Duron 1,3 Ghz ,256 MB Ram DDR PC133 (na eBoostr mam jeszcze 1 GB) ,Nvidia GeForce FX 5500 256MB DDR

Komp nr.2 (laptop) AMD Athlon XP 2,0 Ghz , 192 MB Ram DDR PC2700 (na eBoostr mam jeszcze 3 GB) , Via S3 Unichrome IGP

Przykład programu w ASE2.0:

<?arg #CreateProcs; $i:?;

#For('$i,10,1,@Lab');@Lab;

#Sleep(100);

#Message("Ten komputer ulegnie autodestrukcji za $i sekund");

#Retf;

#Message('Dead'); arg?>

Link do komentarza
Udostępnij na innych stronach

Wiedzialem co oznacza ten komunikat i wlasnie sam naprawilem te problem ..po prostu zapomnialem przed dodac srednik ...

To nie pierwszy moj program bo robilem juz wiele programow ..

 

Stary zakladam ze masz 12 lat i problem z samoocena, poziom twoich pytan wybitnie zatrzecza cytatowi powyzej. Zadajesz tak elementarne pytania i tworzysz tak elementarne bledy ze sam sie dziwie ze ci odpisuje. Nie masz zielonego pojecia o tym co robisz a tylko wydaje ci sie ze umiesz programowac. Roumiem ze chcesz sie pochwalic swoimi osiagnieciami oraz ze chcesz pewnie wejsc do srodowiska programistow ale obecnie to sie blaznisz. Pytajac co to za komunikat (brak srednika), a pozniej mowiac ze wiesz co to znaczy, tylko zapomniales dodac srednika wychodzisz na Mega Lame. Rozumiem jakbys mial problem z niektorymi komunikatami w c++ ktore czasami znacza zupelnie co innego niz na pierwszy rzut oka widac, albo gdybys zrobil jakis wielki program i masz z nim problem. Ale kurde komunikaty w Delphi sa bardzo jednoznaczne a twoj program to roboty dla kogos z doswiadczeniem na kilkadziesiat minut wiec o co kaman ?

Problem z konwersja stringa do inta ? Funkcja Power przyjmuje parametr Extendend wiec nie mozesz tam wstawic inta ? Czlowieku wez zanim napiszesz cos na forum zastanow sie co ty robisz. Wiem wiem internet jest fajny bo wejde sobie na forum i napisze i wszyscy mi pomoga a jek nie to ch*** z nich i pojde na inne forum. Pomysl o czyms takim, przychodzisz do nowej szkoly wchodzisz do nowej klasy wewnatrz jest 50 uczniow, sluchasz o czym gadaja i okazuje sie ze mowa o rozwiazywaniu rownan. Nagle wstajesz i mowisz kompletna bzdure wszyscy patrza na ciebie conajmniej zdziwieni, ktos ci zwraca uwage ze gadasz bzdury a ty na to opowiadasz: "tak wiem, tylko zapomnialem". To teraz uzyj swojej wyobrazni i zauwaz ze piszac na forum rowniez rozmawiasz z zywymi ludzmi, roznica jest taka ze ich nie widzisz i nie czujesz sie glupio robiac z siebie publicznie idiote....

Always Dark<br />u1_tt_logo.png banner-1.pngexFabula-banner.pngson_banner_ubersmall.jpg

Link do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat jest archiwizowany i nie można dodawać nowych odpowiedzi.

×
×
  • Utwórz nowe...