Avatar billede dronten Nybegynder
05. september 2002 - 23:28 Der er 6 kommentarer og
1 løsning

følg musen

jeg er ved at lave et lille spil hvor der er en figur der skal gå der hen hvor man klikker med muse, men som jeg har lavet det nu stiller den sig bare direkte derhen, hvordan laver man det så den lige så stille bevæger sig hen imod der hvor man klikkede??
Avatar billede hermandsen Juniormester
06. september 2002 - 00:43 #1
Kan du ikke bare beregne hvor han skal gå hen, og så tage et lille stykke af det ad gangen?

Det er simpelt matematik der skal til... ;)
Avatar billede dkn Nybegynder
06. september 2002 - 09:04 #2
Prøv at søg efter mouse hook. Du kan også bruge en timer og så:

var
Point:Tpoint;
begin
GetCursorPos(Point);
//Point.Y, point.X
end;

Tror der er en mouse hook som hedder Tfnugry et eller andet.
Avatar billede hermandsen Juniormester
06. september 2002 - 14:44 #3
procedure Walk(x, y: Integer);
const
  Dist = 10;
var
  V: Extended;
begin
  V := ArcTan((DinTing.y-y)/(DinTing.x-x));
  while ((Abs(DinTing.x - x) > Dist) and (Abs(DinTing.y - y) > Dist)) do
  begin
    DinTing.x := Round(Cos(V)* Dist) + DinTing.x;
    DinTing.y := Round(Sin(V) * Dist) + DinTing.y;
    Sleep(50);
  end;
end;

Something like that? Der er i dette eksempel ikke taget højde for vinkler over 180°, men det burde ikke være så svært! ;)
Avatar billede hlj Nybegynder
08. september 2002 - 10:04 #4
Hvis delphi har optimering slået til beregner den så selv den 'konstante' værdi som Cos(V) og Sin(V) har eller laver den beregningen hver gang ?

Hvis den beregner hver gang kunne man opnå en lillebitte hastigheds optimering ved at forudberegne de 2 variabler, måske er det nok mest en teoretisk.
Avatar billede hermandsen Juniormester
08. september 2002 - 10:42 #5
>>hlj
Delphi burde (jeg er ikke sikker) beregne det hver gang... Hvis du vil optimere kan du bare udregne en variabel til det, for du har ret i at det giver den samme konstant hver gang...

Jeg læste en gang en tutorial til noget DelphiX-programmering, hvor i der stod at alt hvad man kan udregne før spillet, udregner man. Så laver man store array's of Something og slår bare op i det hver gang i stedet for at lave samme udregning igen og igen og igen og igen, hvilket jo er med til at gøre spillet langsommere! ;)
Avatar billede hlj Nybegynder
08. september 2002 - 22:13 #6
hermandsen>>
Nu er maskiner jo ret hurtige til at udregne matematiske funktioner nu om dag, jeg mindes bare om de dage hvor man købt specielle 80287 matematikprocessorer for at beregne flyende kommatal. De er jo indbygget i processorerne nu om dage.

Nogle steder laver man, som du også nævner, specielle sinus og cosinus tabeller for at 'bare' kunne lave et pointeropslag istedet for at beregne det.

Jeg kan bare godt lide at optimere ting så der ikke bruges mere resourcer end højst nødvendig.
Avatar billede hermandsen Juniormester
09. september 2002 - 00:30 #7
>>hlj
Jeg er helt enig, men tænk lige på de folk der sidder og programmerer Quake... Jeg vil godt væde med at de har nogle ret store tabeller som de bruger i stedet for udregninger!

Jeg mener endda at der i den tutorial jeg læste, stod at det var personen der stod bag Quake der havde sagt at det med tabeller var en god ting! :)
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