Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 19 odgovora
  • 4.641 pregleda

Najnovija ↓

pomoć oko igre u delphi-u 7 11.03.2007. u 10:01 · pre 239 meseci
izmenjeno 1 put, poslednji put vladaboy93 11.03.2007. u 15:38
  1. vladaboy9311.03.2007. u 15:38zapis iz teksta poruke
#1
Već neko vreme pravim video igre u delphi-u 7 i treba mi pomoć oko jednog problema?

Kada pokrenem igru koju sam napravio svaki objekat koji se kreće
na bilo koji način (pomoću tajmera,pritiskom na dugme,..) secka (refreshuje se) to jest koči.
Ova pojava nema veze sa brzinom računara jer sam igricu pokretao
na raznim računarima i svuda je isto!!!!!

UNAPRED HVALA!!!!!
Re: pomoć oko igre u delphi-u 7 11.03.2007. u 13:38 · pre 239 meseci #3
> Kada pokrenem igru koju sam napravio svaki objekat koji se kreće
> na bilo koji način (pomoću tajmera,pritiskom na dugme,..) secka to jest koči.

Zapravo nisi ništa rekao, koji objekat, kako se iscrtava, kad se iscrtava... Mislim da se na netu mogu naći uputstva za pravljenje igrica u Delphiu, pretpostavljam da je tamo lepo opisano.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: pomoć oko igre u delphi-u 7 11.03.2007. u 14:54 · pre 239 meseci
izmenjeno 3 puta, poslednji put vladaboy93 11.03.2007. u 15:37
  1. vladaboy9311.03.2007. u 15:37zapis iz teksta poruke
  2. vladaboy9311.03.2007. u 15:07zapis iz teksta poruke
  3. vladaboy9311.03.2007. u 15:06zapis iz teksta poruke
#5
Svi objekti se kreću pomoću tajmera na minimalnom interrvalu (1) radi se o kvadratima i pravougaonicima koji se kreću od jednog do drugog kraja i nazad.Kreću se za određeni broj piksela 1 ili 5 ili 8 zavisi od objekta.
Svaki put kada se objekat pomeri za par piksela on prvo nestane pa se ponovo pojavi i tako stalno bez obzira za koliko se piksela pomera i tako ostavlja utisak da igrica secka to jest koči.

Postoje crveni i zeleni objekti koji se kreću (preko tajmera) i jedan mali plavi objekat koji se kreće pomoću tastature.Cilj igre je da se pomoću plavog kvadrata pokupi što više zelenih objekata (jer oni vremenom nestaju)i stigne do cilja u vremenu od 100 sekundi.

Ne koristim ništa drugo osim delphi-a 7 (šta bi mi vi preporučili)

unapred hvala!
Re: pomoć oko igre u delphi-u 7 11.03.2007. u 14:56 · pre 239 meseci #6
Ako se ne varam, misli na sledece:

- ako recimo imamo slicicu loptice i hocemo da se ona dobija o ivice forme (tj, da se krece u prozoru) postavicemo tajmer koji ce je pomerati za nekoliko pixela na swakih 10-100ms.
- kad se radi o veoma maloj slicici swe ide glatko, medjutim ako je slicica malo veca (100*100px) kad god se pomeri na istek tajmera, program ce je refresh-ovati sto ce se primetiti kao treperenje.

Ja sam imao takaw problem (znaci, najprostija moguca igra bez koriscenja OpenGL-a ili DirectX-a), pa ako neko zna kako da se prevazidje to "widljivo" refresh-ovanje. Hvala
Re: pomoć oko igre u delphi-u 7 11.03.2007. u 15:13 · pre 239 meseci
izmenjeno 1 put, poslednji put vladaboy93 11.03.2007. u 15:38
  1. vladaboy9311.03.2007. u 15:38zapis iz teksta poruke
#7
U pravu si slike jesu velike i stalno trepere to jest refreshuju se.Sa malim slikama je to slabo vidljivo ali sa velikim je to problem čak isa najbržim računarima.

Nije mi jasno kako bi DirektX pomogao ovom problemu.
Da li bi neko mogao da mi objasni.
Re: pomoć oko igre u delphi-u 7 11.03.2007. u 16:07 · pre 239 meseci #8
> svi objekti se kreću pomoću tajmera na minimalnom interrvalu (1) radi se o kvadratima i pravougaonicima koji se kreću od jednog do drugog kraja i
> nazad.Kreću se za određeni broj piksela 1 ili 5 ili 8 zavisi od objekta.

TTimer (tj. windows timer) iako dozvoljava intervale od 1ms, zapravo ih ne podržava, najmanje što se može dobiti je 10ms ili više što zavisi od zauzetosti računara i programa. Naimer, timer poruke su poruke niskog nivoa i biće obrađene tek pošto se obrade sve ostale. Nisam se mnogo bavio igricama ali mi deluje da je bolje iscrtavanje prebaciti u Paint metodu. Kada stigne trenutak da se iscrta figura, to se uradi na osnovu njenih trenutnih pozicija, te trenutne pozicije se updejtuju protekom vremena, pritiskom na taster ili već prema zahtevima. Od izuzetne važnosti na skladno pomeranja figura je i način iscrtavanja, ali je to neka druga tema.
Potpis
Do not be a help vampire (http://slash7.com/pages/vampires), use the google.

How to ask questions the smart way:
http://www.catb.org/~esr/faqs/smart-questions.html
http://solair.eunet.rs/~fangor...stions/smart-questions.sr.html
Re: pomoć oko igre u delphi-u 7 11.03.2007. u 17:30 · pre 239 meseci #10
Mozes da koristis OpenGL za pravljenje igara koji je Srki_82 lepo obradio od nule, isto vazi i za DirektX, a u sustini, ne moras da koristis nista drugo sem Delphi-a za pravljenje video igara. Samo skini OpenGl za Delphi komponente, instaliraj, prouci Srkijeve tutoriale i uzivaj... ;)
Potpis

My IT View Of Life-BrLOG-Delphi for PHP


» LinkedIn
Re: pomoć oko igre u delphi-u 7 11.03.2007. u 18:19 · pre 239 meseci #11
Moze se taj problem veoma lako rijesiti.
Prvo napravis virtuelni komptabilni canvas na koji iscrtavas sve pa zatim sa tog kopiras na pravi.

Pogledaj demo folderu igru EarthPong iz tog dema ja sam naucio. Inace za igra u delphiju je najlakse da se radi sa GLScene na ovom forumu imas tutorijal koje napisao Srki za pocetak
Re: pomoć oko igre u delphi-u 7 11.03.2007. u 18:45 · pre 239 meseci #12
Ako ne uspijes sam resiti javi pa cu ti poslati jedan .dll koji sam radio koji ceto resiti. ali velike izmjene u tvojoj igri ce biti obavezne.
Re: pomoć oko igre u delphi-u 7 12.03.2007. u 11:50 · pre 239 meseci #14
Takodje izbegavati Timer za takve stvari ...

Imas komponentu TApplicationEvents ...

Postoji event OnIdle, u njemu imas parametar Done koji postavis na false i dobio si gotovu "petlju" odnosno
aplikacija ce zvati taj event nonstop (kada god ne radi nista drugo - tipa update akcija i sl ... - sto je dosta cesto)

E jedino sto treba da se pobrines je time sinhronizacija ...

Tu mozes da odradis nesto poput

Code:

begin
 if  (Now-LastFrame)>PetnaestMS then
  begin
   LastFrame:=Now;
   { ovde odradis animaciju i sve to ... :) }
  end;
 Done:=false; 
end;


LastFrame je TDateTime ...
PetnaestMS je TDateTime i ima vrednost od 15 milisekundi (to ti je za recimo nekih 60tak "frejmova u sekundi" - ovo je pod navodnicim
zato sto nema realne veze sa fps-om nego ima veze sa frekvencijom osvezavanja tvoje simulacije odnosno igre) ...
Re: pomoć oko igre u delphi-u 7 12.03.2007. u 17:56 · pre 239 meseci #15
Nemas potrebe za Application.OnIdle, slobodno koristi tajmer jer ta tvoja aplikacija ne koristi nikakve ne-znam-kakve procesorske resurse za proracun, sve sto taj kod radi (pa jos x100) moze da stane u nekih 10ms procesorskog vremena.

Stavi doublebuffered property forme na True i postavi obavezno tajmer na 1000ms/RefreshRate monitora (refresh rate citaj iz ini fajla ili ga pokupi nekako od windowsa).
Tajmer koji pokrece logiku u igri i na kraju crta novo stanje mora biti celobrojno deljiv sa refresh rate-om monitora da bi dobio tecnu animaciju. Znaci, ako ti je refresh 60Hz, to je 60x za 1000ms, znaci tajmer mora biti 1000/60 = 16.67ms. Posto je ~16 najniža rezolucija normalnog tajmera na windows platformi, onda koristi duplo vecu, znači 33, a onda sve brzine objekata (tih tvojih 4, 8 pixela...) pomnozi sa 2.
Re: pomoć oko igre u delphi-u 7 13.03.2007. u 14:20 · pre 239 meseci #16
Ovako ce se uvek dobiti treperenje objekata(slika), jer koliko sam ja svatio ti ih direkno iscrtavas na formin Canvas i zbog toka dolazi
Re: pomoć oko igre u delphi-u 7 14.03.2007. u 15:19 · pre 239 meseci #17
Mislim da tajmer nije dovoljno precizan (razlika postoji u intervalima, pogotovu kada windows nesto cacka po resursima), mada je pitanje da li ce se to primetiti ...

DoubleBuffered:=True; //ovo obavezno za TForm ...

I nemoj koristiti TImage ili slicno za objekte ... overrajduj paint metodu za TForm, pa direktno iscrtavaj na canvas slike sa draw metodama (da li stretch draw
ili obican ako je u pitanju bmp ili ga crtaj "rucno" ako je jednostavan oblik).

Treperenje moze u ovom slucaju lako da bude zbog toga sto si koristio TImage u koji si ucitao Jpeg ... a ako se ne varam on se dekodira svaki put na taj
nacin i uzima vreme procesora ...
Re: pomoć oko igre u delphi-u 7 15.03.2007. u 15:15 · pre 239 meseci #18
Ili josh bolje, skini neki free engine i uzivaj (recimo Game Maker) ;)!
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme