Avatar billede bentblod Nybegynder
11. januar 2005 - 21:34 Der er 4 kommentarer og
1 løsning

Måden at opdatere objekter på i spil

Hej, jeg er igang med at lave et lille spil i java, har 2 teorier om hvordan jeg skal opdatere alt grafikken i spillet, men ved ikke hvad der kræver mest af computeren, dog heller ikke hvad der er smartest. I er velkommen til at komme med andre forslag til hvad der ville være smart hvis det er. Men de 2 måder jeg har det at gøre det på:

1. Have en tråd som sover i x antal milisec, og så opdatere alt grafikken. (kan forestille mig at den kan blive besværlig at arbejde med, da det ville være forskelligt fra comp til comp)

2. Lave en Clock, som opdatere hvert x mili sec. (Denne bruger vel en masse cpu kraft)

Nogen der ellers har nogle gode forslag til hvordan man kan gøre det?
Avatar billede 2c Nybegynder
11. januar 2005 - 21:54 #1
Jeg ville vælge 1.

Altså du har en tråd der kører hvor du opdaterer alt din grafik, point og andre game data. Nederst i din while(true) tjekker du så hvor lang tid det har taget, og trækker det fra den tid du ville have sovet. Så sover du lige lang tid hver gang(forudsat at et gennemløb ikke er længere end din sleeptime).

Et godt link til en bog om udvikling af computer spil i java: http://fivedots.coe.psu.ac.th/~ad/jg/
Avatar billede bentblod Nybegynder
11. januar 2005 - 21:55 #2
hvordan tjekker jeg hvor lang tid det har taget?
Avatar billede 2c Nybegynder
11. januar 2005 - 22:10 #3
Det kommer lidt an på hvilken timer du bruger, men her er et gennerelt forslag.

Lav 4 variabler:
long beforeTime, afterTime, timeDiff, sleepTime;
Sæt din sleepTime til en værdi før du går ind i en løkke.
sæt beforeTime øverst i din while(true) løkke (eller den løkke du kører i din hoved tråd). Alt efter hvorfor en timer du bruger kan det være foskelligt hvordan du gør. Men hvis du kan kalde en getValue på en timer er det noget i den stil du skal gøre(Det er noget tid siden jeg har arbejdet med Java)

Lav alle dine grafik udpates osv.

Sæt din afterTime.
Sæt din timeDiff = afterTime - beforeTime
Sørg for at hver gameupdate kører med samme tidsinterval:
Thread.sleep(sleepTime- timeDiff )

Det er bare lidt pseudo kode jeg lige kunne komme på. Jeg håber det hjælper lidt.
Avatar billede bentblod Nybegynder
11. januar 2005 - 23:49 #4
Jo det lyder fornuftigt nok :) mange tak for hjælpen da:) Skriv lige som svar
Avatar billede 2c Nybegynder
11. januar 2005 - 23:52 #5
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester