PDA

Volledige versie bekijken : Highscore probleem


snorroporro
%Europe/Berlin %770 %2008, 18:28
Hey ik ben op zoek naar een tut of iemand die me kan uitlegge hoe ik een highscore in een game zet. Want ik heb nu een drag en drop game gemaakt, maar wil graag dat flash het bijhoud hoeveel goede ik naar de hit test drag en drop. Ik heb zelf 8 knoppen waarvan 3 er goed zijn. Nu is de bedoeling dat als je gelijk de 3 goede eruit pakt, dat je dan een 10 krijgt en voor elk fout antwoord er 1 punt afgaat. Maar ik heb geen idee hoe ik dat doe want als ik scripts zoek voor een highscore tut kom ik altijd bij php en mysql terwijl ik het alleen flash based wil helpen.
Alvast bedankt

Jan
%Europe/Berlin %783 %2008, 18:47
als ik scripts zoek voor een highscore tut kom ik altijd bij php en mysql terwijl ik het alleen flash based wil helpen.
Je bedoelt dan gewoon een score...

Met alleen Flash kan je geen highscores tabel maken. De highscores (van alle voorgaande spelers) moet je toch ergens opslaan. Als je Flash/browser afsluit is alles weg, dus heb je iets server side nodig.
Vandaar: Flash maakt via php een connectie met de database en slaat de score op als het een highscore is.
En andersom idem: connecten via php (of asp als je dat liever doet) met de database om de highscores in te laden in Flash.

Jan

snorroporro
%Europe/Berlin %787 %2008, 18:53
aaah oke dan :P bedankt maar weer

Dauntless
%Europe/Berlin %788 %2008, 18:55
Je kan scores ook wel lokaal opslaan in 'flash - cookies'. Kijk daarvoor naar de LocalSharedObject classe.

nls61
%Europe/Berlin %817 %2008, 19:37
Als je geen mysql of zo hebt kan je het toch nog in een tekst file opslaan?

snorroporro
%Europe/Berlin %858 %2008, 20:35
bedankt voor de tips maar heb nu wel een score systeem (tenminste ik denk dat ik het goed gedaan heb) maar ik krijg me score aan het eind niet te zien. Ik heb zeg maar een drag n drop game met 8 knoppen (zoals hierboven al gezegd is) en als je de 3 goede gedragt en gedropt hebt moet er een "klaar" scherm komen met hierop de score. Ik wil voor elke goede vraag 3 punten en voor elke foute vraag -1 punt. Maar op een of andere manier doet die het niet.
Actionscript:
var buttons:Array = [knop1, knop2, knop3, knop4, knop5, knop6, knop7, knop8];
fout_popup._visible = false;
fout_popup.ok_but.onRelease = function() {
fout_popup._visible = false;
};
goed_popup._visible = false;
goed_popup.ok_but.onRelease = function() {
goed_popup._visible = false;
};
goed_popup2._visible = false;
goed_popup2.ok_but.onRelease = function() {
goed_popup2._visible = false;
};
klaar_popup._visible = false;
klaar_popup.ok_but.onRelease = function() {
klaar_popup._visible = false;
};
count = 0;
score = 0;
for (var i:Number = 0; i<buttons.length; i++) {
buttons[i].beginX = buttons[i]._x;
buttons[i].beginY = buttons[i]._y;
buttons[i].onPress = function() {
startDrag(this, true);
};
buttons[i].onRelease = function() {
this.stopDrag();
checkTarget(this);
};
}
function checkTarget(knop) {
var score:Number = 0
if (Andrew.hitTest(knop)) {
if (knop == knop1 || knop == knop2 || knop == knop3 || knop == knop4 || knop == knop7) {
if (knop == knop1) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nDit is het gebit van een planteneter. En de andrewsarchus was een aaseter.\nProbeer het nog een keer";
_root.score = score -=1
}
if (knop == knop2) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nDe andrewsarchus had geen slagtanden. Want de andrewsarchus was een aaseter en had geen slagtanden nodig omdat het niet hoefde te dode om te kunnen eten.\nProbeer het nog een keer";
_root.score = score -=1
}
if (knop == knop3) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nEen andrewsarchus leefde alleen.\nDit was omdat er anders te weinig eten voor andrew zou zijn. En dan zou de Andrewsarchus uitsterven.\nProbeer het nog een keer.";
_root.score = score -=1
}
if (knop == knop4) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nDe Andrewsarchus leefde niet in de sneeuw. Dit was omdat Andrew geen dikke vacht had, en dus zou doodvriezen.";
_root.score = score -=1
}
if (knop == knop7) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nDe Andrewsarchus leefde niet in het bos. Dit was omdat Andrew niet de juiste schutkleur ervoor had en hij dus teveel opviel.";
_root.score = score -=1
}
//
knop._x = knop.beginX;
knop._y = knop.beginY;
//
fout_popup._visible = true;
} else {
if (knop == knop5) {
goed_popup.tekst = "Uitstekend gedaan!\nDit is inderdaad goed, de andrewsarchus had kleine puntige tanden. Dit was omdat de andrewsarchus een aaseter was en dus geen slagtanden nodig had.";
_root.score = score +=1
}
if (knop == knop6) {
goed_popup.tekst = "Uitstekend gedaan!\nDe andrewsarchos leefde inderdaad alleen. Dit moest wel want anders zou er voor Andrew te weinig voedsel zijn. En zou de Andrewsarchos uitsterven.";
_root.score = score +=1
}
if (knop == knop8) {
goed_popup.tekst = "Uitstekend gedaan!\nDe andrewsarchos leefde inderdaad op het strand. Dit was omdat er genoeg voedsel was, hij door ze schutkleur niet opviel en het was er niet koud.\n";
_root.score = score +=1
}
//
knop._x = -200;
knop._y = -200;
//
count++;
if (count == 3) {
klaar_popup._visible = true;
}
//
goed_popup._visible = true;
}
}
}

