Файл: Методические указания по курсовому и дипломному проектированиюдля студентов специальности 200800 Проектирование и технология рэс.rtf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.11.2023

Просмотров: 111

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
{ index = 6; if (znak == 2) btn20.Text = "X"; else if (znak == 1) btn20.Text = "O"; btn20.Enabled = false; mozg(); } private void btn21_Click(object sender, EventArgs e) { index = 7; if (znak == 2) btn21.Text = "X"; else if (znak == 1) btn21.Text = "O"; btn21.Enabled = false; mozg(); } private void btn22_Click(object sender, EventArgs e) { index = 8; if (znak == 2) btn22.Text = "X"; else if (znak == 1) btn22.Text = "O"; btn22.Enabled = false; mozg(); }//Метод «мозга» игры:mozg() { bool znakNull =false, znakKrest = false; if (first) { pole[index] = znak; proverka(); } first = true; if (Enable) { int temp = 0, indexNull = 0; bool zero = false, flag = true;////////////////////////////////// Два знака компьютера в ряду if (flag){ for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i + 3 * k] == znakPC) temp++; if (pole[i + 3 * k] == 0) { zero = true; indexNull = i + 3 * k; } } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 3 + k] == znakPC) temp++; if (pole[i * 3 + k] == 0) { zero = true; indexNull = i * 3 + k; } } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 4] == znakPC) temp++; if (pole[i * 4] == 0) { zero = true; indexNull = i * 4; } } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[(i + 1) * 2] == znakPC) temp++; if (pole[(i + 1) * 2] == 0) { zero = true; indexNull = (i + 1) * 2; } } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; }} ///////////////////////////////////////////////Два знака пользователя в ряду if (flag){ for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i + 3 * k] == znak) temp++; if (pole[i + 3 * k] == 0) { zero = true; indexNull = i + 3 * k; }
} if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 3 + k] == znak) temp++; if (pole[i * 3 + k] == 0) { zero = true; indexNull = i * 3 + k; } } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 4] == znak) temp++; if (pole[i * 4] == 0) { zero = true; indexNull = i * 4; } } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[(i + 1) * 2] == znak) temp++; if (pole[(i + 1) * 2] == 0) { zero = true; indexNull = (i + 1) * 2; } } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; }} //////////////////////////////////////////////Один знак компьютера в ряду и две пустые клеткиif (flag) { for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i + 3 * k] == 0) { temp++; indexNull = i + 3 * k; } if (pole[i + 3 * k] == znakPC) zero = true; } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 3 + k] == 0) { temp++; indexNull = i * 3 + k; } if (pole[i * 3 + k] == znakPC) zero = true; } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 4] == 0) { temp++; indexNull = i * 4; } if (pole[i * 4] == znakPC) zero = true; } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[(i + 1) * 2] == 0) { temp++; indexNull = (i + 1) * 2; } if (pole[(i + 1) * 2] == znakPC) zero = true; } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; }} //////////////////////////////////////////////////Один знак пользователя и две пустые клеткиif (flag) { for (int k = 0; k < 3; k++)

{ zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i + 3 * k] == 0) { temp++; indexNull = i + 3 * k; } if (pole[i + 3 * k] == znak) zero = true; } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 3 + k] == 0) { temp++; indexNull = i * 3 + k; } if (pole[i * 3 + k] == znak) zero = true; } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 4] == 0) { temp++; indexNull = i * 4; } if (pole[i * 4] == znak) zero = true; } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[(i + 1) * 2] == 0) { temp++; indexNull = (i + 1) * 2; } if (pole[(i + 1) * 2] == znak) zero = true; } if (temp == 2 && zero && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } /////////////////////////////////////////////////////////////////////////Пустые 3 клетки if (flag) { for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i + 3 * k] == 0) { temp++; indexNull = i + 3 * k; } } if (temp == 3 && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { for (int k = 0; k < 3; k++) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 3 + k] == 0) { temp++; indexNull = i * 3 + k; } } if (temp == 3 && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[i * 4] == 0) { temp++; indexNull = i * 4; } } if (temp == 3 && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } if (flag) { zero = false; temp = 0; for (int i = 0; i < 3; i++) { if (pole[(i + 1) * 2] == 0) { temp++; indexNull = (i + 1) * 2; } } if (temp == 3 && flag) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; }} ////////////////////////////////////////////////////////В ряду есть знак компьютера и пользователяif (flag) { for (int k = 0; k < 3; k++) {
zero = false; znakNull=false; znakKrest=false; for (int i = 0; i < 3; i++) { if (pole[i + 3 * k] == znakPC ) znakNull=true; if (pole[i + 3 * k] == znak) znakKrest = true; if (pole[i + 3 * k] == 0) { zero = true; indexNull = i + 3 * k; } } if ( zero && flag && znakKrest && znakNull) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { for (int k = 0; k < 3; k++) { zero = false; znakNull=false; znakKrest=false; for (int i = 0; i < 3; i++) { if (pole[i * 3 + k] == 0) {zero = true; indexNull = i * 3 + k; } if (pole[i * 3 + k] == znak) znakKrest = true; if (pole[i * 3 + k] == znakPC) znakNull = true; } if ( zero && flag && znakKrest && znakNull) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } if (flag) { zero = false; znakNull=false; znakKrest=false; for (int i = 0; i < 3; i++) { if (pole[i * 4] == 0) {zero = true; indexNull = i * 4; } if (pole[i * 4] == znak) znakKrest = true; if (pole[i * 4] == znakPC) znakNull = true; } if (zero && flag && znakKrest && znakNull) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } if (flag) { zero = false; znakNull=false; znakKrest=false; for (int i = 0; i < 3; i++) { if (pole[(i + 1) * 2] == 0) {zero = true; indexNull = (i + 1) * 2; } if (pole[(i + 1) * 2] == znak) znakKrest = true; if (pole[(i + 1) * 2] == znakPC) znakNull = true; } if ( zero && flag && znakKrest && znakNull) { index = indexNull; pole[index] = znakPC; Updatepole(); flag = false; } } } proverka(); bool nicja =true; for (int i = 0; i < 9; i++) if (pole[i] == 0) nicja = false; if (nicja) { MessageBox.Show(" Ничья! "); Enable = false; Enabledpole(); } }//Методпроверкивыигрыша:void proverka(){(pole[0] == znak && pole[1] == znak && pole[2] == znak && Enable) znak_victory();(pole[3] == znak && pole[4] == znak && pole[5] == znak && Enable) znak_victory();(pole[6] == znak && pole[7] == znak && pole[8] == znak && Enable) znak_victory();(pole[0] == znak && pole[3] == znak && pole[6] == znak && Enable) znak_victory();(pole[1] == znak && pole[4] == znak && pole[7] == znak && Enable) znak_victory();(pole[2] == znak && pole[5] == znak && pole[8] == znak && Enable) znak_victory();(pole[0] == znak && pole[4] == znak && pole[8] == znak && Enable) znak_victory();(pole[2] == znak && pole[4] == znak && pole[6] == znak && Enable) znak_victory();(pole[0] == znakPC && pole[1] == znakPC && pole[2] == znakPC && Enable) znakPC_victory();(pole[3] == znakPC && pole[4] == znakPC && pole[5] == znakPC && Enable) znakPC_victory();(pole[6] == znakPC && pole[7] == znakPC && pole[8] == znakPC && Enable) znakPC_victory();(pole[0] == znakPC && pole[3] == znakPC && pole[6] == znakPC && Enable) znakPC_victory();(pole[1] == znakPC && pole[4] == znakPC && pole[7] == znakPC && Enable) znakPC_victory();(pole[2] == znakPC && pole[5] == znakPC && pole[8] == znakPC && Enable) znakPC_victory();(pole[0] == znakPC && pole[4] == znakPC && pole[8] == znakPC && Enable) znakPC_victory();(pole[2] == znakPC && pole[4] == znakPC && pole[6] == znakPC && Enable) znakPC_victory();
}//Методы вывода сообщения о победителе:void znak_victory(){.Show("Вашавзяла!"); Vuser++; lbUser.Text = Vuser.ToString(); Enable = false;();} znakPC_victory(){.Show("ЯВасобыграл!"); Vpc++; lbPC.Text = Vpc.ToString(); Enable = false;Enabledpole();}}}6 ТЕСТИРОВАНИЕ ПРОГРАММЫРисунок 12. Тестирование возможности выигрыша пользователяигра алгоритм программаРисунок 13. Тестирование возможности ничьиРисунок 14. Тестирование возможности выигрыша компьютераВЫВОДБлагодаря методу оценки эффективности хода была реализована игра «крестики-нолики». Анализ знаков ряда поля проводился с помощью оператора if. Эффективность хода, соответствует очередности выполнения алгоритма оценки соответствующей позиции, согласно представленному в краткой теории алгоритму.Правильность работы программы была проверена в ходе экспериментальных игр с компьютером. В результате чего было отмечено, что при установке двух фишек пользователя в ряду, компьютер закроет опасную для него позицию; при недостатке в ряду одного знака компьютера - выполняется соответствующий ход, что приводит к выигрышу компьютера. Аналогичным образом, верно отрабатываются и прочие пункты алгоритма оценки эффективности хода. Таким образом, написанную мной программу можно считать полностью рабочей, а задание курсовой работы выполненным.Список литературы1 Гурский Д.А., Гурский Ю.А., Flash 8 и ActionScript. Библиотека пользователя (+CD). - СПБ.:Питер, 2006. 528 с.:ил. - (Серия «Библиотека пользователя»).2 Кариев Ч. А. Разработка Windows-приложений на основе Visual C#. - М.: БИНОМ (Лаборатория знаний, Интернет-университет информационных технологий - ИНТУИТ.ру), 2007 Нейгел, Кристиан, Ивьен, Билл, Глинн, Джей, Скиннер, Морган, Уотсон, Карли. C# 2005 и платформа .NET 3.0 для профессионалов. : Пер. с англ. - М. : ООО «И.Д. Вильямс», 2008. - 1376+416 (на