Я разрабатываю небольшую игру с использованием оконных форм, в которых есть 5 ярлыков, каждый набор которых похож на изображение кости (1 - 6) от указанного имиджа. Игра сделана «свернутой» 3 раза, в конце броска вы можете выбрать ярлыки НЕ, чтобы их свернули, изменив их цвет фона. В конце каждого рулона рассчитывается и отображается сумма матричных граней.Imagelist всегда возвращает -1
Теперь проблема ...
Я знаю, что мои метки могут достигнуть ImageList как «отбрасывания» функции костей работает очень хорошо. Каждая метка задается для запуска через событие таймера, которое будет происходить 10 раз, в котором случайные изображения выбираются из imagelist, создавая иллюзию прокатки костей. Однако, когда я хочу ДОБАВИТЬ общее количество матриц в конце цикла прокатки с использованием индекса имиджа, каждый индекс возвращает -1. Обратите внимание, что индекс каждой соответствующей матрицы меньше, чем размер матрицы. Точно так же, если у вас есть копия, похожая на одну, индекс будет равен нулю. Я учитываю это, добавляя 1 к индексу. Итак ... хотя у меня может быть 5,5,6,4,3 - мой счетчик счетчиков равен 0, а не 23. 23.
Почему индекс imgaelist дает значение -1, когда самый низкий доступ индекс равен 0?
Вот мой код. Фактический расчет суммы грани штампа производится в инструкции else. Я установил m_iScore (счетчик счетчика) на ноль перед оценкой суммы, потому что я хочу, чтобы сумма была репрезентативной для граней после КАЖДОГО рулона.
private void timer1_Tick(object sender, EventArgs e)
{
Label[] labelArray = new Label[] { label1, label2, label3, label4, label5 };
Random randnum = new Random();
if (m_iAnimations < 10)
{
for (int iCount = 0; iCount < labelArray.Length; iCount++)
{
if ((labelArray[iCount]).BackColor == Color.Lime)
{
(labelArray[iCount]).Image = imageList1.Images[randnum.Next(0, 6)];
}
}
m_iAnimations++;
}
else
{
timer1.Enabled = false;
m_iAnimations = 0;
m_iScore = 0;
for (int iCount = 0; iCount < labelArray.Length; iCount++)
{
m_iScore = m_iScore + ((labelArray[iCount]).ImageIndex + 1);
}
scoreval.Text = m_iScore.ToString();
}
}
Если я не добавлю 1 к индексу изображения, scoreval.Text показывает -5.