//! Metoda rysująca pełny ciąg znaków na panelu graficznym g (tylko tryb treningu). private void RysT(grafika graf) { graf.Clear(); x = 50; int dlugosc = 0; znaki = ""; for (int rr = 0; rr < dl; rr++) { for (int j = 0; j < losowy[rr].znak.Length; j++) { znaki = znaki + losowy[rr].znak[j]; } if (nadawanie) { graf.RysN1(x, y, losowy[rr].litera, losowy[rr].kolor, tekst); dlugosc = TextRenderer.MeasureText(losowy[rr].litera, new Font("Arial", 48)).Width; } else if (!nadawanie) { graf.RysN1(x, y, znaki, losowy[rr].kolor, tekst); dlugosc = TextRenderer.MeasureText(znaki, new Font("Arial", 48)).Width; } znaki = ""; x += dlugosc + 5; } }
//! Metoda generująca losowy ciąg znaków (tylko tryb treningu). private void generator(grafika graf) { znaki = ""; int liczba; int dlugosc = 0; x = 50; Random rnd = new Random(); k += 1; for (int r = 0; r < dl; r++) { k += 2; liczba = rnd.Next(26); losowy[r] = new element(alfabet[liczba].litera, alfabet[liczba].znak); for (int j = 0; j < losowy[r].znak.Length; j++) { znaki = znaki + losowy[r].znak[j]; uzupZ(r, liczba, j); } if (fa == 4) { k += 1; } else { k += 4; } if (nadawanie) { graf.RysN1(x, y, losowy[r].litera, Color.Black, tekst); dlugosc = TextRenderer.MeasureText(losowy[r].litera, new Font("Arial", 48)).Width; } else if (!nadawanie) { graf.RysN1(x, y, znaki, Color.Black, tekst); dlugosc = TextRenderer.MeasureText(znaki, new Font("Arial", 48)).Width; } znaki = ""; x += dlugosc + 5; } k += 2 + fa; }
//! Metoda obsługująca tryb nauki biernej. internal async void Nauka1(grafika graf, dzwiek dzwk) { nauka = true; x = 450; while (nauka) { graf.Clear(); graf.off(); for (int i = 0; i < 26; i++) { znaki = alfabet[i].litera + " "; k = 3; for (int j = 0; j < alfabet[i].znak.Length; j++) { znaki = znaki + alfabet[i].znak[j]; uzupZ(0, i, j); } k = k + fa; z = 0; graf.RysN1(x, y, znaki, Color.Black, true); for (int l = 0; l < k; l++) { await Task.Delay(mn * 5); if (reset || menu) { if (menu) { menu = false; nauka = false; return; } break; } if (l > 2 && (swiatlo || dzwiek)) { mrug(0, l, alfabet[i].znak.Length, graf, dzwk); } } if (reset) { reset = false; break; } graf.Clear(); } } }
//! Metoda obsługująca tryb nauki czynnej. internal async void Nauka2(grafika graf, Label label1, Label label2, TextBox textBox1, dzwiek dzwk) { nauka = true; bledy = 0; x = 510; label2.Text = "Błędy: " + bledy; textBox1.Clear(); while (nauka) { graf.Clear(); label1.ForeColor = Color.Green; label1.Text = "Wpisz literę odpowiadającą symbolowi"; graf.drawBrush.Color = Color.Black; for (int i = 0; i < 26; i++) { znaki2 = ""; znaki = ""; keyPress = 0; poprawne = false; graf.Clear(); k = 3; z = 0; for (int j = 0; j < alfabet[i].znak.Length; j++) { znaki = znaki + alfabet[i].znak[j]; uzupZ(0, i, j); } k = k + fa; if (nadawanie) { graf.RysN1(x, y, alfabet[i].litera, Color.Black, tekst); } else if (!nadawanie) { graf.RysN1(x, y, znaki, Color.Black, tekst); } while (!poprawne) { if (nadawanie) { await Task.Delay(5); if (reset || menu) { if (menu) { menu = false; nauka = false; return; } break; } textBox1.Text = znaki2; if (keyPress == alfabet[i].znak.Length) { spraw(znaki, graf, label1, label2); } } else if (!nadawanie) { for (int l = 0; l < k && !poprawne; l++) { await Task.Delay(mn * 5); if (reset || menu) { if (menu) { menu = false; nauka = false; return; } break; } if (l > 2 && (swiatlo || dzwiek)) { mrug(0, l, alfabet[i].znak.Length, graf, dzwk); } if (keyPress > 0) { spraw(alfabet[i].litera, graf, label1, label2); textBox1.Text = ""; if (poprawne) { z = 0; } } } } if (reset) { break; } } if (reset) { reset = false; bledy = 0; break; } graf.drawBrush.Color = Color.Black; if (i == 25) { nauka = false; graf.Clear(); textBox1.Text = ""; graf.drawBrush.Color = Color.Green; label1.Text = "Dobra robota. Poprawnie zakodowałeś cały ciąg."; while (!menu) { await Task.Delay(mn * 5); if (reset) { reset = false; nauka = true; bledy = 0; label2.Text = "Błędy: " + bledy; break; } } } } } }