U Flashu veoma jednostavno mozemo napraviti kviz koji moze posluziti u razne svrhe a najcesce su edukacija i zabava. Demo kviza koji se nalazi na ovim stranicama napravili su ucenici 7. razreda osnovne skole na jednom od mojih kurseva. Ja sam posudio jedan source, pitanja su sastavljali ucenici tako da nisam siguran u valjanost nekih tacnih odgovora, ali kako bilo, vi cete vec promijeniti pitanja u ona koja se vama svidjaju.
Code:
stop ();
naprijed.onRelease = function (){
nextFrame ();
};
var pitanja = "";
var frejm = 0;
var odgovor1 = "";
var odgovor2 = "";
var odgovor3 = "";
var score = 0;
var ime = "";
var zuf = false;
this.onEnterFrame = function (){
frejm = _currentframe;
//pitanje br.1
if (frejm == 2) {
pitanja = "Složene riječi se sastoje iz...?";
odgovor1 = "dvije ili više prostih riječi";
odgovor2 = "tri ili četri";
odgovor3 = "pet ili šest";
//odredjivanje tacnog i netacnog odgovora
if (ime == "b0"){
//tacan odgovor
if (zuf){
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
}
else if (ime != "b0"){
//netacan odgovor
if (zuf){
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
}
//pitanje br.2
if (frejm == 3) {
pitanja = "Kolika je površina Istočne Azije?";
odgovor1 = "12.9 miliona km2";
odgovor2 = "11.miliona km2";
odgovor3 = "328.876 miliona km2";
//odrejivanje tacnog i netacnog odgovora
if (ime == "b2"){
if (zuf) {
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
}
else if (ime != "b2") {
if (zuf) {
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
}
//pitanje br.3
if (frejm == 4) {
pitanja = "Koje su dvije struje u Istočnoj Aziji?";
odgovor1 = "pijušijoj i lajnišijoj";
odgovor2 = "hladna i topla";
odgovor3 = "kurašijoj i ojašijoj";
//odrejivanje tacnog i netacnog odgovora
if (ime == "b2") {
if (zuf) {
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
}
else if (ime != "b2") {
if (zuf) {
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
}
if (frejm == 5) {
pitanja = "Kako se zove poznati pisac koji je napisao knjigu Mirjamina kosa?";
odgovor1 = "Amira Mujaković";
odgovor2 = "Ismeta Džibrić";
odgovor3 = "Isak Samokovlija";
//odrejivanje tacnog i netacnog odgovora
if (ime == "b2") {
if (zuf) {
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
}
else if (ime != "b2") {
if (zuf) {
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
}
if (frejm == 6) {
pitanja = "Šta su homonimi?";
odgovor1 = "Višeznačnost riječi";
odgovor2 = "Riječi istog značenja a različitog glasovnog sastava";
odgovor3 = "Riječi istog glasovnog sastava a različitog značenja";
//odrejivanje tacnog i netacnog odgovora
if (ime == "b1") {
if (zuf) {
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
} else if (ime != "b1") {
if (zuf){
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
}
if (frejm == 7) {
pitanja = "Koja je najsitnija čestica u hemiji?";
odgovor1 = "atom";
odgovor2 = "molekula";
odgovor3 = "proton";
//odrejivanje tacnog i netacnog odgovora
if (ime == "b0") {
if (zuf) {
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
} else if (ime != "b0") {
if (zuf){
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
}
if (frejm == 8) {
pitanja = "Koliko je imao godina Toše Proeski kada je stradao?";
odgovor1 = "26 g.";
odgovor2 = "28 g.";
odgovor3 = "30 g.";
//odrejivanje tacnog i netacnog odgovora
if (ime == "b0") {
if (zuf) {
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
} else if (ime != "b0") {
if (zuf) {
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
}
if (frejm == 9) {
pitanja = "Sa kojom pjevačicom je Toše snimio spot Volim osmijeh tvoj?";
odgovor1 = "Antonijom";
odgovor2 = "Anom";
odgovor3 = "Janom";
//odrejivanje tacnog i netacnog odgovora
if (ime == "b1") {
if (zuf) {
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
} else if (ime != "b1") {
if (zuf) {
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
}
if (frejm == 10) {
pitanja = "Kojoj je školi Toše poklonio opremu za informatički kabinet?";
odgovor1 = "Musa Ćazim Ćatić";
odgovor2 = "21.mart";
odgovor3 = "Breza";
//odrejivanje tacnog i netacnog odgovora
if (ime == "b2") {
if (zuf) {
score += 10;
ime = "";
nextFrame ();
zuf = false;
}
} else if (ime != "b2") {
if (zuf) {
score -= 10;
ime = "";
nextFrame ();
zuf = false;
}
}
} //end of pitanja
if (frejm == 11)
{}};
//definisanje dugmica za tacne i netacne odgovore
for (i = 0; i < 3; i++){
dugme = this["b" + i];
dugme.onRelease = function () {
ime = this._name;
zuf = true; };
}
Ojasnjenje koda:
//definisanje dugmica za tacne i netacne odgovore
for (i = 0; i < 3; i++){
dugme = this["b" + i];
dugme.onRelease = function () {
ime = this._name;
zuf = true; };
}
Napravimo dugmic i postavimo 3 na scenu i damo im instance name: b0, b1, b2. Zatim napravimo for loop
kako bismo svim dugmicima dali isto ime:
Code:
dugme = this["b" + i];
referise na sva tri dugmeta.
Zatim kada smo u release (kliknemo i pustimo)opciji varijabla ime ce zapamtiti koje je to dugme:
Code:
ime = this._name;//output b0 ili b1 ili b2
Zatim definisemo jednu varijablu (nemam pojma zasto zuf) kako bismo znali da je dugme pritisnuto jer se nasa pitanja automatski prebacuju na sljedece nakon klika.
I to je srz, sve ostalo regulise metod onEnterFrame();
U slucaju tacnog odgovora:
Code:
if (ime == "b0"){//koje dugme
//tacan odgovor
if (zuf){ //pocni racunati
score += 10;//bravo dobijas 10 poena
ime = "";//izbrisi ime jer je onEnterFrame
nextFrame ();//idi dalje
zuf = false;//nista nije kliknuto
}
}
U slucaju netacnog odgovora:
Code:
else if (ime != "b0"){//neko drugo dugme-b1 ili b2
//netacan odgovor
if (zuf){ //kliknuli smo
score -= 10;//oduzmi mu bodove
ime = ""; //nijedno dugme
nextFrame ();//idi dalje
zuf = false; //nista nije kliknuto
}
}
sve se ovo odvija u okviru varijable frejm
if(frejm==2)...ide pitanje br. 1 itd.
Ono po cemu je ovaj kviz znacajan je mogucnost daljeg unapredjenje zasto ja nisam nasao vremena.
Ko zeli idealan kviz vrlo lahko moze pitanja i odgovore napisati u externom .txt ili u .xml fajlu pa ih ucitavati i kasnije po potrebi mijenjati.
Treba samo odrediti varijable za sva tri odgovora.,odnosno za pitanja, te ponuditi opciju tacan odgovor sto je opet string: "b0","b1,"b2".
Ili onaj koji zeli moze pitanja i odgovore staviti u array, zatim sve se moze dogadjati u jednom frejmu, dovoljno je umjesto nextFrame() metode upotrijebiti frejm +=1;
Nadam se da ce neko source upotrijebiti da unaprijedi ovaj kviz template.
Link za source i demo
http://flashworld.mygamesonline.org/gamedev.php