Avatar billede rune.osterdal.com Nybegynder
19. juni 2001 - 14:17 Der er 30 kommentarer og
1 løsning

handler not defined...

Vi har et spil med en masse ting, der bevæger sig nedad til venstre efter et script. Det fungerer fint.
Problemet er, at alle huse, forhindringer, etc. som default er sat til ikke at bevæge sig og man kan så ændre
deres \"flyt\" til true og de begynder at flytte sig. I \"on preparemovie\" sendes en besked til en sprite om at nu
skal dette hus flytte sig (flyt sprite (random(6)+20). Den siger dog \"handler not defined!\", hvilket nok skyldes
at den jo ikke kender flyt allerede i \"on preparemovie\", da den er skrevet i hus-scriptet.
Min .dir ligger her: http://www.mediestud.dk/ADMIN/rune/projekt2/spil.zip
Har en idé om at dette skulle være rimelig let.... meeen.. (o;
Avatar billede lingoman Nybegynder
19. juni 2001 - 14:45 #1
Checker det nu!

mvh Geo
Avatar billede lingoman Nybegynder
19. juni 2001 - 14:56 #2
Ja, det er kun en syntaks fejl!

Hvis du vil sende en besked såsom \"flyt\" til  spriten i kanal x , kan du bruge:

sprite( x, #flyt)

Derfor skal du blot rette den sidste kommando i prepareMovie handleren

erstat
  flyt sprite (random(6)+20)

med

  set randomSprite = random(6)+20
  sendsprite(randomSprite,#flyt)

Det gør scriptet lidt mere forståeligt når man deler det op i 2 linjer selvom man sagtens kan skrive det i én linje. Husk lige # symbolet, OK?

Nu virker det igen!

mvh Geo
Avatar billede lingoman Nybegynder
19. juni 2001 - 15:06 #3
Uuups!

Der skulle vist stå sendsprite( x, #flyt)
Avatar billede kanding Nybegynder
19. juni 2001 - 15:56 #4
eller sprite(randomSprite).flyt()

Avatar billede ask-m Nybegynder
19. juni 2001 - 16:58 #5
Det er ret imponerende hvis det virker, for prepareMovie bliver kaldt før en sprite er initialiseret, og man kan ikke forvent at scripts\'ne er \"klar\"...
Det skal nok være on prepareFrame, eller on startMovie at du sender #fly til en given sprite.


event rækkefølgen er:
-- \"prepareMovie\"
-- \"beginSprite\"
-- \"prepareFrame\"
-- \"StartMovie\"
-- \"enterFrame\"
-- \"exitFrame\"

Ask
Avatar billede lingoman Nybegynder
19. juni 2001 - 18:46 #6
Rune,

Ask har ret! event rækkefølgen er som Ask har skrevet.

Derfor må vi enten bruge prepareFrame eller startMovie til at sende #fly beskeden.

Prepare frame har nogle fordele, men du skal være opmærksom på
at prepareFrame bliver kaldt hver gang den kommer til framen og
der bør derfor IKKE være en \"go to the frame\" i samme frame.

Udvid spritespan så din \"go to the frame\" kommer i en anden (efterfølgende) frame.

Fordelen ved prepareFrame er dog at spriten for tildelt den nye position inden framen optegnes- Derfor slipper vi for at se huset rykke sig fra sin default startposition.

Jeg har brugt en startMovie i stedet for og sendt zip filen til dig

mvh Geo
Avatar billede rune.osterdal.com Nybegynder
19. juni 2001 - 18:52 #7
takker.. jeg er allerede i fuld gang... men du har sikkert noget i filen jeg kan bruge... jeg har et lille problem med husene, når de alle har klaret turen hen over skærmen en gang... (vender tilbage inden 20.00).
MVH
Rune
Avatar billede rune.osterdal.com Nybegynder
19. juni 2001 - 19:05 #8
så er min spil.zip fil opdateret. (se link ovf.)
I skal være velkomne til at kigge på mit husproblem. Altså når husene har kørt én gang bliver de uregelmæssige...
Avatar billede lingoman Nybegynder
19. juni 2001 - 21:10 #9
Nogle af husene overlapper hinanden. Hvilke andre uregelmæssigheder er der ?

hilsen Geo
Avatar billede rune.osterdal.com Nybegynder
19. juni 2001 - 21:18 #10
det er netop dette overlap, der er problemet..
Jeg arbejder lige nu på at klare problemet via en liste. Spændende og se hvordan det går. Har du en smart idé er du naturligvis mere end velkommen til at komme med den! (o; Løses dette problem i aften (bliver siddende et par timer endnu), hvilket er mit mål, falder der ekstra 100 point af til hjælperen.
Avatar billede lingoman Nybegynder
19. juni 2001 - 21:21 #11
Det Lyder som en udfordring! Det kan jeg lide.

Jeg tager fat på det når jeg har lagt ungerne.

hilsen Geo
Avatar billede rune.osterdal.com Nybegynder
19. juni 2001 - 21:31 #12
her er hvad jeg har bikset sammen indtil videre..
ikke testet...
on beginsprite me
set huslist to [1,2,3,4,5,6]
..
on exitframe me...
if the loch of sprite mig > 300 and not etflyt then
      if count(huslist) = 0 then
        set huslist to [1,2,3,4,5,6]
      end if
      set ranhus to random(count(huslist))
      flyt sprite getpropat(ranhus)
      deleteat huslist,(ranhus)
      set etflyt to true
..
Har ikke arbejdet ret meget med lists i Lingo.. (o;
Avatar billede rune.osterdal.com Nybegynder
19. juni 2001 - 23:14 #13
Fil opdateret med mine spæde list-forsøg i husscriptet.
Nu vil jeg hjem. Kigger lige her forbi omkring midnat.
Avatar billede kanding Nybegynder
19. juni 2001 - 23:56 #14
Uden at have set filen er jeg overbevist om at det er synkroniseringen der kikser når et hus flyttes. I det der testes om locH er > 300, flyttes huset tilbage til en fast loch formoder jeg, problemet er bare at inden der bliver testet om vi er > 300 kan de have rykket sige et step mere og så får vi et overlap eller et mellemrum. Det vil sikkert også variere på en langsommere/hurtigere computer.
Et par tanker:
1. Test nærmeste sprites loch og sæte den i forhold til den
2. sørg for at der huse der går lidt ud over stage og implementer at der checkkes for mellemrum.

Jeg ved ikke hvorlangt du er nået og om du har mod på noget nyt, men jeg ville lave det med imagelingo istedet. Det er lidt sent nu, men jeg vil prøve at få kigget på filen.
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 00:16 #15
..and not etflyt....
når der sendes en besked til et random hus ændres etflyt til true og et givent hus kan derfor kun sende besked til ét andet hus om aktivering. Husene fortsætter ud af skærmen til >900-testen fanger den.
--
hmmm.. mod på noget nyt. Målet er at husscriptet gerne skulle være færdig tidligt i morgen, da vi skal bruge idéen til forhindring osv. vi mangler stadig implementering af interaktion mellem cyklist og forhindringer... styrt, point, livmåler osv. Vi har nogle af pigerne til at kigge på programmeringen af det, men det skal jo sættes ind i en sammenhæng. Men er det smart og kan det klares på en time eller to kunne jeg da godt gå i krig med det...
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 00:50 #16
signing off
- - - - - -
zZzZzZzZzZzZ
Avatar billede lingoman Nybegynder
20. juni 2001 - 09:09 #17
Godmorgen Rune!

Så gir jeg det en skalle.
Det ser ud til at Kanding også kommer med en løsning, så vi skal nok få den klaret inden kl. 10.

hilsen Geo
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 10:19 #18
Godmorgen Geo!!
Ja, jeg møder lidt sent i dag. Sådan går det efter en arbejdsdag fra 9.30-23.15...
Ja, så er jeg også klar til at give det en skalle!
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 10:48 #19
jeg har tænkt på at i stedet for den linie med \">300 and not etflyt\" i stedet bare skulle have en tæller af en slags...
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 11:13 #20
fil opdateret...
Jeg har blot tilføjet biler og brugt samme idé som til husene.. Nu skal jeg til at se hvordan bil- og husscripts skal se ud for at de fremkommer i tilfældig rækkefølge på skærmen.
Avatar billede lingoman Nybegynder
20. juni 2001 - 11:43 #21
Hej Rune!

Dit HusScript er KLAR!

Jeg vil gerne sende zip filen til dig men det lader til at min mail server er nede.

Jeg skriver derfor ændringerne som jeg har tilføjet her i min næste kommentar så du hurtigst muligt kommer videre.

Pass Lidt På fordi det ikke er sikkert at jeg for alle tilføjelser med i første omgang så check tilbage her hvis det ikke virker med det samme.

mvh Geo
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 12:01 #22
glæder mig....
Her kan du se hvad vi har bikset sammen til huset... det virker ikke helt.
---
on beginsprite me
  set mig to the spritenum of me
  set flyt to false
  set startloch to 12 --sættes til en negativ værdi
  set startlocv to 120 --sættes til en negativ værdi
  set the loch of sprite mig to startloch
  set the locv of sprite mig to startlocv
  set fart to 10
  set retning to \"tilbage\"
  set etflyt to false 
  set flytter to false
  set huslist to [#1 0,#2 0,#3 0,#4 0,#5 0,#6 0] --0=off 1=on
  set husudvaelg to true
end

on flyt me
  if getpropat(huslist,mig-10) = 1 then --getPropAt([#a10, #b20],2)
    return
  end if
  set wolla to mig-10
  huslist.(wolla) = 1
end

on exitframe me
  if getpropat(huslist,mig-10) = 0 then --hvis huset ikke skal bevæge sig
    return
  else
    set posv to the locv of sprite mig
    set posh to the loch of sprite mig
    set the loch of sprite mig to nyxplacering(posh,fart,retning) -- udregning af ny x-koordinat
    set the locv of sprite mig to nyyplacering(posv,fart,retning) -- udregning af ny y-koordinat
    if the loch of sprite mig > 1000 then -- hvis huset er kørt gennem skærmen og placeret udenfor
      huslist.(wolla) = 0
      set etflyt to false
      set the loch of sprite mig to startloch
      set the locv of sprite mig to startlocv
      return
    end if
    if the loch of sprite mig > 300 and not etflyt then
      set ranhus to random(count(huslist))
      if getpropat(huslist,ranhus) = 0 then
        flyt sprite ranhus+10
        put huslist
        set etflyt to true
      end if
    end if
  end if
end
Avatar billede lingoman Nybegynder
20. juni 2001 - 12:07 #23
--------husScript--------------
property mig
property fart
property posv
property posh
property retning
property flythus
property startloch
property startlocv
property etflyt
property ranhus
property flytter

global NyHusList

on beginsprite me
  set mig to the spritenum of me
  set flythus to false
  set startloch to 12 --sættes til en negativ værdi
  set startlocv to 120 --sættes til en negativ værdi
  set the loch of sprite mig to startloch
  set the locv of sprite mig to startlocv
  set fart to 10
  set retning to \"tilbage\"
  set etflyt to false 
  set flytter to false
  addMigTilNyHus me
end


on setFlytStatus me
  if sprite(mig).locH > 1000 then
    stopHus me
  else
   
    if sprite(mig).loc = point(startLocH,startLocV) then
      AddMigTilNyHus
    end if
   
    if (sprite(mig).locH > 300) and (etflyt = FALSE) and (flytHus = true) then
      startNytHus me
    end if
   
  end if
  --bemærk at kun aktiverNytHus kan sætte flytHus = TRUE og at vi endnu ikke flytter nogle huse
 
end

on addMigTilNyHus me
  if getOne(NyHusList,mig) = 0 then add NyHusList, mig
  set etflyt  = FALSE
  set flytHus =FALSE
end


on startNytHus me
  set nyHusCount = NyHusList.count
  if nyHusCount <> 0 then
    set nytHus = NyHusList[random(nyHusCount)]
    sendSprite(nytHus,#flyt)
    deleteOne( NyHusList,nytHus)
    set etflyt = TRUE
  end if
  repeat with NyHusSprite in NyHusList
    sendSprite(nyHusSprite, #stopHus)
  end repeat
 
end

on stopHus me
  set flythus to False
end

on flyt me
  set flythus to true
end

on exitframe me
  if flytHus then
    set posv to the locv of sprite mig
    set posh to the loch of sprite mig
    set the loch of sprite mig to nyxplacering(posh,fart,retning) -- udregning af ny x-koordinat
    set the locv of sprite mig to nyyplacering(posv,fart,retning) -- udregning af ny y-koordinat
  else
    sprite(mig).loc = point(startLocH,startLocV)
  end if
  setFlytStatus me  --opdater min status
 
end

------------------------end husScript------------------------

som du ser er der tilføjet en global liste af \"nyeHuse\" altså den der må vælges fra når et random hus skal sættes igang

Der er også delt op på handlingen. Alle ændringer i FlytHus, etFlyt klares af

setFlytStatus  EFTER  husene er flyttet i exitFrame. Dette holder styr så timing ikke kikser igen.

beginSprite tilføjer husSprite til den globale NyHusList automatisk

startMovie og prepareMovie initialiserer resten


---------------------dit nye MovieScript--------------------

global NyHusList
on preparemovie
 
  global sentsprite
 
  set NyHusList = []
  set sentsprite to false
  -- 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
  global vinkel
  set vinkel to atan(1.000*(yb-ya)/(xb-xa))
end

on startmovie
  NytHus
end



on NytHus
  set nyHusCount = NyHusList.count
  if nyHusCount <> 0 then
    set nytHus = NyHusList[random(nyHusCount)]
    sendSprite(nytHus,#flyt)
    deleteOne( NyHusList,nytHus)
  end if
 
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

on henttast
  global sidstetast
  res = sidstetast
  set sidstetast = 0
  return res
end

on keydown
  global sidstetast
  set sidstetast = the keycode
end


---------------end MovieScript------------------

Eftersom vi begge to har redigeret videre på scriptsne kan det hurtigt blive noget rod hvis jeg blot antager at \"resten af dine movieScripts er som før\".

Kopier derfor hele  scripts ind i dit moviescript cast


-gentager hele movieScripet!

Jeg krydser fingre,

mvh Geo
Avatar billede lingoman Nybegynder
20. juni 2001 - 12:16 #24
Zip filen er nu sendt til din email

mvh Geo
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 12:22 #25
Tusind tak skal du have!!!
Der kommer et link senere til 100 point.
Men lige nu vil jeg altså i krig med det du har sendt... (o;
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 14:48 #26
Hej igen!
[fil opdateret]
Hvis du keder dig, kan du jo kigge på hvorfor risten ikke bevæger sig korrekt.. en detalje, vi pt. har nedprioriteret.. (o;
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 15:33 #27
glem det...
det er et generelt gradproblem for alle ting!
Det handler vel bare om at aflæse to mere præcise punkter...
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 16:14 #28
Hej Geo!!
se http://www.eksperten.dk/spm/83242 for point samt nyt spørgsmål!
Avatar billede lingoman Nybegynder
20. juni 2001 - 16:24 #29
Hej Rune,

check lige om denne kode dutter til din cyklist

-----------cyklist behavior-------------

property mig
property fart
property retning
property posV -- cyklens nuværende vertikale position
property posH -- cyklens nuværende horisontale position
property tast
property grad --  grad er et udtryk for hvilken retning objektet skal flyttes i.
-- 20 = lidt nedad til venstre
-- 110 =

on beginsprite me
  set mig to the spritenum of me
  set fart to 15
end


on exitframe me
  set posV to the locv of sprite mig
  set posH to the loch of sprite mig
  set tast to henttast()
  moveCyklist me
  exit
 
end

on moveCyklist me
  case tast of
    123: set retning = \"ned\"
    124: set retning = \"op\"
    125: set retning = \"tilbage\"
    126: set retning = \"frem\"
    otherwise
      exit
  end case
  set the loch of sprite mig to nyxPlacering(posh,fart,retning)
  set the locv of sprite mig to nyyPlacering(posv,fart,retning)
end

-----------------end cyklist----------------

Er der andet som jeg skal se på?

mvh Geo
Avatar billede rune.osterdal.com Nybegynder
20. juni 2001 - 16:43 #30
Tak for det!
Pigerne spø\'r hvad du laver til hverdag? Godt spørgsmål tænkte jeg. Arbejder du med (Lingo)programmering eller er det en fritidsinteresse?
Avatar billede lingoman Nybegynder
20. juni 2001 - 17:12 #31
Hej piger!

Jeg arbejder som konsulent og freelance udvikler i Director og Flash.

Lingo er helt klart også på toppen af listen når det gælder fritidsinteresser.

Jeg er vild med paragliding men har ikke længere tid til det efter jeg fik børn.

Fortæl mig lidt om jer selv når engang projektet er færdigt!

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