Cang Hangman Game Error

I keep this error.

A violation of ArgumentOutOfRangeException was unhandled. The index was out of reach. Must be non-negative and smaller than the size of the collection. Parameter Name: Index

Below is the full code of the form in which there is a problem, and this is where the Hangman game takes place.

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.Data.SqlClient;

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

Shortcuts List = new List (); this is the label that makeLabels () will use.

    String w = "";
    List<Label> labels = new List<Label>();
    int score = 0, missed = 0, correctCount = 0, gameCount = 1;

Below is the code, when the user presses the QUIT button, the application closes.

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

Below is the code, when the form loads or displays, the makeLabels () method is used.

    private void Form2_Load(object sender, EventArgs e)
    {
        makeLabels();
    }

Below is the use of a random word and conversion to a string replacing each alphabet with the character "_". The converted string will be placed inside the Labels label.

    private void makeLabels()
    {
        w = getRandomWord().ToLower();
        w.Replace(" ", "");

        char[] letters = w.ToCharArray();
        int space = 569 / letters.Length - 1;

        for (int i = 0; i < letters.Length; i++)
        {
            labels.Add(new Label());
            labels[i].Location = new Point((i * space) + 10, 109);
            labels[i].Parent = groupBox2;
            labels[i].Text = "_" + i;
            labels[i].BringToFront();
            labels[i].CreateControl();
        }


        lblLength.Text = letters.Length.ToString();
    }

- , 1) 2) .

    private void newGame()
    {
        gameCount++;

        if (gameCount == 15)
        {
            this.Hide();
            if (score >= 7)
            {
                Form4 f4 = new Form4();
                f4.ShowDialog();
            }
            else
            {
                Form6 f6 = new Form6();
                f6.ShowDialog();
            }
        }
        else
        {
            getRandomWord();
            makeLabels();
            enableLetterButtons();
            lblMissed.Text = "";
            hangPic.Image = Hangman_APPD_Assignment.Properties.Resources.part0;
        }
    }

, .

    public string getRandomWord()
    {
        Random randomNum = new Random();

        String[] words = {"virus", "network", "syntax", "router", "switch", "worms", "trojan", "email", "bios",
                             "cmos", "ram", "cipher", "malware", "botnet", "cookies", "patches", "cryptograph",
                             "metamorphic", "polymorphic", "rootkit", "logicbomb", "spam", "spyware", "keyloggers",
                             "adware", "software", "hardware", "botherder", "phishing", "whaling", "pharming", 
                             "vishing", "spim", "topology", "tailgating", "loop", "java", "motherboard", "unique",
                             "parameter"};
        int randomNumber = randomNum.Next(0, (words.Length - 1));

        return words[randomNumber];
    }

, , .

    private void setPicture(int wrongTry)
    {
        switch(wrongTry)
        {
            case 0: 
                hangPic.Image = Hangman_APPD_Assignment.Properties.Resources.part0;
                break;
            case 1: 
                hangPic.Image = Hangman_APPD_Assignment.Properties.Resources.part1;
                break;
            case 2:
                hangPic.Image = Hangman_APPD_Assignment.Properties.Resources.part2;
                break;
            case 3:
                hangPic.Image = Hangman_APPD_Assignment.Properties.Resources.part3;
                break;
            case 4:
                hangPic.Image = Hangman_APPD_Assignment.Properties.Resources.part4;
                break;
            case 5:
                hangPic.Image = Hangman_APPD_Assignment.Properties.Resources.part5;
                break;
            case 6:
                hangPic.Image = Hangman_APPD_Assignment.Properties.Resources.part6;
                break;
        }
    }

