| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Jun 2003 Ort: Karlsruhe
Beiträge: 89
| Array als Rückgabewert
Hallo, ich habe ein kleines Problem. Es wird in dem langen Kommentar im Code beschrieben, an dessen Stelle es auch entsteht. Wäre schön wenn mir jemand helfen kann. Code: // function getWinner() ermittelt den Gewinner:
function getWinner(numPlayers,maxTracks){
// Punkte-Array initialisieren
var ergArray:Array = new Array(numPlayers);
// Aktueller Player(i)
for(var i=0;i<numPlayers;i++){
var pkt:Number=0;
// Aktuelles Level(j)
for(var j=0;j<maxTracks;j++){
pkt += round[j][i];
// trace("Player:"+i+" Level:"+j+" Punkt:"+round[j][i]+"\n");
}
ergArray[i] = pkt;
}
// ermitteln des größten im Array ergArray
MaxiWert = ergArray[0];
for(i=ergArray.length-1; i > 0; i--){
MaxiWert=Math.max(MaxiWert,ergArray[i]);
}
// Prüfen ob Maximalwert mehrmals vorhanden ist
var keyword:Number = MaxiWert;
var countWinners:Number=0;
// Anzahl der Gewinner ermitteln
for(var i=0;i<ergArray.length;i++){
if(ergArray[i]==keyword){
countWinners++;
}
}
trace("countWinners: "+countWinners);
// initialisierung Array winnerIDs
var winnerIDs:Array = new Array(countWinners);
// Nachfolgend sollen nur die Player eingetragen werden,
// dessen Wert dem keyword entspricht. Problem ist, dass ich
// folgende Ausgabe bekomme.
/*
countWinners: 2
ID: 0Punkte: 5
ID: 1Punkte: undefined
ID: 2Punkte: 5
*/
// das ID: 1Punkte: undefined soll hier aber nicht drinn stehen!
// Array winnerIDs mit winnerIDs füllen und
for(var i=0;i<ergArray.length;i++){
if(ergArray[i]==keyword){
winnerIDs[i] = keyword;
}
}
return winnerIDs;
} ID: 0 Punkte: 5 ID: 1 Punkte: undefined ID: 2 Punkte: 5 Wie kann ich es schaffen, dass der zweite Eintrag im ErgebnisArray nicht enthalten ist, sondern nur die Gewinner? Geändert von Jo3000 (01-03-2006 um 08:08 Uhr) |
| | |
| | #2 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Da gibts mehrere Möglichkeiten, probier mal das an der Stelle wo du die Punkte speicherst. PHP-Code: PHP-Code: Geändert von rendner[i] (01-03-2006 um 08:16 Uhr) |
| | |
| | #4 (permalink) |
| Neuer User Registriert seit: Jun 2003 Ort: Karlsruhe
Beiträge: 89
| Code: for(var i=0;i<ergArray.length;i++){
if(ergArray[i]==keyword){
winnerIDs[i] = keyword;
}
} ID: 0Punkte: 5 ID: 1Punkte: undefined ID: 2Punkte: 5 Wie bekomme ich undefined weg bzw. den kompletten 2 Eintrag? |
| | |
| | #6 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
@ Jo3000: Du hast aber an der falschen stelle mein Script eingebaut, du musst das schon da machen wo du auch die punkte speicherst... PHP-Code: |
| | |
| | #8 (permalink) | |
| Neuer User Registriert seit: Jun 2003 Ort: Karlsruhe
Beiträge: 89
|
Danke wenn ich deine Zeile einfüge ändert sich leider nichts am Erg. Zitat:
| |
| | |
| | #9 (permalink) |
| Neuer User Registriert seit: Jun 2003 Ort: Karlsruhe
Beiträge: 89
| Kompletter Code für die bessere Übersicht: Code: // Variablen
var maxTracks:Number = 7; // Anzahl Fragen / Spiel
var numPlayers:Number = 3; // Anzahl Spieler
// Initialisierung Arrays
var players:Array;
var round:Array;
round = new Array(maxTracks); // round
for(var i=0;i<maxTracks;i++){
round[i] = new Array(numPlayers); // unterarray anlegen
}
// Zuweisung der Belegung(0)
for(var level=1;level<=round.length;level++){
for(var punkt=1;punkt<=round[level-1].length;punkt++){
round[level-1][punkt-1] = 0;
}
}
// Werte für Spieler deklarieren:
// Player 0
round[0][0] = 1; // round[0] => level 0 | round[0][0] => level 0 Player 0
round[1][0] = 1;
round[2][0] = 1;
round[3][0] = 1;
round[4][0] = 1;
// Player 1
round[1][1] = 1;
round[2][1] = 1;
round[3][1] = 1;
round[5][1] = 1;
// Player 2
round[0][2] = 1;
round[1][2] = 1;
round[2][2] = 1;
round[3][2] = 1;
round[6][2] = 1;
// Ausgabe
for(var level=1; level <= round.length; level++){
trace(round[level-1]+"\n");
}
// function getWinner() ermittelt den Gewinner:
function getWinner(numPlayers,maxTracks){
// Punkte-Array initialisieren
var ergArray:Array = new Array(numPlayers);
// Aktueller Player(i)
for(var i=0;i<numPlayers;i++){
var pkt:Number=0;
// Aktuelles Level(j)
for(var j=0;j<maxTracks;j++){
pkt += round[j][i];
// trace("Player:"+i+" Level:"+j+" Punkt:"+round[j][i]+"\n");
}
ergArray[i] = pkt;
}
// ermitteln des größten im Array ergArray
MaxiWert = ergArray[0];
for(i=ergArray.length-1; i > 0; i--){
MaxiWert=Math.max(MaxiWert,ergArray[i]);
}
// Prüfen ob Maximalwert mehrmals vorhanden ist
var keyword:Number = MaxiWert;
var countWinners:Number=0;
// Anzahl der Gewinner ermitteln
for(var i=0;i<ergArray.length;i++){
if(ergArray[i]==keyword){
countWinners++;
}
}
trace("countWinners: "+countWinners);
// initialisierung Array winnerIDs
var winnerIDs:Array = new Array(countWinners);
// Array winnerIDs mit winnerIDs füllen und
for(var i=0;i<ergArray.length;i++){ // Auch countWinners könnte hier als Bedingung gestellt werden => 2 Durchläufe
if(ergArray[i]==keyword){
winnerIDs[i] = keyword;
}
}
return winnerIDs;
}
button.onRelease=function(){
// Ausgabefeld initialisieren;
winner = "";
ergArray = getWinner(numPlayers, maxTracks);
// Ausgabe Ergebnissummen
for(var i=0; i < ergArray.length; i++){
trace("ID: "+i+"Punkte: "+ergArray[i]);
}
} |
| | |
| | #10 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Wenn ich es teste bekomme ich kein undefined...habe die Funktion getWinner direkt mit den Parametern aufgerufen. EDIT: Sehe gerade wenn man es so macht wie du im Button dann kommt der Fehler... Das liegt daran das du die Gewinner falsch in dein Array winnerIDs überträgst. Solltest du lieber so machen: PHP-Code: Geändert von rendner[i] (01-03-2006 um 09:43 Uhr) |
| | |
| | #12 (permalink) |
| voidboy Registriert seit: Sep 2004 Ort: München
Beiträge: 5.588
|
Habe deine Funktion mal kurz etwas überarbeitet. PHP-Code: Geändert von rendner[i] (01-03-2006 um 10:18 Uhr) |
| | |
![]() |
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
| |