Ребята, у меня возникла одна маленькая проблема.
Я делаю курсовую по игре виселица.
Когда отгадываю первую букву слова, то она открывается, но на
PictureBox-е открывается следующая картинка, т.е. считается за неправильную букву.
В чем может быть проблема?
Помогите пожалуйста))
вот полный код проги:
Код:
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.IO;
namespace WindowsFormsApplication1
{
public partial class Form2 : Form
{
string word; int numGuessesInt; List<char> guessedLetters;
public Form2()
{
InitializeComponent();
}
//Создание кнопок для букв алфавита
private void Form2_Shown(object sender, EventArgs e)
{
string str = "АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ";//строковая перем. с алфавитом
int posX = 20, posY = 150;//начальные позиции первой строки букв
for (int i = 0; i < str.Count(); i++)//создание цикла
{
Button button = new Button();//метод создания новой кнопки
button.BackColor = Color.Aqua;//цвет кнопки
button.Text = str[i] + "";//присваивает значение след.буквы
button.Click += new EventHandler(this.button_Click);
button.Location = new System.Drawing.Point(posX, posY);//рисование кнопки
button.Size = new System.Drawing.Size(30, 25);//задание размера кнопки
this.Controls.Add(button);//добавление кнопки
posX += button.Width;//ширина кнопки
if ((i + 1) % 8 == 0)
{
posX = 20;
posY += button.Height;//высота кнопки
}
}
start_new_game();
}
//начало игры
private void start_new_game()//начальная позиция
{
numGuessesInt = 6;//количество попыток
guessedLetters = new List<char>();//отгаданные буквы
word = pickWord();
MessageBox.Show("Город");
label1.Text = displayWord();
label2.Text = "";
pictureBox1.Load(@"платформа с палкой_1.jpg");
}
static string pickWord()//выбор слова рандомно
{
string[] wordList = File.ReadAllLines("Список городов России.txt");
Random randomGen = new Random();
return wordList[randomGen.Next(wordList.Count())];
}
private string displayWord()
{
string returnedWord = "";
if (guessedLetters.Count == 0)
{
foreach (char letter in word) returnedWord += "_ ";
return returnedWord;
}
foreach (char letter in word)
{
bool letterMatch = false;
foreach (char character in guessedLetters)
if (char.ToLower(character) == char.ToLower(letter))
{
returnedWord += character + " ";
letterMatch = true;
break;
}
else letterMatch = false;
if (letterMatch == false) returnedWord += "_ ";
}
return returnedWord;
}
void button_Click(object sender, System.EventArgs e)
{
Button letter_btn = sender as Button;
string guessedLetter = letter_btn.Text;
string letters = "";
bool repeat = false;
for (int i = 0; i < guessedLetters.Count; i++)
if (char.ToLower(guessedLetters[i]) == char.ToLower(guessedLetter.ToCharArray()[0])) repeat = true;
if (repeat == false)
{
guessedLetters.Add(guessedLetter.ToCharArray()[0]);
if (!word.ToCharArray().Contains(char.ToLower(guessedLetter.ToC harArray()[0]))) numGuessesInt -= 1;
pictureBox1.Load(@"платформа с палкой_"+(7 - numGuessesInt)+".jpg");
foreach (char letter in guessedLetters) letters += " " + letter;
label2.Text = letters;
string wordToDisplay = displayWord();
label1.Text = displayWord();
if (!wordToDisplay.Contains("_"))
{
MessageBox.Show("Вы выиграли! Правильное слово: " + word);
start_new_game();
}
else if (numGuessesInt <= 0)
{
MessageBox.Show("Вы проиграли! Правильное слово: " + word);
start_new_game();
}
}
}
//кнопка в главное меню
private void button1_Click(object sender, EventArgs e)
{
Form1 fr = new Form1();
fr.Show();
this.Hide();