Blackhawk50000
Erfahrenes Mitglied
Einen schönen guten Tag.
Ich sitze seit gestern an einem Programm das Beeptöne in form von kleines Liedern ausgeben soll. Ich habe 3 radioButton
radioEntchen
radioBells
radioElise
und 2 buttons
button1
button2
dazu noch ein Progressbar
progressBar1
und ein Label
label1
Nach dem Klick auf den button1 wird eine if else struktur durchsucht und bestimmt welcher radioButton angeklickt wurde. Dann wird der jeweilige Methodenaufruf für das Lied aktiviert und in die Methode Bsp.: PlayEntchen gesprungen. in der Methode PlayEntchen befinden sich viele Methodenaufrufe die pro Aufruf eine Note mit Frequenz und Tonlänge übergeben Bsp.: Beep(200, 300). Der Aufruf startet die Methode Beep in der der Beepton ausgegeben wird. Der Quellcode sieht so aus.
Während das Lied spielt, wird der Wert für den progrssBar1 um eins erhöt. Am ende wird die Anzahl der Töhne in dem Label angezeigt.
Das Programm ist nicht anhaltbar. Der Stopbutton geht nicht (weil ich noch keinen code dafür habe) und während das Lied spielt, ist das ganze Programm lahmgelegt, d.h. das sich nicht mal das Fenster verschieben lässt.
Meine Frage an euch ist nun, Wie mach ich das ganze mit dem Stop Button, und wie kann die häufigen Methodenaufrufe minimieren, oder gar in eine eigene Datei zu packen, die dann die Methodenaufrufe als C# code enthällt und von dem Programm gelesen und verwendet werden kann. ich dachte da an eine *.txt oder eine *.cs Datei.
Ich sitze seit gestern an einem Programm das Beeptöne in form von kleines Liedern ausgeben soll. Ich habe 3 radioButton
radioEntchen
radioBells
radioElise
und 2 buttons
button1
button2
dazu noch ein Progressbar
progressBar1
und ein Label
label1
Nach dem Klick auf den button1 wird eine if else struktur durchsucht und bestimmt welcher radioButton angeklickt wurde. Dann wird der jeweilige Methodenaufruf für das Lied aktiviert und in die Methode Bsp.: PlayEntchen gesprungen. in der Methode PlayEntchen befinden sich viele Methodenaufrufe die pro Aufruf eine Note mit Frequenz und Tonlänge übergeben Bsp.: Beep(200, 300). Der Aufruf startet die Methode Beep in der der Beepton ausgegeben wird. Der Quellcode sieht so aus.
Während das Lied spielt, wird der Wert für den progrssBar1 um eins erhöt. Am ende wird die Anzahl der Töhne in dem Label angezeigt.
Das Programm ist nicht anhaltbar. Der Stopbutton geht nicht (weil ich noch keinen code dafür habe) und während das Lied spielt, ist das ganze Programm lahmgelegt, d.h. das sich nicht mal das Fenster verschieben lässt.
Meine Frage an euch ist nun, Wie mach ich das ganze mit dem Stop Button, und wie kann die häufigen Methodenaufrufe minimieren, oder gar in eine eigene Datei zu packen, die dann die Methodenaufrufe als C# code enthällt und von dem Programm gelesen und verwendet werden kann. ich dachte da an eine *.txt oder eine *.cs Datei.
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;
namespace Liedabspielprogramm
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
progressBar1.Visible = true;
if (radioEntchen.Checked == true)
{
progressBar1.Maximum = 27;
progressBar1.Value = 0;
PlayEntchen();
label1.Visible = true;
label1.Text = (progressBar1.Value + " Töne");
}
else if (radioBells.Checked == true)
{
progressBar1.Maximum = 11;
progressBar1.Value = 0;
PlayBells();
label1.Visible = true;
label1.Text = (progressBar1.Value + " Töne");
}
else if (radioElise.Checked == true)
{
//progressBar1.Maximum = 11;
//progressBar1.Value = 0;
PlayElise();
label1.Visible = true;
label1.Text = (progressBar1.Value + " Töne");
}
else MessageBox.Show("Dieses Lied ist noch nicht Vorhanden");
}
catch (Exception ex)
{
label1.Visible = true;
MessageBox.Show(""+ ex);
}
}
#region Alle meine Entchen
private void PlayEntchen()
{
Beep(262, 250);
progressBar1.Value += 1;
Beep(294, 250);
progressBar1.Value += 1;
Beep(330, 250);
progressBar1.Value += 1;
Beep(349, 250);
progressBar1.Value += 1;
Beep(392, 500);
progressBar1.Value += 1;
Beep(392, 500);
progressBar1.Value += 1;
Beep(440, 250);
progressBar1.Value += 1;
Beep(440, 250);
progressBar1.Value += 1;
Beep(440, 250);
progressBar1.Value += 1;
Beep(440, 250);
progressBar1.Value += 1;
Beep(392, 700);
progressBar1.Value += 1;
System.Threading.Thread.Sleep(70);
Beep(440, 250);
progressBar1.Value += 1;
Beep(440, 250);
progressBar1.Value += 1;
Beep(440, 250);
progressBar1.Value += 1;
Beep(440, 250);
progressBar1.Value += 1;
Beep(392, 700);
progressBar1.Value += 1;
System.Threading.Thread.Sleep(70);
Beep(349, 250);
progressBar1.Value += 1;
Beep(349, 250);
progressBar1.Value += 1;
Beep(349, 250);
progressBar1.Value += 1;
Beep(349, 250);
progressBar1.Value += 1;
Beep(330, 500);
progressBar1.Value += 1;
Beep(330, 500);
progressBar1.Value += 1;
Beep(392, 250);
progressBar1.Value += 1;
Beep(392, 250);
progressBar1.Value += 1;
Beep(392, 250);
progressBar1.Value += 1;
Beep(392, 250);
progressBar1.Value += 1;
Beep(262, 500);
progressBar1.Value += 1;
}
#endregion
#region Jingle Bells
private void PlayBells()
{
Beep(330, 250); // Quarter E
progressBar1.Value += 1;
Beep(330, 250); // Quarter E
progressBar1.Value += 1;
Beep(330, 500); // Half E
progressBar1.Value += 1;
Beep(330, 250); // Quarter E
progressBar1.Value += 1;
Beep(330, 250); // Quarter E
progressBar1.Value += 1;
Beep(330, 500); // Half E
progressBar1.Value += 1;
Beep(330, 250); // Quarter E
progressBar1.Value += 1;
Beep(392, 250); // Quarter G
progressBar1.Value += 1;
Beep(262, 250); // Eigth C
progressBar1.Value += 1;
Beep(294, 250); // Eigth D
progressBar1.Value += 1;
Beep(330, 500); // Quarter E
progressBar1.Value += 1;
}
#endregion
#region Für Elise
private void PlayElise()
{
System.Threading.Thread.Sleep(120);
Beep(659, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(622, 120); // Treble D#
System.Threading.Thread.Sleep(120);
Beep(659, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(622, 120); // Treble D#
System.Threading.Thread.Sleep(120);
Beep(659, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(494, 120); // Treble B
System.Threading.Thread.Sleep(120);
Beep(587, 120); // Treble D
System.Threading.Thread.Sleep(120);
Beep(523, 120); // Treble C
System.Threading.Thread.Sleep(120);
Beep(440, 120); // Treble A
System.Threading.Thread.Sleep(140);
Beep(262, 120); // Middle C
System.Threading.Thread.Sleep(120);
Beep(330, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(440, 120); // Treble A
System.Threading.Thread.Sleep(120);
Beep(494, 120); // Treble B
System.Threading.Thread.Sleep(140);
Beep(330, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(415, 120); // Treble G#
System.Threading.Thread.Sleep(120);
Beep(494, 120); // Treble B
System.Threading.Thread.Sleep(120);
Beep(523, 120); // Treble C
System.Threading.Thread.Sleep(140);
Beep(330, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(659, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(622, 120); // Treble D#
System.Threading.Thread.Sleep(120);
Beep(659, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(622, 120); // Treble D#
System.Threading.Thread.Sleep(120);
Beep(659, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(494, 120); // Treble B
System.Threading.Thread.Sleep(120);
Beep(587, 120); // Treble D
System.Threading.Thread.Sleep(120);
Beep(523, 120); // Treble C
System.Threading.Thread.Sleep(120);
Beep(440, 120); // Treble A
System.Threading.Thread.Sleep(140);
Beep(262, 120); // Middle C
System.Threading.Thread.Sleep(120);
Beep(330, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(440, 120); // Treble A
System.Threading.Thread.Sleep(120);
Beep(494, 120); // Treble B
System.Threading.Thread.Sleep(140);
Beep(330, 120); // Treble E
System.Threading.Thread.Sleep(120);
Beep(523, 120); // Treble C
System.Threading.Thread.Sleep(120);
Beep(494, 120); // Treble B
System.Threading.Thread.Sleep(140);
Beep(44, 120); // Treble A
}
#endregion
#region Tonausgabe
[DllImport("kernel32.dll")]
private static extern bool Beep(int frequenz, int dauer);
#endregion
private void button2_Click(object sender, EventArgs e)
{
}
}
}