Popsux Skrevet 25. april 2008 Del Skrevet 25. april 2008 Jeg er enda i begynner-stadiet for å programmere i delphi. Jeg har tenkt å lage en enkel windows versjon av spilletyprn "DX-ball". Jeg bruker Turbo Delphi. Håper noen kan svare på ett eller flere av disse spørsmålene mine. På "Form1" har jeg 5 "TPanel". En på bunnen som jeg kaller "Death", en kort "pinne" som skal styres av musen til høyre og venstre. En vegg som jeg kaller "R" for right, og en annen vegg som jeg kaller for "L" for left. Og den siste er taket jeg kaller "Top". Mine spørsmål er følgende: Jeg har fått musen til kun å bevege "pinnen" til høyre og venstre. Men jeg lurer på hvordan jeg får pinnen til og stoppe ved "L" og "R"? Jeg har også en TShape som er rund, som jeg kaller "ball". Hvordan kan jeg få ballen til og bevege seg opp på skrå og treffe "L" og "R"? Og til sist. Kan jeg "gjemme" musepekeren, slik at kun "pinnen" som beveger seg vises, og ikke musepekeren? Legger ved et bilde av "Form1". Lenke til kommentar
sinnaelgen Skrevet 25. april 2008 Del Skrevet 25. april 2008 jeg ville ha brukt paintbox komponenten til det , men det er dit valg. når jeg bruker ordet komponenter så menr jeg disse objektene som du kan plukke frem fra verktøy paletten ( tool palette) her må du bruke en del variabler og så sjekke dem opp mot hverandre. på samme måte som formen ( form1) har variabler som bestemmer plasseringen har også panelene det . bl.a. variablene left,top ,height og width. det er disse du må bruke når du beveger pinnen så må du sjekke om Death.left ikke er mindre en panelL.left+panelL.widt( høyre posisjon på panelL). // hindre at markøren går for langt til venstre if Death.left > panell.left+panell.width then Death.left:= panell.left+panell-width; // hindre at markøren går for langt til høyre if Death.left+pinne.width < panelr.leftl then Death.left:= panell.left - Death.width på samme måte kan du holde ballen innenfor den rammen du har laget . for å bevege ballen bruker du timeren . set intervalet til en passelig verdi ( antal millisekunder ) mellom hvert intervall. for å flyrtte den en posisjon høyre : ball.left:=ball.left+1; venstre : Ball.left:=ball.left-1; opp : ball.top:=ball.top-1; ned : ball.top:=ball.top+1; for å flytte den på skrå må du endre både topp og left variabelen på samme tid. husk også å ta med både høyde bredde på kompontene når du beregner begrensningen til ballen høyre blir left+width og bunn blir top+height Lenke til kommentar
hjahre Skrevet 26. april 2008 Del Skrevet 26. april 2008 (endret) Her kommer jeg med et par småting. Hvis man skal få "ballen" til å bøye av så vil man trenge en test for det. Dette er ikke vanskelig å lage. Hvis du tenker deg at ballen kommer mot en loddrett vegg, etter at ballen treffer veggen vil den sprette med motsatt fart på x-aksen. Koden kan se sånn ut, L: if ball.x => vegg.x then ball.x := -ball.x; for R blir det: if ball.x =< vegg.x then ball.x := -ball.x; For horisontale vegger, Top: if ball.y =< vegg.y then ball.y := -ball.y; Men disse kodene for refleksjon blir best på et firkantet legeme, hvis du skal ha ordentlig refleksjon av kula, så må du regne litt mer først. Og det gidder ikke jeg gjøre nå For å skjule musa bruker man denne koden i FormCreate: ShowCursor(False); Håper dette hjelper litt EDIT: Glemte å si velkommen til forumet Popsux Endret 26. april 2008 av hjahre Lenke til kommentar
Popsux Skrevet 26. april 2008 Forfatter Del Skrevet 26. april 2008 (endret) Takker for svarene! Og takk for velkomsten! Vil takke dere begge: elg-elg123 og hjahre for svar. Men fikk ikke kodene til virke. Må være en annen kode for å gjøre dette eller noe... Endret 27. april 2008 av Popsux Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå