Kode for nettsted for kjøreskole. (Eksamen H 2008)


Se også Planlegging av brukergrensesnitt, datastruktur og programstruktur.

Kode for nøkkelrammen Quizramme:

/**************************************************
	Kode som kjører i nøkkelrammen Quizramme
	Ulven 01.03.13
***************************************************/


/// --- Konstanter, variabler, datastruktur --- ///

// Tekststrenger. (Samler i tilfelle oversettelser til andre språk.)

const SPORSMAL_TEKST:     String= "Spørsmål nr: ";
const SVAR_TEKST: 	String = "Du svarte:       ";
const RIKTIG_TEKST:	String = "Riktig svar var: ";

var sporsmalsnummer: int = 0;		//Hvilket spørsmål er vi på nå
var i: int = -1;					//Til bruk i for-løkker

/// --- Datastruktur (tabeller) --- ///

const ANTALLSPORSMAL: int = 4;

var quiztabell: Array = 
   [
      {sporsmal: "Hvor gjelder forbudsskilt hvis ikke annet er oppgitt?",
       bildenavn:"bilde1.jpg",
       alternativer:[ "Fra skiltet og til skiltet blir opphevet.",
                      "Fra skiltet og 250 meter fremover.",
                      "Fra skiltet til nærmeste vegkryss",
                      "Strekningen fra 50 meter etter skiltet til 250 meter etter skiltet."],
       riktignr:  2},
      {sporsmal: "Hvordan foretar du best mulig bremsing og unnastyring?",
       bildenavn: "bilde2.jpg",
       alternativer:[ "Kobling ned, brems, slipp brems, styr unna.",
                      "Brems,kobling ned, slipp brems, styr unna.",
                      "Brems, kobling ned, styr unna, slipp brems.",
                      "Kobling ned, brems, styr unna, slipp brems."],
       riktignr: 1},
      {sporsmal: "Regnes det som parkering dersom føreren sitter igjen i bilen mens en passasjer er for å handle?",
       bildenavn: "bilde3.jpg",
       alternativer:[ "Ja.",
                      "Nei.",
                      "Ja, men bare hvis bilen står mer enn 5 minutter.",
                      "Ja, men bare hvis bilen står mer enn 15 minutter." ],
       riktignr: 0}, 
      {sporsmal: "Hva gjør du når du ser en fotgjenger foran deg?",
       bildenavn: "bilde4.jpg",
       alternativer:[ "Kjører ham ned!",
                      "Kjører ham ned, og rygger over ham en gang til for sikkerhets skyld!",
                      "Stopper og slipper ham frem.",
                      "Later som jeg stopper, og så kjører jeg over ham!" ],
       riktignr: 2}	  
   ];
var svartabell: Array = new Array();	//Tomt, må fylles opp:

var obj: Object;
for(i=0;i<ANTALLSPORSMAL;i++) { 		//Klargjør svartabellen
   obj = new Object();
   obj.svarnr = -1;			//-1: Ikke besøkt ennå
   obj.riktig = false;			//Foreløpig galt
   svartabell.push(obj);
}//for
/// --- Hovedprogram --- ///

stop();			//Bli i denne nøkkelrammen. (Frame "Quiz")

btnNeste.addEventListener(MouseEvent.CLICK,nesteTrykket);  //Heng på lyttere
btnTilbake.addEventListener(MouseEvent.CLICK,tilbakeTrykket);

gjorKlar(0);	//Sett opp første skjermbilde

/// --- Lytterfunksjoner --- ///

function nesteTrykket(evt: Event):void {
							trace("nesteTrykket() kjører...");
   // Sjekk svar og ajourfør svartabell
   sjekkSvar(sporsmalsnummer);

   // Gå til neste spørsmål
   sporsmalsnummer++;
	
   // Gjør klar neste spørsmål eller gå til resultater
   if(sporsmalsnummer==ANTALLSPORSMAL) {	
      gotoAndStop("Resultater");		//Ferdig, gå til nøkkelramme "Resultat"
   }else{
      gjorKlar(sporsmalsnummer);  	//Gjør klar neste spørsmål
   }//if
}//nesteTrykket()
function tilbakeTrykket(evt: Event):void {
							trace("tilbakeTrykket() kjører...");
   // Sjekk svar og ajourfør svartabell
   sjekkSvar(sporsmalsnummer);

   // Gå til forrige spørsmål
   sporsmalsnummer--;

   // Gjør klar forrige spørsmål eller bli i første spørsmål.
   if(sporsmalsnummer<0) {
      sporsmalsnummer=0;			//Forbli i første, korriger nummer
   }else{
      gjorKlar(sporsmalsnummer);  //Gjør klar forrige spørsmål
   }//if							
}//nesteTrykket()
/// --- Funksjoner --- ///

/*  sjekkSvar(nr):
    Sjekker svar på spørsmål nr, og ajourfører svartabellen
*/
function sjekkSvar(nr: int): void {	trace("sjekkSvar(" + sporsmalsnummer + ") kjører...");
   var svarnr:int = int( chkAlt1.group.selection.value ); 
   svartabell[nr].svarnr=svarnr
   if(svarnr==quiztabell[nr].riktignr){		
      svartabell[nr].riktig=true;
   }else{
      svartabell[nr].riktig=false;
   }//if
}//sjekkSvar()
/*  gjorKlar(nr):
    Gjør klar skjermbildet for nr
*/
function gjorKlar(nr: int):void {		trace("gjorKlar(" + sporsmalsnummer + ") kjører...");

   // Setter tekstfelter i GUI:
   txtOverskrift.text = SPORSMAL_TEKST+(nr+1);
   txtSporsmal.text = quiztabell[nr].sporsmal;
   // Laster bilde:
   ldrBilder.source = "bilde"+(nr+1)+".jpg";
   // Setter riktig radioknappvalg:
   if(svartabell[nr].svarnr==-1){	//Hvis ikke besøkt før
      chkAlt1.selected=true;		//    så er første default
   }else{							//Ellers (når btnTilbake)
      settValgt(svartabell[nr].svarnr); //sett riktig radioknapp
   }//if
   // Setter opp tekst til alternativene:
   chkAlt1.label = quiztabell[nr].alternativer[0];
   chkAlt2.label = quiztabell[nr].alternativer[1];
   chkAlt3.label = quiztabell[nr].alternativer[2];
   chkAlt4.label = quiztabell[nr].alternativer[3];	
}//gjorKlar()
/*
	settValgt(nr):
	Setter riktig radioknapp
*/
function settValgt(nr:int):void {
if(nr==0){
   chkAlt1.selected=true;
}else if(nr==1){
   chkAlt2.selected=true;
}else if(nr==2){
   chkAlt3.selected=true;
}else{
   chkAlt4.selected=true;
}
}//erValgt()

Kode for nøkkelramme Resultatramme:

/*************************************************
    Kode som kjøres i nøkkelrammen Resultatramme.
**************************************************/

trace("Resultater");

var antallriktige: int = beregnSumRiktige();
var prosentvis: Number = antallriktige*100.0/ANTALLSPORSMAL;
txtRiktige.text = String( antallriktige );
txtProsent.text = String( prosentvis.toFixed(0 ));

var svarnr: int=-1;
var riktignr: int = -1;
txtGale.text="";					//Tøm tekstarealet
for(i = 0;i<ANTALLSPORSMAL;i++) {
   svarnr=svartabell[i].svarnr;
   riktignr=quiztabell[i].riktignr;
   if( !svartabell[i].riktig) {
      txtGale.appendText(SPORSMAL_TEKST+(i+1)+"\n");  //Spørsmål nr i(+1)
      txtGale.appendText( SVAR_TEKST+quiztabell[i].alternativer[svarnr]+"\n" );
      txtGale.appendText( RIKTIG_TEKST+quiztabell[i].alternativer[riktignr]+"\n\n" );   
   }//if galt svar
}//for


function beregnSumRiktige():int {
   var sum: int = 0;
   for(i = 0;i<ANTALLSPORSMAL;i++) {
      if(svartabell[i].riktig){
         sum++;
      }//if
   }//for
   return sum;
}//beregnSumRiktige()