Dauntless
%Europe/Berlin %870 %2008, 20:53
Zet je .fla even online.

@Nls61: Dan heb je nog altijd PHP nodig en dan worden de .txt's server-side opgeslagen.

Nog andere mogelijkheden:
- Maak er een AIR applicatie van
- Gebruik Zinc (google)

snorroporro
%Europe/Berlin %891 %2008, 21:23
bedankt voor de hulp mensen!
ben er uit ik weeet wat ik verkeerd gedaan had.
Ik had de var name van de dynamic text verkeerd gedaan. Na lang zoeken vond ik op pagina 12 van google een goede tut die liet zien hoe je zoiets simpels als dit maakt :P. En had overbodig de var:number =0; gedaan was helemaal niet nodig. Maar nu loop ik weer tegen een probleem aan. En dat is dat ik maar 3 knoppen goed heb en een totaal score van 10 wil hebben maar ik kom op of 9.9 en als ik score = Math.round(score) erin zet rond die naar 10.3 af. Heeft een van jullie misschien suggesties hoe ik dat anders aan moet pakken?
Alvast bedankt.

Dauntless
%Europe/Berlin %897 %2008, 21:32
Hoe kan je ooit op 9.9 uitkomen als je altijd gewoon gehele getallen optelt ?

snorroporro
%Europe/Berlin %898 %2008, 21:33
omdat ik maar 3 goede antwoorden heb en bij elke dus 3.3 punten heb omdat er een totaal van 10 moet komen maar 10/3=3.33333333 vandaar 9,9.

Dauntless
%Europe/Berlin %901 %2008, 21:38
Oke... Maar Math.round() moet echt wel een geheel getal teruggeven. Ben je zeker dat er na het afronden niets meer gebeurt met de score?

Trace de variabele eens vlak nadat je hem afgerond hebt.

snorroporro
%Europe/Berlin %911 %2008, 21:52
hmm ik heb dat trace gedaan maar nu pakt hij de eerste score die je goed hebt standaard als 3 en het moet 3.3 zijn.
if (knop == knop5) {
goed_popup.tekst = "Uitstekend gedaan!\nDit is inderdaad goed, de andrewsarchus had kleine puntige tanden. Dit was omdat de andrewsarchus een aaseter was en dus geen slagtanden nodig had.";
_root.score = score +=3.33
}
if (knop == knop6) {
goed_popup.tekst = "Uitstekend gedaan!\nDe andrewsarchus leefde inderdaad alleen. Dit moest wel want anders zou er voor Andrew te weinig voedsel zijn. En zou de Andrewsarchus uitsterven.";
_root.score = score +=3.33
}
if (knop == knop8) {
goed_popup.tekst = "Uitstekend gedaan!\nDe andrewsarchus leefde inderdaad op het strand. Dit was omdat er genoeg voedsel was, hij door ze schutkleur niet opviel en het was er niet koud.\n";
_root.score = score +=3.33
}
score = Math.round(score)
trace(score);
alvast bedankt :P

Dauntless
%Europe/Berlin %912 %2008, 21:54
Je doet het nu overigens dubbel, score += 3.33 is voldoende.

En wat geeft hij nu als trace?
Ook: Maak van je if's, else if's.

