Hallo an die Forumsbenutzer ,
ich schreibe gerade ein kleines Script (bzw die passende Klasse) um mir zufällige Notenlinien ausgeben zu lassen, allerdings läuft das nicht so ganz wie es soll ^^ Erstmal der Code der Probleme macht:
$this->noten ist ein Array bestehend aus, naja, Noten halt ^^ z.B. d oder f, durch note2line wird ein Array erzeugt, dass zu jeder Note die Zeile zurückgibt, in der die Note auf Notenlinien stehen darf.
die Ausgabe sollte ungefähr so aussehen:
---o---o-o
o o
--o-----o
(usw) mit insgesamt 9 Zeilen (5 mit "-" 4 mit " ") sieht aber eher so aus:
---------
o
-o-------
oo
---------
---------
---------
es sind zu wenig Noten (eigentlich sollten es genug sein, damit jede Spalte eine Note hat) und jede Spalte darf nur eine Note haben :/
($marked wird nur zu Testzwecken zurückgegeben und die if-Anweisung ist wohl auch umständlicher als notwendig aber ich hab da dran einiges ausprobiert )
ich schreibe gerade ein kleines Script (bzw die passende Klasse) um mir zufällige Notenlinien ausgeben zu lassen, allerdings läuft das nicht so ganz wie es soll ^^ Erstmal der Code der Probleme macht:
PHP-Code:
function MakeMatrix(){
$arr=$this->noten;
if(count($arr)>0){
$matrix="";
$x=9;
$noten=$this->note2line($arr);
$marked=array();
while($x>=1){
$y=1;
while($y<=count($arr)){
if($x%2 != 0){
$zeichen="-";
}else{
$zeichen=" ";
}
$arr_temp=array_unique($noten);
$arr_temp_key=array_search($x,$arr_temp);
unset($noten[$arr_temp_key]);
if((is_int($arr_temp_key)) && (is_bool(array_search($y,$marked)) &&
array_search($y,$marked)===false)){
$matrix.="o";
$marked[]=$y;
}else{
$matrix.="$zeichen";
}
if($y==count($arr)){
$matrix.="<br />";
}
unset($arr_temp,$arr_temp_key);
$y++;
}
$x--;
}
$this->matrix=$matrix;
return $marked;
}
}
$this->noten ist ein Array bestehend aus, naja, Noten halt ^^ z.B. d oder f, durch note2line wird ein Array erzeugt, dass zu jeder Note die Zeile zurückgibt, in der die Note auf Notenlinien stehen darf.
die Ausgabe sollte ungefähr so aussehen:
---o---o-o
o o
--o-----o
(usw) mit insgesamt 9 Zeilen (5 mit "-" 4 mit " ") sieht aber eher so aus:
---------
o
-o-------
oo
---------
---------
---------
es sind zu wenig Noten (eigentlich sollten es genug sein, damit jede Spalte eine Note hat) und jede Spalte darf nur eine Note haben :/
($marked wird nur zu Testzwecken zurückgegeben und die if-Anweisung ist wohl auch umständlicher als notwendig aber ich hab da dran einiges ausprobiert )
Kommentar