C# Сброс таймера

653
16 января 2017, 18:23

Здравствуйте. Пишу приложение "угадай слово". Нашел видеоуроки и по ним делаю. Код следующий

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;
using System.Net;
 namespace finalHome
 {
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }
    string word = "";
    List<Label> labels = new List<Label>();
    int t = 10;
    private void timer1_Tick(object sender, EventArgs e)
    {  
        t--;
        timer.Text = t.ToString();
        if (t == 0)
        {
            timer1.Stop();
       MessageBox.Show("Your time is up the word was "+ word,"LOST");
       Reset();
       }
    }
    private void startButton_Click(object sender, EventArgs e)
    {
        Reset();
        timer1.Enabled = true;
    }
  public  void MakeLabels()
    {
      word =  GetRandomWord();
      char[] chars = word.ToCharArray();
      int between = 330 / chars.Length;
      for (int i = 0; i < chars.Length; i++) 
      { 
              labels.Add(new Label());
              labels[i].Location = new Point((i * between) + 10, 80);
              labels[i].Text = "_";
              labels[i].Parent = groupBox1;
              labels[i].BringToFront();
              labels[i].CreateControl();
       }
      attemptLabel2.Text = (chars.Length).ToString();

    }
  void Mistake()
  {
      for (int i = word.Length; i > 0; i--)
      { attemptLabel2.Text = (word.Length-1).ToString(); }
  }
    string GetRandomWord()
{
    WebClient wc = new WebClient();
    string wordList = wc.DownloadString("http://www-cs-faculty.stanford.edu/~knuth/sgb-words.txt");
    string[] words = wordList.Split('\n');
    Random ran = new Random();
    return words[ran.Next(0, words.Length )];
    }
    public void submitButton_Click(object sender, EventArgs e)
    {
        char letter = SubmitTextox.Text.ToLower().ToCharArray()[0];
        if(!char.IsLetter(letter))
        {
            MessageBox.Show("you can submit only letters","Error", MessageBoxButtons.OK,MessageBoxIcon.Error);
            return;
        }
        if (word.Contains(letter))
        {
            char[] letters = word.ToCharArray();
            for (int i = 0; i < letters.Length; i++)
            {
                if (letters[i] == letter)
                    labels[i].Text = letter.ToString();
            }
            foreach (Label l in labels)
                if (l.Text == "_") 
                    return;
            MessageBox.Show("You won!", "Nice");
            Reset();
        }
        else 
        {
            MessageBox.Show("there is not this letter in the word!","Error");
            label1.Text += " " + letter.ToString() + ",";
            Mistake();
        }
    }
    void Reset()
    {
        GetRandomWord();
        MakeLabels();
        label1.Text = "Missed";
        SubmitTextox.Text = "";
        timer1.Enabled = false;
        timer1.Enabled = true;

    }
    private void resetButton_Click(object sender, EventArgs e)
    {
        Reset();
    }
    private void submitWord_Click(object sender, EventArgs e)
    {
        if (WordTextBox.Text == word)
        {
            MessageBox.Show("You have won! The word is " + word);
            Reset();
        }
        else
        {
            MessageBox.Show("Wrong word! Try again");
        }
    }
 }
}

1 При значении таймера равным 0 выходит сообщение что пользователь проиграл. При нажатии на reset таймер продолжает считать до -1 -2 -3 и тд. Как сделать так, чтоб при нажатии на Reset таймер начал отчет с начального значения? 2. Как сделать, чтобы при вводе неправильных букв или слов в SubmitTextOx и WordTextBox соответственно, значение attemptLabel2 уменьшалось на единицу. и когда это значение достигнет 0, так же вышло сообщение о том что пользователь проиграл. спасибо большое

Answer 1
void Reset()
{
    t = 10;
    GetRandomWord();
    MakeLabels();
    label1.Text = "Missed";
    SubmitTextox.Text = "";
    timer1.Enabled = false;
    timer1.Enabled = true;
}
READ ALSO
Получить значение ListView

Получить значение ListView

Добрый вечер, подскажите пожалуйста, есть ListView:

362
Как получить название переменной в виде строки?

Как получить название переменной в виде строки?

Заранее прошу прощения если вопрос кому-то покажется глупым и бессмысленным, но для меня он имеет смыслНеобходима функция которая на входе...

308
Несколько баз данных Symfony 3

Несколько баз данных Symfony 3

Symfony 3Проект использует основную базу данных

407
Проблема с переменной или функцией

Проблема с переменной или функцией

Это bodyphp Для вывода всех строчек с масива отвечает функция getPosts, она же и задает в ссылке id

282