Извините, если этот вопрос слишком элементарный. Я пытаюсь сортировать репликацию соответствующего учебника игры
http://msdn.microsoft.com/en-us/library/dd553234.aspx
Но я использую настраиваемые кнопки (названные карты), чтобы показывать изображения. Карта имеет два изображения (назад, спереди). Назад идентична для всех карт, "фронт" - это изображение случайно назначенного изображения. Настройка изображения на задний план скрывает случайное изображение, и перед ним открывается его. Если два последовательных щелчка имеют одинаковый вид изображения (совпадение), я хочу, чтобы событие клика закончилось без запуска таймера, но кажется, что таймер запускается в любом случае. Вот код в кнопке Click event. Я попытался использовать firstClicked.front вместо firstClicked.Image в if(), но ничего не работает. благодаря
private void card_Click(object sender, EventArgs e)
{
if (timer1.Enabled == true)
return;
Card clickedCard = sender as Card;
if (clickedCard != null)
{
if (clickedCard.Image == clickedCard.front) //ingore Clicks on already revealed cared
return;
if (firstClicked == null)
{
firstClicked = clickedCard;
firstClicked.Image = firstClicked.front;
return;
}
//Clicked card is second card
secondClicked = clickedCard;
secondClicked.Image = secondClicked.front;
if (firstClicked.Image == secondClicked.Image)
{
firstClicked = null;
secondClicked = null;
return;
}
timer1.Start();
}
}
@Адриан. Как вы сказали, я понимаю, что сравниваю объекты, а не изображения. Я включил идентификатор в кнопки, чтобы два изображения с похожим изображением имели одинаковые идентификаторы. Затем вместо сравнения изображений я использовал id и решил его.
Мое предположение заключается в том, что clickedCard.Image
имеет тип System.Drawing.Image
в этом случае сравнение изображений с помощью clickedCard.Image == clickedCard.front
просто не работает. Это связано с тем, что эта операция не будет фактически сравнивать содержимое изображений, а вместо них объекты, которые их представляют. В С# существуют различные способы сравнения объекта, о котором вы можете прочитать больше в этой статье, в котором объясняется сравнение объектов более подробно, чем то, что делает учебник, который вы используете.
Сравнение двух изображений на самом деле немного сложное и может быть дорого рассчитано, если вы сделаете это неправильно. Вот почему соответствующий учебник по игре сравнивает строковые значения вместо изображений, поскольку он проще и дешевле вычислять. Поскольку вы довольно новичок в программировании, я бы, вероятно, придерживался метода учебника, пока вы не достигли более продвинутого уровня.
Edit: Я просто хотел уточнить, что я имел в виду под моим последним предложением. Экспериментирование - это хорошо, так как это отличный способ познания новых вещей. Однако вы пытаетесь сделать это, вероятно, потребуете изучения некоторых промежуточных шагов, прежде чем пытаться решить проблему.