Программа-игра "Ним"
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
ь подберет какой-либо камешек, например, из 3-ей строки и захочет взять затем новый объект из какой-либо другой - программа сразу определит и пресечет это нарушение.
.Так же в игре использовалась проверка правильности передачи хода. За эту функцию отвечает метод ЦАКП.indexator().
// -
bool CGame:indexator (TPanel *Gamer1, TPanel *Gamer2)
{
if (index == 0) {
MessageBox (NULL, Вы должны взять хотя бы один шарик!,
Внимание!, MB_ICONWARNING);= 0;0;
}{= 0;(gamer) {= false;
// -ход второго игрока->Color = clMoneyGreen;->Color = clSkyBlue;
}{= true;
// -ход первого игрока->Color = clSkyBlue;->Color = clMoneyGreen;
}
return 1;
}
}
Если бы функция не передала верно ход, алгоритм программы был бы нарушен и дальнейшее нормальное функционирование невозможно.
.Дополнительные проверки внедрялись и в функции.win(), фиксирующей победителя.
// -CGame:win (TPanel *Gamer1, TPanel *Gamer2)
{(list1 [0] == true && list1 [1] == true && list1 [2] == true &&[0] == true && list2 [1] == true &&[0] == true) {->Color = clSkyBlue;->Color = clSkyBlue;(gamer) {(NULL, Игрок №1 одерживает победу.,
Игра завершена., MB_ICONINFORMATION);
}{(Gamer2->Caption == Comp. 1.1)(NULL, Comp. 1.1 одерживает победу.,
Игра завершена., MB_ICONINFORMATION);MessageBox (NULL, Игрок №2 одерживает победу.,
Игра завершена., MB_ICONINFORMATION);
}true;
}false;
}
.Для того, чтобы погасить внутренний конфликт программы, навязанный особенностью архитектуры кода, использовалось дополнительное вложение в функцию-метод.compClick().
if (list1 [0] == true && list1 [1] == true && list1 [2] == true &&[0] == true && list2 [1] == true &&[0] == true) {(gamer) gamer = false;gamer = true;
}
При подобной перестановке значений переменной, отвечающей за передачу хода, программа совершенно адекватно определяет победителя, вне зависимости от режима игры и первого хода.
.Также, для того, чтобы исключить сбои программы, замеченные на предварительном тестировании, пришлось использовать специальные средства: метод-заглушку и активный деструктор ЦАКП.
// -CGame:obj (TShape *Shape1, TShape *Shape2,*Shape3, TShape *Shape4,*Shape5, TShape *Shape6,*Button1, TRadioButton *RadioButton1,*RadioButton2, TRadioButton *RadioButton3,*RadioButton4)
{((RadioButton1->Checked == false && RadioButton2->Checked == false)
||(RadioButton3->Checked == false && RadioButton4->Checked == false)) {->Enabled = false;->Enabled = false;->Enabled = false;->Enabled = false;->Enabled = false;->Enabled = false;->Enabled = false;
}{->Enabled = true;->Enabled = true;->Enabled = true;->Enabled = true;->Enabled = true;->Enabled = true;->Enabled = true;
}
}
Метод-заглушка обеспечивает неприкосновенность игровых манипуляторов управления во время игры и кнопки хода в момент настройки игры.
Все протестированные функции работают корректно при условии наличия вышеобозначенных изменений в структуре соответсвующего блока кода. Тестирование дало положительный результат.
Copyright © 2008-2014 geum.ru рубрикатор по предметам рубрикатор по типам работ пользовательское соглашение