PDA

Volledige versie bekijken : topografie spel


taXxER
%Europe/Berlin %576 %2005, 14:50
Ik ben een topografie spel aan het maken van Azie waarbij linksboven een willekeurig land komt te staan, als er dan op het juiste land geklikt word word de score rechtsboven in de hoek met 1 verhoogt.

Ik heb nu een stukje actionscript voor twee landen (Rusland en Mongolie), zodra dit werkt breidt ik dat uit met alle landen in Azie.
Dit is wat ik nu heb:

a = Random(2);
if (a == 0) {
land = "Rusland";
}
if (a == 1) {
land = "Mongolie";
score = 0;
correctie = "";
Rusland.onPress = function() {
if (a == 0) {
correctie = "juist";
score = score+1;
}
if (a<>0) {
correctie = "fout!";
score = score-1;
}
};
Mongolie.onPress = function() {
if (a == 1) {
correctie = "juist";
score = score+1;
}
if (a<>1) {
correctie = "fout!";
score = score-1;
}
}
};
Met deze code blijft het land waar op geklikt op moet worden telkens hetzelfde, als ik er met een while loop voor probeer te zorgen dat ook a = Random(2) opnieuw word uitgevoerd dan komt er linksbovenin helemaal geen land meer te staan.
Dus mijn vraag is nu: Hoe kan ik er voor zorgen dat de variabele a, die het land bepaald na elke klik op een land weer opnieuw word bepaald met Random, het liefst zo dat de landen die al goed geraden zijn niet meer terugkeren.

theFlashWizard
%Europe/Berlin %590 %2005, 15:10
dit pak je echt verkeerd aan.. of iig.. het kan veel beter..
maak 1 array met landen en roep die random aan:


landen = ["Rusland","Mongolie"]
Alanden = landen.length
land = landen[random(Alanden)]

score = 0

for(i=0;i<Alanden;i++){
this[landen[i]].onRelease(){
if(land == this._name){
correctie = "juist";
score++
land = landen[random(Alanden)]
}else{
correctie = "fout";
score--
land = landen[random(Alanden)]
}
}
}


snap je iets van dat script? want dit zou n iets beter systeem zijn..

