Hulp nodig bij programma

Status
Niet open voor verdere reacties.

okkie1

Gebruiker
Lid geworden
5 jan 2013
Berichten
5
Hallo iedereen,

Voor school moet iedereen in de zesde klas een PWS maken. Nou moet ik onderzoek doen over de hersenen en hoe je reactievermogen beïnvloedt word door bv cafeïnerijke drankjes of middelen als ibuprofen of valdispert. Hiervoor gebruiken we onder andere de stroop test.
Nu probeer ik bonuspunten te scoren door zelf een stroop test programma te maken (Op aanraden van mijn studiebegeleider) alleen kom ik met mijn beperkte kennis van C# niet ver. Ik maak het programma in visual studio 2010 als een windows forms application, en dit is wat ik zover heb:

Hoofdmenu
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class start : Form
    {
        public start()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            Form1 form = new Form1();
            form.Visible = true;
            form.Show();
        }
    }
}

De test zelf
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        int timedone = 0;
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            this.KeyPreview = true;
            this.Visible = true;
           // Timer tijd = new Timer();
           // tijd.Start();
            timer1.Start();
            int fouten = 0;
            int gedaan = 0;
            while (gedaan < 10)
            {
                Random rnd = new Random();
                int backgroundcolor = rnd.Next(1, 4);
                int textcolor = rnd.Next(1, 4);
                int text = rnd.Next(1, 4);
                if (backgroundcolor == textcolor)
                {
                    backgroundcolor = 1;
                    textcolor = 4;
                }
                if (backgroundcolor == 1)
                {
                 this.BackColor = System.Drawing.Color.Red;
                }
                if (backgroundcolor == 2)
                {
                  this.BackColor = System.Drawing.Color.Blue;
                }
                if (backgroundcolor == 3)
               {
                   this.BackColor = System.Drawing.Color.Yellow;
                }
                if (backgroundcolor == 4)
                {
                  this.BackColor = System.Drawing.Color.Green;
                }
                if (text == 1)
                {
                    WOORD.Text = "Rood";
                }
                if (text == 2)
                {
                    WOORD.Text = "Blauw";
                }
                if (text == 3)
                {
                    WOORD.Text = "Geel";
                }
                if (text == 4)
                {
                    WOORD.Text = "Groen";
                }
                if (textcolor == 1)
                {
                    WOORD.ForeColor = Color.Red;
                }
                if (textcolor == 2)
                {
                    WOORD.ForeColor = Color.Blue;
                }
                if (textcolor == 3)
                {
                    WOORD.ForeColor = Color.Yellow;
                }
                if (textcolor == 4)
                {
                    WOORD.ForeColor = Color.Green;
                }
                while (checkBox1.Checked == false && checkBox2.Checked == false && checkBox3.Checked == false && checkBox4.Checked == false)
                {
                }
                if (checkBox1.Checked == true)
                {
                    if (textcolor != 1)
                    {
                        fouten++;
                    }
                    checkBox1.Checked = false;
                }
                if (checkBox1.Checked == true)
                {
                    if (textcolor != 2)
                    {
                        fouten++;
                    }
                    checkBox2.Checked = false;
                }
                if (checkBox3.Checked == true)
                {
                    if (textcolor != 3)
                    {
                        fouten++;
                    }
                    checkBox3.Checked = false;
                }
                if (checkBox4.Checked == true)
                {
                    if (textcolor != 4)
                    {
                        fouten++;
                    }
                    checkBox4.Checked = false;
                }
                gedaan++;
                this.gedaannr.Text = System.Convert.ToString(gedaan);
            }
            //tijd.Stop();
            timer1.Stop();
            this.Visible = false;
            Form2 formeind = new Form2();
            formeind.tijdhandelaar = timedone;
            formeind.foutenx = fouten;
            formeind.Visible = true;
            formeind.Show();

        }

        private void button1_Click(object sender, EventArgs e)
        {
            checkBox1.Checked = true;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            checkBox2.Checked = true;
        }

        private void button3_Click(object sender, EventArgs e)
        {
            checkBox3.Checked = true;
        }

        private void button4_Click(object sender, EventArgs e)
        {
            checkBox4.Checked = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            timedone++;
        }

    }
}

Resultaten
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
            private int tijdgedaan;
            public int tijdhandelaar
            {
                get
                {
                    return tijdgedaan;
                }
                set
                {
                    tijdgedaan = value;
                }
            }
            private int fouten;
            public int foutenx
            {
                get
                {
                    return fouten;
                }
                set
                {
                    fouten= value;
                }
            }

            private void Form2_Load(object sender, EventArgs e)
            {
                int gemtijd = tijdgedaan / 10;
                this.gemitijd.Text = Convert.ToString(gemtijd);
                this.hoeveelfouten.Text = Convert.ToString(fouten);
            }

            private void button1_Click(object sender, EventArgs e)
            {
                this.Visible = false;
                Form1 form = new Form1();
                form.Visible = true;
                form.Show();
            }
    }
}


Ik krijg het nu niet voor elkaar dat het programma wacht totdat de gebruiken een antwoord geeft. Ik heb van alles geprobeert maar het probleem blijft hem altijd in de while loop zitten. Nu hoop ik dat er iemand op dit forum is die mij uit de brand kan helpen en die programma werkend kan krijgen, al neem ik aan dat er dan een boel herschreven moet worden.

P.S. Let maar niet op de mooie cryptische namen die ik geef aan mijn variabelen
 
Hoi,

Ik kan vanaf hier niet helemaal zien waarin de gebruiker de text moet invullen maar als dat gewoon een textbox is, dan maak je toch een TextChanged event? Dan doorloopt hij bepaalde stappen elke keer dat de tekst veranderd, en dus ook direct als er een bepaalde tekst staat.

In dat event doe je gewoon iets in de trant van If text = 'jkdhaskjdhaskjd' en dan hetgeen dat er dan moet gebeuren.
 
Dankjewel voor je reactie, maar bij de strooptest laat je telkens random de naam van een kleur zien, maar telkens met een andere kleur. Bv "rood" dat blauw gekleurd is en "groen" dat rood gekleurd is. De gebruiker moet dan de kleur van het woord zo snel mogelijk onderscheiden en invoeren, door middel van in dit geval 4 knoppen, maar je zou het ook met het toetsenboord kunnen doen dat ze de eerste letter van de kleur moeten invullen.

Hier een voorbeeld: http://www.onlinestrooptest.com/stroop_effect_test.php
http://cognitivefun.net/test/2
 
Je kunt net zoals op die site 4 knoppen maken, dat lijkt me het makkelijkste.
Verder is het gewoon een kwestie van random kleuren genereren en aan het einde meten hoeveel er goed waren.
Waar gaat het precies mis?
 
Ik krijg het niet voor elkaar dat het programma gewoon niks doet totdat de speler een antwoord invoert, als ik het met een while loop doe dan loopt het programma vast.
 
Je kunt het programma toch pas actie laten ondernemen als de speler wat invoert ?
Dan krijg je zoiets:

Code:
Het programma start
De speler klikt op een knop
programma wordt getriggerd om de volgende vraag te laten zien
De speler klikt op een knop
(...)
Er is x keer op de knop geklikt > het programma laat de uitslag zien.
 
Oke dankjewel voor je suggestie. Ik heb heel het programma opnieuw gemaakt en alles werkt, op een timer na. Je moet namelijk aan het einde de gemiddelde tijd laten zien die de gebruiker erover deed. Ik krijg het niet voor elkaar om zoiets werkend te krijgen. Hier is hoe het programma er nu uit ziet.

Hoofdmenu:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GlobalVariables.fouten = 0;
            GlobalVariables.gedaan = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (this.achtergrondkleur.Checked)
            {
                GlobalVariables.veranderdekleur = true;
            }
            else
            {
                GlobalVariables.veranderdekleur = false;
            }

            this.Visible = false;
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }
    }
}

De test:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (textcolor != 1)
            {
                GlobalVariables.fouten++;
            }
            timer.Stop();
            localtime = timer.Elapsed.TotalSeconds.ToString();
            GlobalVariables.tijd = GlobalVariables.tijd + localtime;
            GlobalVariables.gedaan++;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (textcolor != 4)
            {
                GlobalVariables.fouten++;
            }
            timer.Stop();
            localtime = timer.Elapsed.TotalSeconds.ToString();
            GlobalVariables.tijd = GlobalVariables.tijd + localtime;
            GlobalVariables.gedaan++;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (textcolor != 3)
            {
                GlobalVariables.fouten++;
            }
            timer.Stop();
            localtime = timer.Elapsed.TotalSeconds.ToString();
            GlobalVariables.tijd = GlobalVariables.tijd + localtime;
            GlobalVariables.gedaan++;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (textcolor != 2)
            {
                GlobalVariables.fouten++;
            }
            timer.Stop();
            localtime = timer.Elapsed.TotalSeconds.ToString();
            GlobalVariables.tijd = GlobalVariables.tijd + localtime;
            GlobalVariables.gedaan++;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }
        string localtime;
        int backgroundcolor;
        int textcolor;
        int text;
        System.Diagnostics.Stopwatch timer = new System.Diagnostics.Stopwatch();
        //Timer timer = new Timer();
        private void Form2_Load(object sender, EventArgs e)
        {
            timer.Start();
            this.Foutenlabel.Text = Convert.ToString(GlobalVariables.fouten);
            this.gedaannr.Text = Convert.ToString(GlobalVariables.gedaan);
            this.Visible = true;
            if (GlobalVariables.gedaan != 10)
            {
                Random rnd = new Random();
                if (GlobalVariables.veranderdekleur == true)
                {
                    backgroundcolor = rnd.Next(1, 4);
                }
                else
                {
                    backgroundcolor = 5;
                }
                textcolor = rnd.Next(1, 4);
                text = rnd.Next(1, 4);
                if (backgroundcolor == textcolor)
                {
                    backgroundcolor = 5;
                }
                if (backgroundcolor == 1)
                {
                    this.BackColor = System.Drawing.Color.Red;
                }
                if (backgroundcolor == 2)
                {
                    this.BackColor = System.Drawing.Color.Blue;
                }
                if (backgroundcolor == 3)
                {
                    this.BackColor = System.Drawing.Color.Yellow;
                }
                if (backgroundcolor == 4)
                {
                    this.BackColor = System.Drawing.Color.Green;
                }
                if (backgroundcolor == 5)
                {
                    this.BackColor = System.Drawing.Color.Black;
                }
                if (text == 1)
                {
                    WOORD.Text = "Rood";
                }
                if (text == 2)
                {
                    WOORD.Text = "Blauw";
                }
                if (text == 3)
                {
                    WOORD.Text = "Geel";
                }
                if (text == 4)
                {
                    WOORD.Text = "Groen";
                }
                if (textcolor == 1)
                {
                    WOORD.ForeColor = Color.Red;
                }
                if (textcolor == 2)
                {
                    WOORD.ForeColor = Color.Blue;
                }
                if (textcolor == 3)
                {
                    WOORD.ForeColor = Color.Yellow;
                }
                if (textcolor == 4)
                {
                    WOORD.ForeColor = Color.Green;
                }
            }
            else
            {
                this.Close();
                Form3 einde = new Form3();
                einde.Visible = true;
                einde.Show();
                // naar eindform gaan
            }
        }
    }
}

De uitslag:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
        private void Form3_Load(object sender, EventArgs e)
        {
            this.tijdlabel.Text = Convert.ToString(GlobalVariables.tijd);
            this.foutenlabel.Text = Convert.ToString(GlobalVariables.fouten);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            GlobalVariables.fouten = 0;
            GlobalVariables.gedaan = 0;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }
    }
}

Een class bestandje voor de variabelen:
Code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WindowsFormsApplication3
{
    public static class GlobalVariables
    {
        public static int gedaan;
        public static int fouten;
        public static string tijd;
        public static bool veranderdekleur;
    }
}
 
Laatst bewerkt:
Het probleem is inmiddels verholpen. Voor de mensen die geïnteresseerd zijn in de huidige code:

Form1:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            GlobalVariables.fouten = 0;
            GlobalVariables.gedaan = 0;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (this.achtergrondkleur.Checked)
            {
                GlobalVariables.veranderdekleur = true;
            }
            else
            {
                GlobalVariables.veranderdekleur = false;
            }
            this.Visible = false;
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            this.Visible = false;
            Form4 test = new Form4();
            test.Visible = true;
            test.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}


Form2:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }
        private void button1_Click(object sender, EventArgs e)
        {
            if (textcolor != 1)
            {
                GlobalVariables.fouten++;
            }
            localtime.Stop();
            localtime.Reset();
            GlobalVariables.timer.Stop();
            GlobalVariables.gedaan++;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            if (textcolor != 4)
            {
                GlobalVariables.fouten++;
            }
            localtime.Stop();
            localtime.Reset();
            GlobalVariables.timer.Stop();
            GlobalVariables.gedaan++;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            if (textcolor != 3)
            {
                GlobalVariables.fouten++;
            }
            localtime.Stop();
            localtime.Reset();
            GlobalVariables.timer.Stop();
            GlobalVariables.gedaan++;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }

        private void button4_Click(object sender, EventArgs e)
        {
            if (textcolor != 2)
            {
                GlobalVariables.fouten++;
            }
            localtime.Stop();
            localtime.Reset();
            GlobalVariables.timer.Stop();
            GlobalVariables.gedaan++;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }
        System.Diagnostics.Stopwatch localtime = new System.Diagnostics.Stopwatch();
        int backgroundcolor;
        int textcolor;
        int text;
        //Timer timer = new Timer();
        private void Form2_Load(object sender, EventArgs e)
        {
            localtime.Start();
            this.Foutenlabel.Text = Convert.ToString(GlobalVariables.fouten);
            this.gedaannr.Text = Convert.ToString(GlobalVariables.gedaan);
            this.Visible = true;
            GlobalVariables.timer.Start();
            Random rnd = new Random();
            if (GlobalVariables.veranderdekleur == true)
            {
                backgroundcolor = rnd.Next(1, 4);
            }
            else
            {
                backgroundcolor = 5;
            }
            textcolor = rnd.Next(1, 4);
            text = rnd.Next(1, 4);
            if (backgroundcolor == textcolor)
            {
                backgroundcolor = 5;
            }
            if (backgroundcolor == 1)
            {
                this.BackColor = System.Drawing.Color.Red;
            }
            if (backgroundcolor == 2)
            {
                this.BackColor = System.Drawing.Color.Blue;
            }
            if (backgroundcolor == 3)
            {
                this.BackColor = System.Drawing.Color.Yellow;
            }
            if (backgroundcolor == 4)
            {
                this.BackColor = System.Drawing.Color.Green;
            }
            if (backgroundcolor == 5)
            {
                this.BackColor = System.Drawing.Color.Black;
            }
            if (text == 1)
            {
                WOORD.Text = "Rood";
            }
            if (text == 2)
            {
                WOORD.Text = "Blauw";
            }
            if (text == 3)
            {
                WOORD.Text = "Geel";
            }
            if (text == 4)
            {
                WOORD.Text = "Groen";
            }
            if (textcolor == 1)
            {
                WOORD.ForeColor = Color.Red;
            }
            if (textcolor == 2)
            {
                WOORD.ForeColor = Color.Blue;
            }
            if (textcolor == 3)
            {
                WOORD.ForeColor = Color.Yellow;
            }
            if (textcolor == 4)
            {
                WOORD.ForeColor = Color.Green;
            }
        }

        private void button5_Click(object sender, EventArgs e)
        {
            localtime.Stop();
            GlobalVariables.timer.Stop();
            GlobalVariables.tijd = GlobalVariables.timer.ElapsedMilliseconds - localtime.ElapsedMilliseconds;
            localtime.Reset();
            this.Close();
            Form3 einde = new Form3();
            einde.Visible = true;
            einde.Show();
        }
    }
}


Form3:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace WindowsFormsApplication3
{
    public partial class Form3 : Form
    {
        public Form3()
        {
            InitializeComponent();
        }
        private void Form3_Load(object sender, EventArgs e)
        {
            long gemtijd = GlobalVariables.tijd / GlobalVariables.gedaan;
            this.tijdlabel.Text = Convert.ToString(gemtijd);
            this.foutenlabel.Text = Convert.ToString(GlobalVariables.fouten);
        }

        private void button1_Click(object sender, EventArgs e)
        {
            GlobalVariables.timer.Reset();
            GlobalVariables.fouten = 0;
            GlobalVariables.gedaan = 0;
            this.Close();
            Form2 test = new Form2();
            test.Visible = true;
            test.Show();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

Er is ook wat code bijgekomen voor een 2e functie die toegevoegd is.
 
OK, zet je de status van de vraag dan op opgelost? :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan