Laden...

Läuft zu schnell ab

Letzter Beitrag vor 18 Jahren 6 Posts 1.166 Views
Läuft zu schnell ab

Hallo,

seite mindestens 12 Stunden beschäftige ich mich mti diesesm *******dreck!

Es ist normal ganz einfach, der Code wartet nicht auf meine Eingabe

Das Programm gibt einen Text aus. Innerhalb einer bestimmten Zeit muss man den Text abgeschrieben haben. Man bekommt in diesem Beispiel hier 3 Verschiedene texte. Allerdings wenn ich den ersten richtig eingegeben habe läuft alles durch, spricht er schreibt mir kurz in die Output TextBox Alle Texte die man normalerweise abschreiben sollte, reagiert dann als wäre das richtig was man in die Input Textbox geschrieben hat (obwohl die textbox leer ist, weil man keine Zeit hat etwas rein zu schreiben) und geht weiter.

Hier der Code.


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace scheisse
{
    public partial class Form1 : Form
    {
        int timerTime1 = 6;
        int timerTime2 = 6;
        int timerTime3 = 6;

        //Variable für die Texte
        string variVorgabe1 = "Hallo ich bin eins";
        string variVorgabe2 = "Hier ist der zweite";
        string variVorgabe3 = "Keine ahnung";
        string variVorgabe4 = "Muahahahaha";

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            timerTime1--;
            zeitBox.Text = "Noch " + timerTime1.ToString() + " Sekunde(n)";
            if (timerTime1 == 0)
            {
                timer1.Enabled = false;
                abschnitt1();
            }
        }
        
        private void timer2_Tick(object sender, EventArgs e)
        {
            timerTime2--;
            zeitBox.Text = "Noch " + timerTime1.ToString() + " Sekunde(n)";
            if (timerTime2 == 0)
            {
                timer2.Enabled = false;
                abschnitt2();
            }
        }


        private void timer3_Tick(object sender, EventArgs e)
        {
            timerTime3--;
            zeitBox.Text = "Noch " + timerTime1.ToString() + " Sekunde(n)";
            if (timerTime3 == 0)
            {
                timer3.Enabled = false;
                abschnitt3();
            }
        }


        private void abschnitt1()
        {
            if (tbInput.Text == variVorgabe1)
            {
                tbInput.Text = "";
                tbOutput.Text = variVorgabe2;
                timer2.Enabled = true;
                MessageBox.Show("asdf!");  

            }                     
        }

        private void abschnitt2()
        {
            tbInput.Text = "";
            tbOutput.Text = variVorgabe3;
            timer2.Enabled = true;
            MessageBox.Show("asdf!");  
        }

        private void abschnitt3()
        {
            tbInput.Text = "";
            tbOutput.Text = variVorgabe4;
            timer3.Enabled = true;
            MessageBox.Show("asdf!");
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            timer1.Enabled = true;
            tbOutput.Text = variVorgabe1;
        }

 

Ich weiß das das gar nicht Optimal ist. Ich habe ihn schon viel Opimaler gehabt (nur mit einem Timer, etc) aber ich habe es nicht so zum laufen gebracht wie es sein sollte 🙁

Hier nich ein Bild wie das aussieht. (Is nur schnell gemacht, das Normale program sieht besser aus 🙂 )

Bitte helft mir, da ich es nicht schaffe.

MFG

Hab mal markiert, wo mir Unstimmigkeiten aufgefallen sind:


        private void timer2_Tick(object sender, EventArgs e)
        {
            timerTime2--;
            zeitBox.Text = "Noch " + timerTime1.ToString() + " Sekunde(n)";  // timerTime1 ???
            if (timerTime2 == 0)
            {
                timer2.Enabled = false;  
                abschnitt2();
            }
        }


        private void timer3_Tick(object sender, EventArgs e)
        {
            timerTime3--;
            zeitBox.Text = "Noch " + timerTime1.ToString() + " Sekunde(n)";  // timerTime1 ???
            if (timerTime3 == 0)
            {
                timer3.Enabled = false;
                abschnitt3();
            }
        }


        private void abschnitt1()
        {
            if (tbInput.Text == variVorgabe1)
            {
                tbInput.Text = "";
                tbOutput.Text = variVorgabe2;
                timer2.Enabled = true;
                MessageBox.Show("asdf!");  

            }                    
        }

        private void abschnitt2()
        {
            // keine if???
            tbInput.Text = "";
            tbOutput.Text = variVorgabe3;
            timer2.Enabled = true;             // timer2.enabled ???
            MessageBox.Show("asdf!");  
        }

        private void abschnitt3()
        {
            // keine if???
            tbInput.Text = "";
            tbOutput.Text = variVorgabe4;
            timer3.Enabled = true;              // true ???
            MessageBox.Show("asdf!");
        }

Danke, ich werde das dann gleich mal abchecken.

MFG

du hast außerdem nirgends das interval der timer bestimmt (timer1.Interval = 1000 wär 1Sekunde)

Hi,

doch, intervall hab ich auf 1000 gesetz. Ib den eigenschaften der Timer!

MFG

achso

trotzdem sind da ja noch die Fehler die dir DaSchroeter gezeigt hat.

und mit nur einem timer würde es auch gehen und sogar besser.
zum Beispiel so (ich habs nicht ausprobiert)


private void timer1_Tick(object sender, EventArgs e)
        {
            timerTime1--;
            zeitBox.Text = "Noch " + timerTime1.ToString() + " Sekunde(n)";
            if (timerTime1 == 0)
            {
                timer1.Enabled = false;
                timerTime1 = 6;
                abschnitt1();
            }
        }

private void abschnitt1()
        {
            if (tbInput.Text == arrayVorgabe[i];)
            {
                tbInput.Text = "";
                tbOutput.Text = arrayVorgabe[i];
                i++;
                timer2.Enabled = true;
                MessageBox.Show("asdf!");  
                timer1.Enabled = true;
            }                     
        }


und in dem array speicherst du natürlich vorher deine Texte