Bekijk de onderstaande video om te zien hoe je onze site als een web app op je startscherm installeert.
Opmerking: Deze functie is mogelijk niet beschikbaar in sommige browsers.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Media;
namespace project_fase1
{
public partial class FrmStap11 : Form
{
#region instantievariabelen
//private int geselecteerdeTafel;
//dit is het getal waar je de geselecteerdeTafel mee vermenigvuldigt
private int factor1 = 5;
private Random randomFactor1 = new Random();
//de oplossing die de gebruiker ingaf
private int oplGebruiker;
//de berekende oplossing van de opgave
private int oplCorrect;
//variabelen voor de timerblokjes
int breedteTimerBlokje = 25;
int hoogteTimerBlokje = 80;
const int XTIMERBLOKJE = 16;
int xTimerBlokje = XTIMERBLOKJE;
int yTimerBlokje = 8;
int deltaxTimerBlokje = 31;
//stringvariabele om invoer met knoppen op te bouwen
string oplString = "";
//stap7
Graphics paperTimer;
SolidBrush mijnBorstel;
//stap8
int verstrekenTijd;
//stap 9
Graphics paperFeedbackStreep;
Pen correctiePen;
Graphics paperFeedbackVinkje;
Bitmap feedbackJuist = project_fase1.Properties.Resources.Check;
//stap 10
int punten;
int teVerdienenPunten;
Graphics paperPunten;
int streefdoelPunten = 10;
int hoogtePuntenBlokje;
int breedtePuntenBlokje;
int xPuntenBlokje = 0;
int yPuntenBlokje;
Pen penPunten = new Pen(Color.White);
SolidBrush puntenBorstel;
Boolean doorstreept = false;
// stap 13
int neemGetalUitListGeselecteerdeTafel = 0;
List<int> listGeselecteerdeTafels = new List<int>();
private Random geefRandomGetal = new Random();
List<int> factor2Lijst = new List<int>();
Formstart startForm = new Formstart();
List<int> opgavesTafelVan1 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan2 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan3 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan4 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan5 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan6 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan7 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan8 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan9 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> opgavesTafelVan10 = new List<int> { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
#endregion
#region constructor
public FrmStap11()
{
InitializeComponent();
//stap 7
paperTimer = panelTimer.CreateGraphics();
mijnBorstel = new SolidBrush(Color.Green);
//stap 9
paperFeedbackStreep = txtOplossing.CreateGraphics();
correctiePen = new Pen(Color.Red, 4);
paperFeedbackVinkje = lblFeedback.CreateGraphics();
timer1.Stop();
//stap 10
paperPunten = panelPunten.CreateGraphics();
hoogtePuntenBlokje = panelPunten.Height / streefdoelPunten;
breedtePuntenBlokje = panelPunten.Width;
yPuntenBlokje = panelPunten.Height - hoogtePuntenBlokje+10;
puntenBorstel = new SolidBrush(Color.RoyalBlue);
trackBarStreefdoelPunten.Value = streefdoelPunten;
lblStreefdoelPunten.Text = streefdoelPunten.ToString();
btnOpnieuw.Enabled = false;
}
#endregion
#region eventhandlers
private void panelTimer_Paint(object sender, PaintEventArgs e)
{
this.TekenJuisteAantalTimerBlokjes(verstrekenTijd);
this.ToonPunten();
if (doorstreept)
{
paperFeedbackStreep.DrawLine(correctiePen, 0, txtOplossing.Height - 10, txtOplossing.Width - 10, 15);
}
}
//btnEnter klikken --> timer stoppen en feedback oproepen.
private void btnEnter_Click(object sender, EventArgs e)
{
var itemValue = default(int);
if (int.TryParse(txtOplossing.Text, out itemValue))
{
timer1.Stop();
this.Feedback();
}
else
{
timer1.Stop();
DialogResult error;
error = MessageBox.Show("Er werd geen getal ingevoerd", "Error!!", MessageBoxButtons.OK);
if (error == DialogResult.OK)
{
ToonNieuweOpgave();
}
}
}
private void btnEen_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("1");
}
private void btnTwee_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("2");
}
private void btnDrie_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("3");
}
private void btnVier_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("4");
}
private void btnVijf_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("5");
}
private void btnZes_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("6");
}
private void btnZeven_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("7");
}
private void btnAcht_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("8");
}
private void btnNegen_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("9");
}
private void btnNul_Click(object sender, EventArgs e)
{
PasGetalInvoerAan("0");
}
private void timer1_Tick(object sender, EventArgs e)
{
verstrekenTijd++;
if (verstrekenTijd == 10)
{
timer1.Stop();
this.Feedback();
}
this.TekenJuisteAantalTimerBlokjes(verstrekenTijd);
}
//deze timer zorgt er voor dat de feedback bij een opgave voor één seconde zichtbaar blijft.
private void timer2_Tick(object sender, EventArgs e)
{
if (punten < streefdoelPunten) ToonNieuweOpgave();
timer2.Stop();
}
//deze methode past de variabele streefdoelPunten aan. de hoogtePuntenBlokje wordt ook aangepast.
private void trackBarStreefdoelPunten_Scroll(object sender, EventArgs e)
{
lblStreefdoelPunten.Text = trackBarStreefdoelPunten.Value.ToString();
streefdoelPunten = Convert.ToInt16(trackBarStreefdoelPunten.Value);
hoogtePuntenBlokje = panelPunten.Height / streefdoelPunten;
}
private void btnOpnieuw_Click(object sender, EventArgs e)
{
streefdoelPunten = 10;
trackBarStreefdoelPunten.Value = streefdoelPunten;
lblStreefdoelPunten.ForeColor = Color.Black;
lblStreefdoelPunten.Text = streefdoelPunten.ToString();
punten = 0;
paperTimer.Clear(Color.White);
paperPunten.Clear(Color.White);
paperFeedbackVinkje.Clear(Color.White);
paperFeedbackStreep.Clear(Color.White);
txtOplossing.Text = "";
//listGeselecteerdeTafels.Clear();
//listBox1.Items.Clear();
timer1.Stop();
lblOpgave.Text = "";
trackBarStreefdoelPunten.Enabled = true;
hoogtePuntenBlokje = panelPunten.Height / streefdoelPunten;
this.AlleButtonsFalse();
btnOpnieuw.Focus();
}
private void overTafelsVanVermenigvuldigingToolStripMenuItem_Click(object sender, EventArgs e)
{
AboutBox1 a = new AboutBox1();
a.Show();
}
private void nieuwToolStripMenuItem_Click(object sender, EventArgs e)
{
if (startForm.ShowDialog() == DialogResult.OK)
{
timer3.Start();
listGeselecteerdeTafels = (List<int>)startForm.Tag;
switch (factor1)
{
case 1:
factor2Lijst = opgavesTafelVan1;
break;
case 2:
factor2Lijst = opgavesTafelVan2;
break;
case 3:
factor2Lijst = opgavesTafelVan3;
break;
case 4:
factor2Lijst = opgavesTafelVan4;
break;
case 5:
factor2Lijst = opgavesTafelVan5;
break;
case 6:
factor2Lijst = opgavesTafelVan6;
break;
case 7:
factor2Lijst = opgavesTafelVan7;
break;
case 8:
factor2Lijst = opgavesTafelVan8;
break;
case 9:
factor2Lijst = opgavesTafelVan9;
break;
case 10:
factor2Lijst = opgavesTafelVan10;
break;
}
}
}
#endregion
#region methodes
//deze methode tekent een timerblokje en past zet de xpositie goed voor de volgende
public void TekenTimerBlokje(Graphics paperTimer, Brush borstel, ref int xPos)
{
paperTimer.FillRectangle(borstel, xTimerBlokje, yTimerBlokje, breedteTimerBlokje, hoogteTimerBlokje);
xPos = xPos + deltaxTimerBlokje;
}
public void TekenJuisteAantalTimerBlokjes(int verstrekenTijd)
{
xTimerBlokje = XTIMERBLOKJE;
mijnBorstel.Color = Color.Green;
int i = 1;
while ((i <= verstrekenTijd) && (i<=4))
{
this.TekenTimerBlokje(paperTimer, mijnBorstel, ref xTimerBlokje);
i++;
}
mijnBorstel.Color = Color.Orange;
while ((i<=verstrekenTijd) && (i>4) && (i < 8))
{
this.TekenTimerBlokje(paperTimer, mijnBorstel, ref xTimerBlokje);
i++;
}
mijnBorstel.Color = Color.Red;
while ((i <= verstrekenTijd) && (i >= 7))
{
this.TekenTimerBlokje(paperTimer, mijnBorstel, ref xTimerBlokje);
i++;
}
}
//deze methode past de oplstring aan en toont die in txtOplossing
public void PasGetalInvoerAan(string nieuwCijfer)
{
oplString += nieuwCijfer;
txtOplossing.Text = oplString;
}
public void ActieBijRadioButtons()
{
//this.Tag = listGeselecteerdeTafels;
//listGeselecteerdeTafels.Add(geselecteerdeTafel);
//ToonNieuweOpgave();
ToonNieuweOpgave();
//project1
trackBarStreefdoelPunten.Enabled = false;
btnNul.Enabled = true;
btnEen.Enabled = true;
btnTwee.Enabled = true;
btnDrie.Enabled = true;
btnVier.Enabled = true;
btnVijf.Enabled = true;
btnZes.Enabled = true;
btnZeven.Enabled = true;
btnAcht.Enabled = true;
btnNegen.Enabled = true;
btnEnter.Enabled = true;
}
public void ToonNieuweOpgave()
{
//stap13
neemGetalUitListGeselecteerdeTafel = listGeselecteerdeTafels.ElementAt(geefRandomGetal.Next(listGeselecteerdeTafels.Count));
timer1.Start();
oplString = "";
verstrekenTijd = 0;
teVerdienenPunten = 3;
paperTimer.Clear(Color.White);
paperFeedbackVinkje.Clear(Color.White);
doorstreept = false;
mijnBorstel.Color = Color.Green;
xTimerBlokje = XTIMERBLOKJE;
txtOplossing.Text = "";
lblFeedback.Text = "";
//factor1 = randomFactor1.Next(0, 11);
lblOpgave.Text = factor1 + " x " + neemGetalUitListGeselecteerdeTafel + " =";
try
{
factor1 = factor2Lijst.ElementAt(geefRandomGetal.Next(factor2Lijst.Count));
lblOpgave.Text = factor1 + " x " + neemGetalUitListGeselecteerdeTafel + " =";
}
catch (SystemException)
{
MessageBox.Show("Proficiat alle opgaves zijn corect opgelost");
timer1.Stop();
}
txtOplossing.Focus();
}
//stap 9 deze methode doorstreept foutieve oplossingen die de gebruiker ingaf en toont de correcte oplossing
//in lblFeedback. De variabele punten wordt aangepast.
//stap 10: te verdienen punten worden ook aangepast.
//stap 11: op het einde een nieuwe opgave oproepen tot er 10 punten zijn verzameld.
public void Feedback()
{
if (verstrekenTijd > 4) teVerdienenPunten = 2;
if (verstrekenTijd > 7) teVerdienenPunten = 1;
if (verstrekenTijd == 10) teVerdienenPunten = 0;
oplCorrect = factor1 * neemGetalUitListGeselecteerdeTafel;
if (txtOplossing.Text == "")
{
lblFeedback.Text = oplCorrect.ToString();
teVerdienenPunten = 0;
}
else
{
oplGebruiker = Convert.ToInt32(txtOplossing.Text);
if (oplGebruiker != oplCorrect)
{
paperFeedbackStreep.DrawLine(correctiePen, 0, txtOplossing.Height - 10, txtOplossing.Width - 10, 15);
lblFeedback.Text = oplCorrect.ToString();
teVerdienenPunten = 0;
doorstreept = true;
}
else
{
factor2Lijst.Remove(factor1);
paperFeedbackVinkje.DrawImage(feedbackJuist, 25, 5);
//verwijderUitlijst();
this.lblFeedback.ImageAlign = System.Drawing.ContentAlignment.TopRight;
}
}
punten = punten + teVerdienenPunten;
this.ToonPunten();
//oorspronkelijk werd hier ToonNieuweOpgave opgeroepen, maar dit gebeurt zo snel dat
//de feedback niet meer zichtbaar is. Oplossing timer2 invoeren. Die start hier.
//bij volgende tick van de timer wordt de methode ToonNieuweOpgave opgeroepen en wordt de timer
//onmiddellijk weer gestopt.
timer2.Start();
if (punten >= streefdoelPunten)
{
SoundPlayer simpleSound = new SoundPlayer(project_fase1.Properties.Resources.tada);
simpleSound.Play();
lblStreefdoelPunten.ForeColor = Color.RoyalBlue;
btnOpnieuw.Enabled = true;
timer1.Stop();
this.AlleButtonsFalse();
btnOpnieuw.Focus();
}
}
//Deze methode toont hoeveel punten de gebruiker al verzamelde.
public void ToonPunten()
{
paperPunten.Clear(Color.White);
yPuntenBlokje = panelPunten.Height - hoogtePuntenBlokje;
int minPuntenEnStreefdoelPunten;
if (punten > streefdoelPunten)
{
minPuntenEnStreefdoelPunten = streefdoelPunten;
}
else
{
minPuntenEnStreefdoelPunten = punten;
}
for (int i = 1; i <= minPuntenEnStreefdoelPunten; i++)
{
this.TekenPuntenBlokje(paperPunten, puntenBorstel, ref yPuntenBlokje);
}
}
//deze methode tekent een puntenblokje en past zet de xpositie goed voor de volgende
public void TekenPuntenBlokje(Graphics paperPunten, Brush borstel, ref int yPos)
{
paperPunten.FillRectangle(borstel, xPuntenBlokje, yPuntenBlokje, breedtePuntenBlokje, hoogtePuntenBlokje);
paperPunten.DrawRectangle(penPunten, xPuntenBlokje, yPuntenBlokje, breedtePuntenBlokje, hoogtePuntenBlokje);
yPos = yPos - hoogtePuntenBlokje;
}
public void AlleButtonsFalse()
{
btnNul.Enabled = false;
btnEen.Enabled = false;
btnTwee.Enabled = false;
btnDrie.Enabled = false;
btnVier.Enabled = false;
btnVijf.Enabled = false;
btnZes.Enabled = false;
btnZeven.Enabled = false;
btnAcht.Enabled = false;
btnNegen.Enabled = false;
btnEnter.Enabled = false;
}
#endregion
private void timer3_Tick(object sender, EventArgs e)
{
ToonNieuweOpgave();
verstrekenTijd++;
if (verstrekenTijd == 10)
{
timer1.Stop();
this.Feedback();
}
this.TekenJuisteAantalTimerBlokjes(verstrekenTijd);
}
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace project_fase1
{
public partial class Formstart : Form
{
public Formstart()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
List<int> listGeselecteerdeTafels = new List<int>();
if (checkBox1.Checked)
{
listGeselecteerdeTafels.Add(1);
}
if (checkBox2.Checked)
{
listGeselecteerdeTafels.Add(2);
}
if (checkBox3.Checked)
{
listGeselecteerdeTafels.Add(3);
}
if (checkBox4.Checked)
{
listGeselecteerdeTafels.Add(4);
}
if (checkBox5.Checked)
{
listGeselecteerdeTafels.Add(5);
}
if (checkBox6.Checked)
{
listGeselecteerdeTafels.Add(6);
}
if (checkBox7.Checked)
{
listGeselecteerdeTafels.Add(7);
}
if (checkBox8.Checked)
{
listGeselecteerdeTafels.Add(8);
}
if (checkBox9.Checked)
{
listGeselecteerdeTafels.Add(9);
}
if (checkBox10.Checked)
{
listGeselecteerdeTafels.Add(10);
}
timer3.Start();
this.Tag = listGeselecteerdeTafels;
}
}
}
Je code
We gebruiken essentiële cookies om deze site te laten werken, en optionele cookies om de ervaring te verbeteren.