Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- Dessa variabler definierar förutsättningarna (svårighetsgraden)
- local maxCommands = 10
- local gravity = 10
- local safeSpeed = 10
- local startFuel = 500
- local startHeight = 1000
- local maxBurn = 20
- -- Dessa variabler definierar raketens nuvarande status
- local rocketInAir = false
- -- Lägg till variabler för raketens nuvarande höjd, bränsle och hastighet
- local rocketcurrentHeight = 0
- local rocketcurrentFuel = 0
- local rocketcurrentSpeed = 0
- -- Lägg till variabler för simuleringens tid och antal använda kommandon
- local rocketsimulatedTime = 0
- local rocketusedCommands = 0
- -- Lägg till en variabel för huruvida du har lyckats landa säkert eller inte
- local rocketsafeLanding = false
- if not rocket then
- rocket = {}
- end
- -- Kolla om variabeln SAVED_rocketHistory finns och skapa den som ett tomt table om den inte finns.
- SAVED_rocketHistory {}
- -- Detta är alltså den variabel som skall sparas mellan omstarter av WoW.
- local function handleGroundHit()
- -- Sätta variabeln rocketInAir till falskt.
- local rocketInAir = false
- -- Kolla om du landade säkert eller krashade.
- -- Sätt variabeln för säker landning till sant om du lyckades.
- -- Skriv ut meddelanden om hur det slutade samt hur mycket bränsle och kommandon du hade kvar.
- -- Spara resultatet i rakethistorien om det är slut.
- end
- -- Skapa en lokal funktion som heter moveRocket och som tar ett argument - hur mycket raketen gasar (burn).
- -- Denna funktion ansvarar för den "fysiska" förflyttningen av raketen och kontroll mot marken.
- -- Den skall inte gå att anropa direkt från WoW utan används bara i denna fil och är därför local.
- -- Uppdatera raketen, dvs dess bränsle, hastighet och höjd, samt den tid som har gått sedan starten.
- -- Uppdateringen gäller exakt ett (1) helt tidssteg.
- -- Hastigheten ökar med gravitationen och minskar med gas (burn).
- -- Kom ihåg att man inte skall kunna gasa mer än maxBurn, eller med än vad man har bränsle till!
- -- Skriv ut tid, hastighet och höjd för detta tidssteg
- -- Kolla om du har träffat marken
- -- Anropa du funktionen handleGroundHit om du har träffat marken.
- -- Returnera falskt om du har träffat marken, annars sant. Dvs sant om man kan fortsätta.
- -- Slut på funktionen
- function rocket.drop()
- -- Nollställ alla raket-status-variabler, inklusive tid, säker landning och använda kommandon.
- -- ... och sätt rocketInAir till sant
- -- Skriv ut startmeddelande med förutsättningarna
- end
- function rocket.command(burn,duration)
- -- Kolla att raketen är i luften - annars kan man inte ge den kommandon.
- if not rocketInAir then
- print("Ingen raket i luften nu - släpp en ny raket först.")
- return
- end
- -- Se till att man inte gasar mer än man kan
- if burn > maxBurn then
- print("Du försökte gasa mer än vad som är möjligt. Gas satt till max: "..maxBurn)
- burn = maxBurn
- end
- -- Uppdatera raketen så många tidssteg som duration säger (med en loop)
- -- Använd funktionen moveRocket som du har skrivit ovan för att flytta raketen ett tidssteg i taget med en viss gas.
- -- Avbryt loopningen om moveRocket returnerar falskt. (Dvs, om du har nått marken).
- -- Uppdatera antalet använda kommandon
- -- Kolla om du fick slut på bränsle eller har slut på kommandon. Skriv ut det i så fall.
- -- Kolla om raketen fortfarande är i luften och du har slut på något av det ovan:
- -- Låt raketen falla fritt genom att anropa moveRocket med 0 i gas tills marken är nådd.
- -- Kolla om raketen fortfarande är i luften (rocketInAir)
- -- Om den är det så skriv ut hur många kommandon och hur mycket bränsle du har kvar
- end
- function rocket.printHistory()
- -- Skriv ut rakethistorien
- end
- -- Skriv en funktion som heter rocket.clearHistory och gör det nedan när den anropas:
- -- Nollställ rakethistorian
- -- Slut på funktionen - den är enkel ;)
- print("Rocket.lua loaded")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement