Avatar billede zed_one Praktikant
24. juni 2002 - 11:21 Der er 9 kommentarer og
1 løsning

Fejlretning (omskrivning af kode ønskes)

50:antal = rekke1x06.count
            if sprite(brik_moving).member.name <> sprite(rekke1x06[(antal)]).member.name then
              if antal = 1 then
                sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+17)
               
                sprite(rekke1x06[1]).loc = point(720, 94)
               
              else
                error_check = TRUE
              end if
            else
              case (antal) of
                0:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+17)
                 
                1:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+52)
                 
                2:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+87)
                 
                3:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+122)
                 
                4:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+157)
                 
                5:sprite(rekke1x06[2]).locv = sprite(rekke1x06[2]).locv - 17
                  sprite(rekke1x06[3]).locv = sprite(rekke1x06[3]).locv - 34
                  sprite(rekke1x06[4]).locv = sprite(rekke1x06[4]).locv - 51
                  sprite(rekke1x06[5]).locv = sprite(rekke1x06[5]).locv - 68
                  sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+107)
                 
                6:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+124)
                 
                7:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+141)
                 
                8:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+158)
                 
                9:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+175)
                 
                10:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+192)
                 
                11:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+209)
                 
                12:sprite(brik_moving).loc = point(sprite(lykke).loch+4, sprite(lykke).locv+226)
                 
              end case
            end if

får en fejl i denne kode hvis antal = 0
det sker ved:
if sprite(brik_moving).member.name <> sprite(rekke1x06[(antal)]).member.name then

nogen der har en idé til at rette det uden at tilskrive MASSER af extra kode ? :)

desuden ..checker med case (45 til 68 - den man ser her er nr 50), nogen måde jeg kan genbruge koden istedet for at benytte mig af case og gentagelse af kode? - det er det samme der skal ske hver gange - bare med en ny "list" (rekke1x01, rekke1x02 osv)

Mvh.
-Zed
Avatar billede ask-m Nybegynder
24. juni 2002 - 11:52 #1
fejlen kan undgås med en if linie -- if antal > 0 then -- placeret lige efter antal=rekke1x06.count

for hvis antal er 0, spørger den jo til indholdet i en tom liste på placering 0 (det må jo give fejl).

mht. at skrive koden om/genbruge, så kunne du jo flytte det meste ud i en ny handler, som du kalder fra din case række, og sender parametren liste med...

on etEllerAndetForklarendeHandlerNavn theList
      antal = theList.count

      if antal > 0 then
        -- indsæt al din kode her
        -- husk at erstatte "rekke1x06" med "theList"
      end if
end

din case vil nu ligne
50: etEllerAndetForklarendeHandlerNavn( rekke1x06 )
51: etEllerAndetForklarendeHandlerNavn( rekke1x07 )
etc, etc...

Ask-M

ps. Det virker helt vildt kompliceret, hvad er du igang med at lave!!!
pps. "rekke1x01" er et jævnt skidt navn for en liste, ligesom antal også er svært at gennemskue hvad hentyder til. Overvej at gøre lidt mere ud af forklarende navne, det gør det meget nemmere at debugge!
Avatar billede zed_one Praktikant
24. juni 2002 - 12:02 #2
antal = antal entries i listen :)
..skal bruge det til at finde ud af hvilken placering brikken skal ha når den blir flyttet hen over feltet (hvis antal = 4 så skal den placere sig ved placering 5)

rekke= række :) (for at undgå at bruge æøå)

rekke1x01 - rekke1x12 = øverste felter
rekke2x01 - rekke2x12 = nederste felter

er ved at lave et backgammonspil - jeg laver det helt sikkert mere kompliceret end der behøves hehe, meen er jo heller ik top-proff i director :)

anyways  - if linjen havde jeg tænkt på også men derved er jeg nødt til at gentage en del kode - oh well bare det virker :)

tak for hjælpen til hvordan jeg kunne genbruge koden istedet for at gentage den - forsøgte før med "rekke"&a&"x"&b og med noget repeat with a = 1 to 2 og en repeat with b= 1 to 12 indeni, men der ville den jo selvfølgelig ikke genkende det samlet som en liste.

mvh.
-Zed
Avatar billede zed_one Praktikant
24. juni 2002 - 12:06 #3
ps: skal ind og lave multiplayer del til det når det engang virker - dertil vil jeg bruge en irc-server til at overføre data imellem klienterne i "lobbyen"
håber på at IRCops´ene på den server ikke blir FOR sure hehe :)
Avatar billede zed_one Praktikant
24. juni 2002 - 12:33 #4
og nu virker det sørme :)

smid et svar og du får point
Avatar billede ask-m Nybegynder
24. juni 2002 - 12:39 #5
Hej Zed

Jeg kunne godt regne ud at rekke er det samme som række, men det er jo ikke nødvendigvis særligt sigende....

Anyway - du kunne jo proppe rekke'rne ind i en liste, så har du kun en list at holde styr på.
Når du så vil checke række seks, så spørg du bare til backgammonList[6].count og får at vide at den er to (= 0)... det er i hvert fald til at repeate sig ud af.

Ask-M
Avatar billede zed_one Praktikant
24. juni 2002 - 13:19 #6
dvs lists inde i lists ?
Avatar billede ask-m Nybegynder
24. juni 2002 - 13:38 #7
yep
Avatar billede zed_one Praktikant
24. juni 2002 - 13:42 #8
må jeg prøve så - vidste jeg ikke at man kunne. Hvordan får jeg så en specifik værdi ud af en af de lists som jeg samler i én list? .rekke1x01 osv indeholder værdierne for hvilke sprites der ligger på det givne felt.
Avatar billede ask-m Nybegynder
24. juni 2002 - 13:55 #9
backgammonList = [[], [], [], []]

en sprite placeres som nummer 1 i række 4
backgammonList[4].add(7)
eller
add(backgammonList[4], 7)

gad vide hvormange der er i række 3
antal = backgammonList[3].count
eller
subList = backgammonlist[3]
antal = sublist.count

hvilken sprite er i række 7 plads 2
theSprite = backgammonlist[7][2]
eller
subList = backgammonList[7]
theSprite = subList[2]

du skal blot huske at checke at sublisten eksitere og den placering du spørg til i sublisten også eksisterer... jeg plejer at bruge værdien nul i stedet for ingenting, for så kan jeg altid spørge ned i listen uden at få fejl, så skal jeg blot check om resultatet er forskellig fra nul inden jeg begynder at flytte sprites eller hvad det nu måtte være, der skulle ske!!!

Håber det er til hjælp,

Ask-M
Avatar billede zed_one Praktikant
24. juni 2002 - 15:03 #10
tak! - det gir jo rigtigt goe muligheder det der :)

jeg vil forsøge implementation af det da det klart kan reducere længden af min kode (flere steder)

Mvh.
-Zed
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