taXxER
%Europe/Berlin %600 %2005, 15:25
Ja, ik snap het script behalve deze regel:
this[landen[i]].onRelease(){
Bij deze regel geeft flash trouwens ook een syntax error

theFlashWizard
%Europe/Berlin %602 %2005, 15:27
hier verbind hij een onRelease aan de knop die de naam heeft aan een item in de array landen. i staat dan voor de hoeveelste in de array..

wat is de foutmelding? liefst ff n gewone kopie ervan..

taXxER
%Europe/Berlin %605 %2005, 15:31
Dit is de foutmelding:

**Error** Scene=Scene 1, layer=keuze, frame=1:Line 10: Syntax error.
this[landen[i]].onRelease(){

Total ActionScript Errors: 1 Reported Errors: 1

theFlashWizard
%Europe/Berlin %607 %2005, 15:34
this[landen[i]].onRelease = function(){
moest et zijn.. :$ stomme fout..

taXxER
%Europe/Berlin %610 %2005, 15:39
Nu zijn er geen foutmeldingen meer, maar er is nu een ander probleem, nu blijft het land wissellen tussen mongolie en rusland al voordat er ergens op gedrukt is.

theFlashWizard
%Europe/Berlin %613 %2005, 15:43
huh.. zet is een stop() onder dit script?

taXxER
%Europe/Berlin %621 %2005, 15:54
ja, daar ligt het dus niet aan :(

theFlashWizard
%Europe/Berlin %623 %2005, 15:57
het begin van dit script wordt uitgevoert wanneer hij het frame afspeelt waar hij instaat.. alleen als hij daar meerdere keren langskomt voert hij het vaker uit..
het onRelease gedeelte voert hij alleen uit wanneer je op een land klikt.. dus daar zal het niet aan liggen..
je weet dus zeker dat hij maar 1x langs dat frame komt?

zet eens:
trace("ik loop nu langs dit frame")
bovenaan het script..

zie je dit dan 1x of meerdere keren verscheinen in het output window? bij testen

taXxER
%Europe/Berlin %626 %2005, 16:02
meerdere keren inderdaad, maar ik weet al waar het aan lag, ik had onbewust bij een van de layers nog een tweede frame staan, beetje dom :I .
Maar nu ik het weg heb gehaald werkt het voor de rest.
Erg bedankt voor de hulp

theFlashWizard
%Europe/Berlin %628 %2005, 16:04
Kdacht al.. :)
maarre snap je de werking en kan je hem aanvullen enzo?

taXxER
%Europe/Berlin %632 %2005, 16:10
Ja, dat gaat wel lukken, Ben nu bezig om China er aan toe te voegen

theFlashWizard
%Europe/Berlin %636 %2005, 16:17
kee :) dan ist goed.. :P

taXxER
%Europe/Berlin %644 %2005, 16:27
Ja, China en Thailand staan er goed in :)
Bedankt voor de hulp nog

taXxER
%Europe/Berlin %459 %2005, 12:01
Nu zou ik het ook nog graag zo willen hebben dat elk land niet meer land niet meer gevraagd word als het al goed beantwoord is, ik heb nu:

landen = ["Rusland", "Mongolie", "China", "Noord-Korea", "Zuid-Korea", "Japan", "Kirgizië", "Myanmar", "Laos", "Kazachstan", "Vietnam", "Cambodja", "Thailand", "Oezbekistan", "Tadzjikistan", "Turkmenistan", "Nepal", "Bhutan", "Afghanistan", "Pakistan", "Bangladesh", "Sri lanka", "India", "Maleisië", "Brunei", "Taiwan", "Filipijnen", "Oost-timor"];
Alanden = landen.length;
land = landen[random(Alanden)];
score = 0;
correctie = "";
for (i=0; i<Alanden; i++) {
this[landen[i]].onRelease = function() {
if (land == this._name) {
correctie = "juist";
score++;
land = landen[random(Alanden)];
} else {
correctie = "fout";
score--;
land = landen[random(Alanden)];
}
};
}
stop;

Nu heb ik geprobeerd om in het stukje waar beschreven staat wat er gebeurt als er op het juiste land word geklikt, een stukje toe te voegen om te achterhalen in welk element van de array landen het met random gekozen land zit, en vervolgens met splice dat element uit de array verwijderen. Dit werkte niet, want als ik met trace de inhoud van landen bekijk zie ik dat het land niet word verwijderd.
Hoe zou ik een goed beantwoord land uit de array kunnen verwijderen?

theFlashWizard
%Europe/Berlin %532 %2005, 13:46
landen = ["Rusland", "Mongolie", "China", "Noord-Korea", "Zuid-Korea", "Japan", "Kirgizië", "Myanmar", "Laos", "Kazachstan", "Vietnam", "Cambodja", "Thailand", "Oezbekistan", "Tadzjikistan", "Turkmenistan", "Nepal", "Bhutan", "Afghanistan", "Pakistan", "Bangladesh", "Sri lanka", "India", "Maleisië", "Brunei", "Taiwan", "Filipijnen", "Oost-timor"];

score = 0;
correctie = "";
getLand();

function getLand(){
Alanden = landen.length;
Rland = random(Alanden);
land = landen[Rland];
landen.splice(Rland,1);
}

for (i=0; i<Alanden; i++) {
this[landen[i]].onRelease = function() {
if (land == this._name) {
correctie = "juist";
score++;
getLand();
} else {
correctie = "fout";
score--;
getLand();
}
};
}
stop();



ik laat dus nu het random nummer opslaan in een variabele en dat nummer gebruik ik om met splice dat item uit de array te halen nadat de land variabele is ingevult.

taXxER
%Europe/Berlin %462 %2005, 12:05
Op een klein foutje na werkt het nu, bij het eerste land waar naar gevraagd word gebeurt er niets als ik op het juiste land klik, na de eerste beurt werkt het wel goed.

this[landen[i]].onRelease = function() {
if (land == this._name) {
lig dat er misschien aan dat hier de juiste i al niet meer in de array landen zit?

theFlashWizard
%Europe/Berlin %543 %2005, 14:02
vreemd.. mischien heeft de button rusland net geen hoofdletter?

maak er eens van:

for (i=0; i<Alanden; i++) {
trace(this[landen[i]])
this[landen[i]].onRelease = function() {
trace("Released: "+this._name)
if (land == this._name) {

dan zie je aant begin alst goed is n rijdje met namen staan in de output window..
alst goed is geen unidentifeit.. want in dat geval vind hij die movieclip/button dus niet..
en als je klikt zie je alst goed is Release + de naam in het output window tevoorschein kome.. zou ook moeten kloppen..

kun je dan heel ff de uitkomsten in die output window voor me kopieren ofzo..? :) dan vinde we et probleem wel..

taXxER
%Europe/Berlin %590 %2005, 15:10
Dit staat er in de output window
_level0.Rusland
_level0.Mongolie
_level0.China
_level0.Noord-Korea
_level0.Zuid-Korea
_level0.Japan
_level0.Kirgizië
_level0.Myanmar
_level0.Laos
_level0.Kazachstan
_level0.Vietnam
_level0.Cambodja
_level0.Thailand
_level0.Tadzjikistan
_level0.Turkmenistan
_level0.Nepal
_level0.Bhutan
_level0.Afghanistan
_level0.Pakistan
_level0.Bangladesh
_level0.Sri lanka
_level0.India
_level0.Maleisië
_level0.Brunei
_level0.Taiwan
_level0.Filipijnen
_level0.Oost-timor
_level0.Indonesië
undefined

Het random gekozen land is Oezbekistan, die staat niet hiierboven, dus staat inderdaad niet meer in de array.

taXxER
%Europe/Berlin %595 %2005, 15:17
Ik heb het al gevonden, voor de for-lus moest nog geen splice komen, omdathet land dan al uit de array gehaald word voodat er op geklikt kan worden, zo klopt het:
landen = ["Rusland", "Mongolie", "China", "Noord-Korea", "Zuid-Korea", "Japan", "Kirgizië", "Myanmar", "Laos", "Kazachstan", "Vietnam", "Cambodja", "Thailand", "Oezbekistan", "Tadzjikistan", "Turkmenistan", "Nepal", "Bhutan", "Afghanistan", "Pakistan", "Bangladesh", "Sri lanka", "India", "Maleisië", "Brunei", "Taiwan", "Filipijnen", "Oost-timor", "Indonesië"];
score = 0;
correctie = "";
Alanden = landen.length;
Rland = random(Alanden);
land = landen[Rland];
function getLand() {
Alanden = landen.length;
Rland = random(Alanden);
land = landen[Rland];
landen.splice(Rland, 1);
}
for (i=0; i<Alanden; i++) {
trace(this[landen[i]]);
this[landen[i]].onRelease = function() {
trace("Released: "+this._name);
if (land == this._name) {
correctie = "juist";
score++;
getLand();
} else {
correctie = "fout";
score--;
getLand();
}
};
}
stop();


Nog bedankt voor alle hulp

theFlashWizard
%Europe/Berlin %603 %2005, 15:28
Alanden = landen.length;
Rland = random(Alanden);
land = landen[Rland];
hoort er ook nie meer bij ;)

zo moet ie zijn dan:

landen = ["Rusland", "Mongolie", "China", "Noord-Korea", "Zuid-Korea", "Japan", "Kirgizië", "Myanmar", "Laos", "Kazachstan", "Vietnam", "Cambodja", "Thailand", "Oezbekistan", "Tadzjikistan", "Turkmenistan", "Nepal", "Bhutan", "Afghanistan", "Pakistan", "Bangladesh", "Sri lanka", "India", "Maleisië", "Brunei", "Taiwan", "Filipijnen", "Oost-timor", "Indonesië"];
score = 0;
correctie = "";
getLand()
function getLand() {
Alanden = landen.length;
Rland = random(Alanden);
land = landen[Rland];
landen.splice(Rland, 1);
Alanden = landen.length;
}
for (i=0; i<Alanden; i++) {
trace(this[landen[i]]);
this[landen[i]].onRelease = function() {
trace("Released: "+this._name);
if (land == this._name) {
correctie = "juist";
score++;
getLand();
} else {
correctie = "fout";
score--;
getLand();
}
};
}
stop();

taXxER
%Europe/Berlin %619 %2005, 15:52
lol, dat laatste van jouw werkt ook niet goed, dat wat ik in de post daarvoor zette werkt perfect, dus ik laat het zo.

taXxER
%Europe/Berlin %624 %2005, 15:58
Alanden = landen.length;
Rland = random(Alanden);
land = landen[Rland];

had ik er juist bijgezet zofat de functie getland niet voor de for-lus draait, de regel
landen.splice(Rland, 1);
moet daar namelijk niet staan, die veroorzaakte het probleem

theFlashWizard
%Europe/Berlin %625 %2005, 16:00
niet? wat raar.. want op jou methode voer je eigenlijk het grootste gedeelte van die funcite uit behalve die splice.. waardoor er weer naar dat land gevraagt gaat worden..

ik dacht door het aantal landen dat over was opnieuw op te vragen na het deleten van 1 item uit de array het wel op zou lossen..

taXxER
%Europe/Berlin %638 %2005, 16:19
In principe werkt het nu, moet alleen nog singapore toevoegen (vergeten :I ), en aan het eind ga ik er nog voor zorgen dat de eindscore groot in beeld komt.
Voor zover het af is staat het op http://members.home.nl/dtax/asia.swf

theFlashWizard
%Europe/Berlin %642 %2005, 16:24
em.. hij lijkt geen volgend land te pakken.. :|
enne volgens mij zal hij dus 2x hetzelfde land vrage..

taXxER
%Europe/Berlin %404 %2005, 10:43
het is al een paar maand geleden dat ik voor het laatst hier gepost heb, maar ik heb het spel een beetje uitgebreid, hier kun je het bekijken:
http://members.home.nl/dtax/asia.swf

mateo)
%Europe/Berlin %417 %2005, 11:01
he taXxER:

Bestand of map niet gevonden

Het gevraagde bestand of de gevraagde map bestaan niet. Misschien is het bestand of de map verwijderd of heeft de pagina waar u vandaan komt een incorrecte verwijzing.

taXxER
%Europe/Berlin %421 %2005, 11:06
oh, sorry, verkeerde link :O .
Hier is de goede:
http://members.home.nl/dtax/goodnew.swf

Je hebt trouwens wel flash player 8 nodig

taXxER
%Europe/Berlin %416 %2005, 10:59
Nieuwe update is klaar, betere geluiden, scorebalk en andere puntentelling