Hej Principen är nästan alltid densamma. Du har en gameloop. Varje varv i loopen tar du emot user input, och låter din omgivning reagera. För att få någonting att röra sig en viss hastighet bestämmer du hastigheten, tar reda på hur lång tid det har tagit sen förra varvet i loopen, och räknar ut ny position utifrån det. Kan man göra en loop som kör hela tidan och bara utför flytten om en tangent trycks ner, allts så att loopen hela tiden går runt fast om nåt är intryckt så flyttas racket sen forstätter loopen bara. <b>>Kan man göra en loop som kör hela tidan och bara utför flytten om en tangent trycks ner, allts så att loopen hela tiden går runt fast om nåt är intryckt så flyttas racket sen forstätter loopen bara.</b>Pong spel i Console
Jag har gjort början till ett pongspel det jag inte gjort är den lillakulan.
Hur skall jag kunna få kulan att gå i en speciell hastighet samtidigt som man skall kunna röra "racket" i realtid.
Kom gärna med flera olika förslag för jag antar att man kan göra detta flera sätt.
M.V.H. JonasSv: Pong spel i Console
input kan du inte få med något som låter datorn stanna upp, så det finns inget sätt i standard C++ att lösa det. Hur du löser beror på vilken plattform du använder och vilka bibliotek du har tillgång till.
Alltså i pseudokod:
environment e;
time lasttime, thistime;
while(userinput != quit){
userinput=getuserinput();
e.react(userinput);
lasttime=thistime;
thistime=now();
e.tick(thistime-lasttime);
}Sv:Pong spel i Console
Och sen sätter man att kulan skall flytta sej efter tex 100 cyklar i loopen.
Fast det finns kanske en nackdel med en sån funktion, det är ju att knappen måste vara intryckt just när man kommer till den delen i loopen vilket då innebär att man kan få en fördröjning vid inmatning
Hoppas du förstår vad jag menar.
Fast det kanske är det du menar med din pseudokod, hängde inte riktigt med på den pseudokoden.
Tack så mycket för svaret.
M.V.H. JonasSv: Pong spel i Console
Njae... alltså... antingen så är det som ska inträffa något som är en omedelbar händelse - till exempel en knapp som tar upp en meny. Då reagerar man direkt och gör det.
Annars så är allt tidsberoende. Vad som händer beror på hur länge man håller inne något. Och då får du börja räkna tider som saker sker.
<b>>Och sen sätter man att kulan skall flytta sej efter tex 100 cyklar i loopen.</b>
Räkna aldrig i cykler, räkna i tid. Säg att den har en hastighet på 20 pixlar per sekund. Sen tar du fram antalet sekunder det har gått mellan "detta varvet" och "förra" (förmodligen en hundradels eller tusendels), och öka positionen enligt det. (Detta kan ge problem med cancellation, men det här är principen).
<b>>Fast det finns kanske en nackdel med en sån funktion, det är ju att knappen måste vara intryckt just när man kommer till den delen i loopen vilket då innebär att man kan få en fördröjning vid inmatning</b>
Det beror helt på vilka funktioner du har tillgång till. Ta reda på vad du ska använda först.