Witam,
mam konkretny problem już opowiadam co i jak:
Mam parser który analizuje stringa i zamienia poszczególne znaki w stringu i dodaje je jako kolejne elementy tablicy np:
string "A,Bcd'" na {A3,B4,C5,D6}
Mam kawałek kodu który "gra" Beep'em poszczególne nuty oto kod tych dwóch elementów:
Parser:
string mojstring;
mojstring = dataGridView1.CurrentCell.ToString();
int l = mojstring.Length;
int i = 0;
int j = 1;
int k = 0;
string[] tab;
tab = new string[20];
bool spr;
while (i <= l - 1)
{
string x = mojstring.Substring(i, 1);
char z = Convert.ToChar(x);
if (i < l - 1)
{
String y = mojstring.Substring(i + 1, 1);
if (spr = string.Compare(y, ",") == 0)
{
x = x + "3";
i = i + 1;
}
if (spr = string.Compare(y, "'") == 0)
{
x = x + "6";
i = i + 1;
}
if ((char.IsLower(z) == true) && (spr = string.Compare(y, ",") != 0) && (spr = string.Compare(y, "'") != 0))
{
x = z + "5";
}
if ((char.IsUpper(z) == true) && (spr = string.Compare(y, ",") != 0) && (spr = string.Compare(y, "'") != 0))
{
x = z + "4";
}
}
tab[j] = x;
j = j + 1;
i++;
}
element "grający":
//ten element Note jest w akcji wciskania guzika do grania
Note[] test =
{
new Note(Tone.C2, Dlugosc.CALA),
new Note(Tone.C6, Dlugosc.CALA)
};
Play(test);
protected static void Play(Note[] tune)
{
foreach (Note n in tune)
{
Console.Beep((int)n.NoteTone, (int)n.NoteDuration);
}
}
dodam iż Tone i dlugosc musza byc liczbami dlatego w innym miejscu kodu są one wylistowane żeby można było pobierać konkretne wartości:
protected enum Tone
{
REST = 0,
C2 = 65,
Cis2 = 69,
D2 = 73,
Dis2 = 77,
E2 = 82,
F2 = 87
//i tak dalej
}
protected enum Dlugosc
{
CALA = 1600,
POLNUTA = CALA / 2,
CWIERCNUTA = POLNUTA / 2,
OSEMKA = CWIERCNUTA / 2,
SZESNASTKA = OSEMKA / 2,
}
Jak zrobić aby tablica Note[] test która zostanie "zagrana" zawierała kolejne elementy tablicy parsera (tylko wartość nuty, długość dla każdej nuty jest taka sama!), a nie tak jak jest do tej pory wpisane na sztywno odołania do listy częstotliwości ?
wiem, zagmatwane na maksa :/
help!