snorroporro
%Europe/Berlin %915 %2008, 21:58
ja ik had al else if's maar liet niet zien hier is me hele script. En als ik zon score van 3.33 weg haal dan geeft die het als 0 aan :S
var buttons:Array = [knop1, knop2, knop3, knop4, knop5, knop6, knop7, knop8];
fout_popup._visible = false;
fout_popup.ok_but.onRelease = function() {
fout_popup._visible = false;
};
goed_popup._visible = false;
goed_popup.ok_but.onRelease = function() {
goed_popup._visible = false;
};
goed_popup2._visible = false;
goed_popup2.ok_but.onRelease = function() {
goed_popup2._visible = false;
};
klaar_popup._visible = false;
klaar_popup.ok_but.onRelease = function() {
klaar_popup._visible = false;
};
count = 0;
score = 0;
for (var i:Number = 0; i<buttons.length; i++) {
buttons[i].beginX = buttons[i]._x;
buttons[i].beginY = buttons[i]._y;
buttons[i].onPress = function() {
startDrag(this, true);
};
buttons[i].onRelease = function() {
this.stopDrag();
checkTarget(this);
};
}
function checkTarget(knop) {
if (Andrew.hitTest(knop)) {
if (knop == knop1 || knop == knop2 || knop == knop3 || knop == knop4 || knop == knop7) {
if (knop == knop1) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nDit is het gebit van een planteneter. En de andrewsarchus was een aaseter.\nProbeer het nog een keer";
_root.score = score -=1
}
if (knop == knop2) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nDe andrewsarchus had geen slagtanden. Want de andrewsarchus was een aaseter en had geen slagtanden nodig omdat het niet hoefde te dode om te kunnen eten.\nProbeer het nog een keer";
_root.score = score -=1
}
if (knop == knop3) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nEen andrewsarchus leefde alleen.\nDit was omdat er anders te weinig eten voor andrew zou zijn. En dan zou de Andrewsarchus uitsterven.\nProbeer het nog een keer.";
_root.score = score -=1
}
if (knop == knop4) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nDe Andrewsarchus leefde niet in de sneeuw. Dit was omdat Andrew geen dikke vacht had, en dus zou doodvriezen.";
_root.score = score -=1
}
if (knop == knop7) {
fout_popup.tekst = "Dit antwoord is helaas niet goed.\nDe Andrewsarchus leefde niet in het bos. Dit was omdat Andrew niet de juiste schutkleur ervoor had en hij dus teveel opviel.";
_root.score = score -=1
}
//
knop._x = knop.beginX;
knop._y = knop.beginY;
//
fout_popup._visible = true;
} else {
if (knop == knop5) {
goed_popup.tekst = "Uitstekend gedaan!\nDit is inderdaad goed, de andrewsarchus had kleine puntige tanden. Dit was omdat de andrewsarchus een aaseter was en dus geen slagtanden nodig had.";
_root.score = score +=3.33
}
if (knop == knop6) {
goed_popup.tekst = "Uitstekend gedaan!\nDe andrewsarchus leefde inderdaad alleen. Dit moest wel want anders zou er voor Andrew te weinig voedsel zijn. En zou de Andrewsarchus uitsterven.";
_root.score = score +=3.33
}
if (knop == knop8) {
goed_popup.tekst = "Uitstekend gedaan!\nDe andrewsarchus leefde inderdaad op het strand. Dit was omdat er genoeg voedsel was, hij door ze schutkleur niet opviel en het was er niet koud.\n";
_root.score = score +=3.33
}
score = Math.round(score)
trace(score);
//
knop._x = -200;
knop._y = -200;
//
count++;
if (count == 3) {
klaar_popup._visible = true;
}
//
goed_popup._visible = true;
}
}
}

ik hoop dat dit duidelijk genoeg is :D alvast bedankt maar weer

Dauntless
%Europe/Berlin %916 %2008, 21:59
Stuur je .fla eens even naar mijnnickname@flashfocus.nl (want dit kan anders nog lang duren)

snorroporro
%Europe/Berlin %926 %2008, 22:14
hmm kreeg een auto message van hotmail terug. Dat het niet verstuurd is dus ik upload hem hier maar als ik dat kan.
Ik moet wel het hele spel uploaden waarvan de drag n drop maar een deel is omdat ik het niet eruit kan halen. sorry voor dit ongemak. Ik hoop dat je de score op 10 kan laten eindigen :D alvast bedankt

Dauntless
%Europe/Berlin %932 %2008, 22:22
Ah, dát bedoelde je ;)

Dus: Probleem = Hij rond de 3.33 af zodat je op 3 uitkomt en dan wordt die 3 opgeteld bij je score. Wat je echter wil, is pas afronden wanneer het spel gedaan is. En waar is het spel gedaan? => In de if(count == 3).

if (count == 3) {
score = Math.round(score);
klaar_popup._visible = true;
}
En de andere afronding verwijder je.

snorroporro
%Europe/Berlin %946 %2008, 22:43
aaait bedankt man! nu doet die het prima!