, , .

    private void checkGuessedLetter(string wordToGuess, string guessedLetter, Button buttonName)
    {
        int strLength = wordToGuess.Length;

        char letter = guessedLetter.ToCharArray()[0];
        buttonName.Enabled = false;

        if (w.Contains(guessedLetter))
        {
            char[] LS = w.ToCharArray();
            for (int i = 0; i < LS.Length; i++)
            {
                if (LS[i] == letter)
                {
                    MessageBox.Show("The value of w is " + w + " AND " + i);
                    labels[i].Text = letter.ToString();
                    conditionPic.Image = Hangman_APPD_Assignment.Properties.Resources.correctpic;
                    correctCount++;
                    MessageBox.Show("You got correct " + correctCount + " time(s).");
                    if (correctCount == strLength)
                    {
                        MessageBox.Show("Good job! Keep it up, matey!", "Victory!", MessageBoxButtons.OK, MessageBoxIcon.None);
                        score++;
                        lblScore.Text = score.ToString();
                        newGame();
                        missed = 0;
                        correctCount = 0;
                        labels.Clear();
                    }
                }

                foreach (Label l in labels)
                    if (l.Text == "__") return;
            }
        }
        else
        {
            conditionPic.Image = Hangman_APPD_Assignment.Properties.Resources.wrong;
            lblMissed.Text += " " + letter.ToString() + " |";
            missed++;
            MessageBox.Show("You missed " + missed + " time(s).");
            setPicture(missed);

            if (missed == 6)
            {
                MessageBox.Show("Unfortunately, you lost this round... Make sure you won't let this happen again, "
                + "or else you will end up in Davy Jones' Locker.", "Defeat!", MessageBoxButtons.OK, 
                MessageBoxIcon.Error);
                newGame();
                missed = 0;
                correctCount = 0;
                labels.Clear();
            }
        }
    }

, lblScore, .

    public int getScore()
    {
        int score = int.Parse(lblScore.Text);
        return score;
    }

, , , Hangman.

    private void Abtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "a", Abtn);
    }

    private void Bbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "b", Bbtn);
    }

    private void Cbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "c", Cbtn);
    }

    private void Dbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "d", Dbtn);
    }

    private void Ebtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "e", Ebtn);
    }

    private void Fbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "f", Fbtn);
    }

    private void Gbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "g", Gbtn);
    }

    private void Hbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "h", Hbtn);
    }

    private void Ibtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "i", Ibtn);
    }

    private void Jbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "j", Jbtn);
    }

    private void Kbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "k", Kbtn);
    }

    private void Lbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "l", Lbtn);
    }

    private void Mbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "m", Mbtn);
    }

    private void Nbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "n", Nbtn);
    }

    private void Obtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "o", Obtn);
    }

    private void Pbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "p", Pbtn);
    }

    private void Qbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "q", Qbtn);
    }

    private void Rbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "r", Rbtn);
    }

    private void Sbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "s", Sbtn);
    }

    private void Tbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "t", Tbtn);
    }

    private void Ubtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "u", Ubtn);
    }

    private void Vbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "v", Vbtn);
    }

    private void Wbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "w", Wbtn);
    }

    private void Xbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "x", Xbtn);
    }

    private void Ybtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "y", Ybtn);
    }

    private void Zbtn_Click(object sender, EventArgs e)
    {
        checkGuessedLetter(w, "z", Zbtn);
    }

, , .

    private void enableLetterButtons()
    {
        Abtn.Enabled = true;
        Bbtn.Enabled = true;
        Cbtn.Enabled = true;
        Dbtn.Enabled = true;
        Ebtn.Enabled = true;
        Fbtn.Enabled = true;
        Gbtn.Enabled = true;
        Hbtn.Enabled = true;
        Ibtn.Enabled = true;
        Jbtn.Enabled = true;
        Kbtn.Enabled = true;
        Lbtn.Enabled = true;
        Mbtn.Enabled = true;
        Nbtn.Enabled = true;
        Obtn.Enabled = true;
        Pbtn.Enabled = true;
        Qbtn.Enabled = true;
        Rbtn.Enabled = true;
        Sbtn.Enabled = true;
        Tbtn.Enabled = true;
        Ubtn.Enabled = true;
        Vbtn.Enabled = true;
        Wbtn.Enabled = true;
        Xbtn.Enabled = true;
        Ybtn.Enabled = true;
        Zbtn.Enabled = true;
    }

, X .

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

}

P.S. , , . ,

labels[i].Text = letter.ToString();

checkGuessedLetter ( wordToGuess, guessedLetter, Button buttonName).

+4
1

:

newGame();
missed = 0;
correctCount = 0;
labels.Clear();

- , newGame, , ? ( , ), .

? . , , , newGame MakeLabels, , labels. , labels .

, , , , . , labels, , . , , , !:)

+4

All Articles