Discussion:
SPil-programmering i Delphi?
(for gammel til at besvare)
Poul E Hansen
2008-04-04 20:46:27 UTC
Permalink
Hej, jeg har efter en introduktion til turbopascal lært mig noget
Delphi, som jeg leger mig. Er det egnet til at lave spil med ting der
bevæger sig? Jeg tænker fx. på Timer komponenten. Så vidt jeg kan se
virker den ikke hvis man stiller timer-ntervallet, (som angiver det
tidsrum, der skal gå mellem hvert kald af timer proceduren) til under
200 (millisekunder). Så kan den ikke følge med længere, også selvom
det er en simpel procedure som i := i+1;
Uffe Kousgaard
2008-04-06 06:31:50 UTC
Permalink
Er det egnet til at lave spil med ting der bevæger sig?
Det kan det nok bruges til stort set lige så godt, som så meget andet. Prøv
f.eks. at læse videre her:
http://delphi.about.com/od/gameprogramming/Game_Programming.htm
Jeg tænker fx. på Timer komponenten. Så vidt jeg kan se
virker den ikke hvis man stiller timer-ntervallet, (som angiver det
tidsrum, der skal gå mellem hvert kald af timer proceduren) til under
200 (millisekunder). Så kan den ikke følge med længere, også selvom
det er en simpel procedure som i := i+1;
Den kan sagtens følge med. Men spørg videre i dk.edb.programmering.pascal
Poul E Hansen
2008-04-07 10:41:32 UTC
Permalink
Post by Uffe Kousgaard
Er det egnet til at lave spil med ting der bevæger sig?
Det kan det nok bruges til stort set lige så godt, som så meget andet. Prøv
f.eks. at læse videre her:http://delphi.about.com/od/gameprogramming/Game_Programming.htm
Jeg tænker fx. på Timer komponenten. Så vidt jeg kan se
virker den ikke hvis man stiller timer-ntervallet, (som angiver det
tidsrum, der skal gå mellem hvert kald af timer proceduren) til under
200 (millisekunder). Så kan den ikke følge med længere, også selvom
det er en simpel procedure som i := i+1;
Den kan sagtens følge med.
Har du prøvet den? Jeg har prøvet med både Delphi 4 og 6, den gratis
personal-udgave og der virker det ikke. Timeren er en komponent som
man klikker på og placerer på formen - begge dele hører med til et
normalt Delphi-program. Så får man vist timeren i Object
Inspectorvinduet og kan vælge timer interval (mellemrum i
millisekunder mellem hvert kald til timerproceduren) samt skrive hvad
der skal ske i timerproceduren. Prøv fx. at sætte intervallet til ét
millisekund, log lad timer proceduren være i:=i+1;
if (i)mod(1000) = 0 then caption:=inttostr(i); hvor i er en global
variabel. - det burde vise et ny tal (1000,2000,3000 osv) som
overskrift på formen hvert sekund, men det går meget langsommere. Det
hjælper heller ikke at bruge en anden timer til den sidste komando.
Uffe Kousgaard
2008-04-07 12:25:23 UTC
Permalink
Post by Poul E Hansen
Har du prøvet den? Jeg har prøvet med både Delphi 4 og 6, den gratis
personal-udgave og der virker det ikke.
Definer "virker ikke". Hvad forventer du? Hvad sker der?

Du fik også lige ændret intervallet til 1 ms fra 200 ms. Det er jo en
betragtelig forskel.
Poul E Hansen
2008-04-08 15:43:54 UTC
Permalink
Post by Uffe Kousgaard
Har du prøvet den? Jeg har prøvet med  både Delphi 4 og 6, den gratis
personal-udgave og der virker det ikke.
Definer "virker ikke". Hvad forventer du? Hvad sker der?
Du fik også lige ændret intervallet til 1 ms fra 200 ms. Det er jo en
betragtelig forskel.
Måske var det ved min gamle pc det gik galt allerede ved 200 ms; den
var meget gammel men opfyldt lige kravene til Delphiudgaven. Nu har
jeg prøvet med den nye. Her er der en betragtelig forsinkelse når
intervallængden er 10 millisekunder: når der i timerproceduren skrives
i:=i+10; if (i)mod(1000) = 0 then caption:= inttostr(i); burde
ændringen af overskriften ske hvert sekund, men det sker med 1½
sekunds mellemrum- selvom den har en processor på 1,6 GHz. Jeg mener
dog jeg under udvikling af et spil prøvede på den nye pc med en ting
der skulle bevæge sig over skærmen hvor timeren var endnu dårligere,
måske gik det her galt allerede ved 200 ms, og hvor jeg tjekkede at
det skyldtes begrænsninger for timeren eftersom bevægelsen skete på
ingen tid, hvis alle rykkene bare skulle gøres uafbrudt. Det må jeg se
på igen.
Uffe Kousgaard
2008-04-08 16:59:17 UTC
Permalink
Tilføj application.processmessages når du opdaterer caption, så spiller det.

"Poul E Hansen" <***@ofir.dk> wrote in message news:d127c330-85ad-441b-b21f-***@c19g2000prf.googlegroups.com...
Poul E Hansen
2008-04-10 18:36:04 UTC
Permalink
Post by Uffe Kousgaard
Tilføj application.processmessages når du opdaterer caption, så spiller det.
Det gør ingen forskel. Det skulle det heller ikke - timerproceduren
kaldes med visse intervaller af tid, det er ikke en løkke som kører
uafbrudt.
Poul E Hansen
2008-04-11 11:50:24 UTC
Permalink
Post by Poul E Hansen
Post by Uffe Kousgaard
Tilføj application.processmessages når du opdaterer caption, så spiller det.
Det gør ingen forskel. Det skulle det heller ikke - timerproceduren
kaldes med visse intervaller af tid, det er ikke en løkke som kører
uafbrudt.
Men måske ville det hjælpe på problemet hvor tingen jeg havde sat til
at bevæge sig rundt ikke flyttede sig hurtigt nok - jeg husker nemlig
ikke, om den flyttede sig én gang for hvert kald af timerproceduren
(som meningen var) eller om den sprang nogle flytninger over, for
senere at flytte et længere ryk. Hvis de var det sidste, ville det
måske hjælpe med kommandoen application.processmessages

I tilfældet med opdatering af Caption på formen, opdateres den ved
hvert timerkald.

Poul E Hansen
2008-04-08 20:32:28 UTC
Permalink
Post by Uffe Kousgaard
Er det egnet til at lave spil med ting der bevæger sig?
Det kan det nok bruges til stort set lige så godt, som så meget andet. Prøv
f.eks. at læse videre her:http://delphi.about.com/od/gameprogramming/Game_Programming.htm
Tak, det må jeg undersøge.
Har du prøvet den? Jeg har prøvet med  både Delphi 4 og 6, den gratis
personal-udgave og der virker det ikke.  Timeren er en komponent som
man klikker på og placerer på formen - begge dele hører med til et
normalt Delphi-program.
- formen hører med, og Timerkomponenten kan man placere på formen
fra Component Palette.
Loading...