Avatar billede unclefuckers.dk Nybegynder
18. juni 2001 - 14:07 Der er 28 kommentarer og
1 løsning

Matematik og Lingo....

Vi er i øjeblikket i gang med et projekt, hvor vi skal lave et spil. I vores spil har vi en vej, der kører skråt nedad mod højre over skærmen. Vha. cosinus, sinus, tangens og to punkter på en parallelt liggende linie skal vi kunne beregne vejens vinkel og dermed få den til at flytte sig. Men vi rammer ikke plet. Vi er rimelig sikre på at det er fordi at på enhedscirklen regnes graden som fra x-aksen og mod uret, mens i Director regnes graden som fra x-aksen og med uret, da +y er nedad... og dermed skal udregningen af vejens hældning (ca. 26 grader) nok gøres lidt anderledes.
Vi har haft en lærer til at kigge på det, men han måtte give op.
hent det nødvendige her:
http://www.mediestud.dk/ADMIN/rune/projekt2/movescript.zip
På forhånd 10000000000000 tak for hjælpen!!!
PS. Vi har travlt da vi skal aflevere på torsdag...(o;
MVH Rune
Avatar billede lingoman Nybegynder
18. juni 2001 - 14:35 #1
Hej Rune,

Jeg har downloaded din .dir og har et spørsmål.

Er det Jeres hensigt at sprites for cyklisten, vejen, huset alle skal kunne bevæge sig samtidigt med at fks cyklisten kan have en sidelængs hastighed uafhængig af vejens mens han bliver på vejen?

mvh Geo
Avatar billede unclefuckers.dk Nybegynder
18. juni 2001 - 15:06 #2
Det er vores hensigt at vej, hus, div. forhindringer med mere skal bruge funktionen med samme hastighed og retning og dermed køre ned ad skærmen.
Cyklisten skal følge en lille prik som styres af piltasterne. Denne prik sættes til kun at virke så længe den intersecter med vejen (dette er ikke lavet endnu, men bliver jo ikke noget problem).
Så når spillet kører ser det ud som om at cyklisten kører ad vejen. Ved venstrepil bevæger den sig fremad og dermed simulerer at farten sættes op og ved højre pil simulerer at farten sættes ned. Men dette kan du vist se i .dir-filen.
Det egentlige spørgsmål er jo formlen for udregning af graden...
Avatar billede lingoman Nybegynder
18. juni 2001 - 17:36 #3
Der er ingen problemer med Jeres Math funktioner.

Afvigelsen skyldes noget jeg kender som \"iteration error\" eller \"truncation error\"

Lad mig forklare....

Jeres Behavior script virken er baseret på mange små ryk af Sprite.Loc

Når udregningerne fks . giver nyXplacering = 4.3 og man sætter LocH = nyXPlacering vil den faktisk flytte sig til LocH = 4. Næste ryk bliver LocH
=  8, 12, 16  osv. ikke  8.6,  12.9,  17.2

Det virker måske for småt til at have nogen inflydelse men ryk nummer 100 afviger med 100 x 0.3 = 30 pixels!

Det samme gælder LocV

Løsningen er heldigvis simpel!

Tilføj blot en ekstra property i Jeres behaviorScripts som holder styr på den samlede \"fart\":

afstand = afstand + fart      det er nok

----------------rettet vejscript-----------------------

property mig
property fart
property retning
property posv
property posh
property startloch
property startlocv
property afstand

on beginsprite me
  set startloch to 100
  set startlocv to 350
  set mig to the spritenum of me
  set the loch of sprite mig to startloch
  set the locv of sprite mig to startlocv
  set fart to 10
  --init
  set afstand = 0
  set retning to \"tilbage\"
end

on exitframe me
  --hold styr på samlet fart = afstand
  set afstand = afstand + fart
  set posv to the locv of sprite mig
  set posh to the loch of sprite mig
  if the loch of sprite mig > 800 then
    set the loch of sprite mig to startloch
    set the locv of sprite mig to startlocv
  else
    --bemærk fart erstattes med afstand her
    set the loch of sprite mig to nyxplacering(posh,afstand,retning)

    set the locv of sprite mig to nyyplacering(posv,afstand,retning)

  end if
end


--------------end vejscript


Den samme script ændring bruges til husene, forhindringer etc.
Jeg har testet og verificeret at scriptet virker fint med denne modifikation, og vejen \"hopper\" heller ikke længere når den looper.

Held og Lykke med projektet

mvh Geo
Avatar billede unclefuckers.dk Nybegynder
18. juni 2001 - 18:10 #4
øh... når jeg foretager ændringerne og den kalkulerer med afstand øges hastigheden med 10 pr. frame, hvilket jo skyldes at afstand tillægges farten hver frame. Altså: vejen kører hurtigere og hurtigere... Kan ikke helt forstå du kan få det til at virke!?!? (o;
Avatar billede lingoman Nybegynder
18. juni 2001 - 18:12 #5
Hej Rune,

Jeg kunne ikke undgå at bemærke at du i dine udregninger konverterer fra radians til degrees. Dette er ikke nødvendigt og komplicerer blot formlerne og hugger processortid.

Det ville også hjælpe hvis I opdelte vej-bitmappen i nogle mindre stykker som så skulle sammensættes via Lingo sådan at de sprites som flyttes rundt aldrig bliver større end hvad der er synligt på stage. Men jeg forstår at I er under tidspress og dette hører jo til finesser.

mvh Geo
Avatar billede unclefuckers.dk Nybegynder
18. juni 2001 - 18:25 #6
Tidspresset er absolut en faktor. Men har du en kommentar til min sidste kommentar?
Avatar billede lingoman Nybegynder
18. juni 2001 - 18:52 #7
Hej Rune,

Ja, jeg havde vist også korrigeret koordinaterne, samt brugt radians i dine nyxPlacering(), nyyPlacering.

Her er de så...


-----------------------------------
on preparemovie
  -- koordinatsættene (xa,ya) og (xb,yb) er to punkter liggende på en linie
  -- parallel med vejenon preparemovie 
  set xa to 426.0 --disse to punkter ligger på en linie parallel med vejen
  set ya to 2.0
  set xb to 1690.0
  set yb to 614.0
  --set xa to 122.0 --disse to punkter er noget vi har sjusset os frem til for at få
  --set ya to 68.0 -- vejen til at køre nogenlunde rigtigt...
  --set xb to 740.0 --men det ville være rart at få funktionen til at virke korrekt
  --set yb to 377.0
  global vinkel
  set vinkel to atan(1.000*(yb-ya)/(xb-xa))
  put \"vinkel:\"vinkel
end

on NyXPlacering(glx,hast,retning)
  global vinkel
  if retning = \"tilbage\" then
    set grad to vinkel
  else
    if retning = \"ned\" then
      set grad to (vinkel+ pi/2)
    else
      if retning = \"frem\" then
        set grad to (vinkel+ pi)
      else
        if retning = \"op\" then
          set grad to (vinkel+pi*3/2)
        end if
      end if
    end if
  end if
  set nyx to ( glx + hast*cos(grad))
  return nyx
end

on NyYplacering(gly,hast,retning)
  global vinkel
  if retning = \"tilbage\" then
    set grad to vinkel
  else
    if retning = \"ned\" then
      set grad to (vinkel+ pi/2)
    else
      if retning = \"frem\" then
        set grad to (vinkel+ pi)
      else
        if retning = \"op\" then
          set grad to (vinkel+pi*3/2)
        end if
      end if
    end if
  end if
  set nyy to ( gly + hast * sin(grad))
  return nyy
end

---------------end movieScript-------------

vej behavioren som jeg gav dig var en forkert udgave..

Her er den \"rigtige\"

-----------vej Behavior-----------------
property mig
property fart
property retning
property posv
property posh
property startloch
property startlocv
property afstand

on beginsprite me
  set startloch to 100
  set startlocv to 350
  set mig to the spritenum of me
  set the loch of sprite mig to startloch
  set the locv of sprite mig to startlocv
  set fart to 10
  --init
  set afstand = 0
  set retning to \"tilbage\"
end

on exitframe me
  --hold styr på samlet fart = afstand
  set afstand = afstand + fart
  set posv to startlocv
  set posh to startloch
  if the loch of sprite mig > 800 then
    set afstand = 0
    set the loc of sprite mig to point(startloch,startlocv)
  else
    --bemærk fart erstattes med afstand her
    set the loch of sprite mig to nyxplacering(posh,afstand,retning)
   
    set the locv of sprite mig to nyyplacering(posv,afstand,retning)
   
  end if
end


-------------end vejBehavior---------------

som du ser har den altid det samme udgangspunkt point(startLocH,(startLocV) til udregningerne. Derfor bliver den ikke hurtigere og hurtigere når vi sætter

afstand = afstand + fart

Tænk på formlen som

afstand = aftand + fart * tid

hvor tid = 1,2,3,4,... for hver gang den kommer ind i exitFrame handleren


Hvis du stadig har dine tvivl om rigtigheden i dette, sender jeg gerne .dir filen til dig.

Send en email til geo@lingoman.dk så vedhæfter jeg filen.

mvh Geo
Avatar billede unclefuckers.dk Nybegynder
18. juni 2001 - 19:49 #8
mmm.. fedt nok. Jeg tror bare lige jeg skal have kigget på udregningen af grad alt efter retningen, da min vej ved \"tilbage\" i stedet kører \"ned\"....
Men nu har jeg siddet og tænkt lingo i 10 timer og vil nu smutte hjem, slappe af og møde frisk op i morgen til endnu en Lingo-dag. (o;
Avatar billede lingoman Nybegynder
19. juni 2001 - 08:56 #9
Godmorgen Rune,

Håber at du er veludhvilet!

\"frem\", \"tilbage\", \"op\" og \"ned\" er relative begreb. Det er kun et spørgsmål om at vælge hvad der skal være referance systemet: Cyklisten, Stage, vejen ? etc.

Hvis vi vælger at bruge Stage som vores reference og tildeler en fart = cyklistFart > 0 til cyklisten, følger kameraet (stage) cyklisten med fart = fart. Derfor skal vejen altså bevæge sig med relative fart = vejFart = -cyklistFart. Altså SKAL vejen altså gå \"Tilbage\" hvis vi vil opretholde illusionen at cyklisten bevæger sig \"Frem\".

Håber at du når din deadline!

mvh Geo
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 10:49 #10
Godmorgen!!!
Vi er ikke helt med på hvad der sker. Hvorfor er \"tilbage\" lige pludselig ikke \"tilbage\" længere?
(Ja, vi burde jo nok have fulgt bedre med i matematikundervisningen...) (o;

Jeg har lige sendt dig en email!

MVH
Rune
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 10:59 #11
Jeg har lige opdateret min .dir. (se tidligere link), så du kan se hvad der sker for os.

Det ser ud til at begreberne \"tilbage\",... osv. er drejet 90 grader i forhold til de mente retninger....?
Avatar billede lingoman Nybegynder
19. juni 2001 - 11:12 #12
Sender .dir fil rettet for skred i bevægelses retningen til din email nu og downloader jeres nye version.

geo
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 11:26 #13
Tak for det.
Yderst mærkværdigt!
Vi har det samme, men det virker ikke ens....
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 11:29 #14
Nå, men vi benytter din fil fra nu af. Vi er nødt til at komme videre. Det skulle jo gerne fungere i morgen aften.
Avatar billede lingoman Nybegynder
19. juni 2001 - 11:49 #15
Hej Rune,

Jeg har checked jeres fil og fundet forskellende så I kan arbejde videre på jeres egen version. Men sig mig nu for engangs skyld, virker den sendte fil så?

Grunden til at jeres version opfører sig som den gør er fordi:

punkt 1). on preparemovie er kopieret lidt forkert!

der skal stå

set vinkel to atan(1.000*(yb-ya)/(xb-xa))

og ikke

set vinkel to atan(1000*(yb-ya)/(xb-xa))

punkt2.) I har brugt vej-behavioren fra  (  Svar fra lingoman 
  18/06 2001 17:36:07 )  i stedet for  ( Kommentar fra lingoman 
  18/06 2001 18:52:12  )


Har jeg mon snart tjent nogle points ?
mvh  Geo
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 12:59 #16
Du får selvfølgelig dine velfortjente point! Havde jeg 500 mere havde du fået det. Du har virkelig fortjent det. Tusind tak for hjælpen!!!
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 13:05 #17
øh???!?
Der plejer da at være en mulighed for at acceptere svaret nederst i dokumentet!?! Det er der ikke. Ja, jeg er logget ind...
- - -
Prøv lige at oprette et nyt svar! (o;
Avatar billede lingoman Nybegynder
19. juni 2001 - 13:28 #18
Hej Rune,

VIRKER DEEET?

geo
Avatar billede lingoman Nybegynder
19. juni 2001 - 13:37 #19
Hvis det gør så skulle dette gerne stå som mit \"SVAR\".
Det ser ud til at eksperten har nogle problemer med opdateringen :-(

mvh Geo
Avatar billede rune.osterdal.com Nybegynder
19. juni 2001 - 14:18 #20
tjaaa.. de sidste to fra dig er kommentarer, ikke svar...
jeg kig ind forbi ind i mellem...
---
du kan evt. kigge forbi
http://www.eksperten.dk/spm/82861
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 14:26 #21
mmm. stadig intet...
Derudover: Vi sidder her og kæmper med et projekt, der skal afleveres torsdag. -og hvor er vores lærere? De holder fri. (o; Så Geo: Du er gud! Jeg skulle for øvrigt sende knus og kys fra de tre piger i vores gruppe. Fra mig må du nøjes med taknemlighed og point! (o;
Avatar billede lingoman Nybegynder
19. juni 2001 - 14:43 #22


Det minder meget om mit multimedie hold. Vores lærer introducerede os til Director... 2 uger senere havde hun sagt op for at finde nye udfordringer!

Vi elever lærte MEGET, MEGET MERE af hindanden de næste 6 måneder end vi nogensinde ville have lært fra nogen lærere.

Så.. drik Cola og Bare hæng i !!!

mvh Geo

Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 14:48 #23
Colaen flyder.... Jeg købte 12x1,5 L ca. da vi startede på projektet. Fortryder jeg ikke købte lidt flere.. (o;
Har du egentlig en hjemmeside? Det kunne da være sjovt at se hvem man har fået hjælp af... www.lingoman.dk viser jo intet...
Avatar billede lingoman Nybegynder
19. juni 2001 - 15:01 #24
Hjemmesiden skulle gerne være klar efter sommerferien.

Jeg har forresten også rettet dit andet spørgsmål! Ja, den var nem.
Du bliver sgu nok en lingo haj inden deadline!

På genhør!
Avatar billede lingoman Nybegynder
19. juni 2001 - 15:53 #25
Der kan vist ikke oprettes flere svar på dette spørgsmål så points er nok tabt....øv.
Avatar billede lingoman Nybegynder
19. juni 2001 - 15:56 #26
>>Rune har du heller ikke mulighed for at acceptere svaret for oven?
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 16:29 #27
Der skulle jo være en accepter svar-mulighed her i bunden.... det er der ikke... )o;
(ser lige hvad der sker hvis jeg opretter svar..)
Avatar billede unclefuckers.dk Nybegynder
19. juni 2001 - 16:31 #28
det hjalp..
endnu engang:
TAK FOR HJÆLPEN...
slåsser desværre stadig med det andet spørgsmål..
husene bevægede sig på et tidspunkt, men pludselig gider de ikke længere.. har jeg ikke fundet ud af noget inden kl. 17 oploader jeg min opdaterede fil og giver besked om det på spørgsmålet...
Avatar billede lingoman Nybegynder
19. juni 2001 - 16:34 #29
Fornemt Rune,

Du kan også skive direkte til mig hvis der er mere jeg kan hjælpe med.

mvh Geo
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