Программа-игра "Ним"

Дипломная работа - Компьютеры, программирование

Другие дипломы по предмету Компьютеры, программирование



ь подберет какой-либо камешек, например, из 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   рубрикатор по предметам  рубрикатор по типам работ  пользовательское соглашение