Глава 2. Практическая часть
Словесное описание алгоритма 1. Ввод переменной MenuChoice, которая отвечает за выбор пунктов в меню. 2. Если MenuChoice = 1, то запускается алгоритм "Игрок против компьютера": 3. Пока переменная win(Эта переменная отвечает за победу, когда выполнится условие победы - мы присвоим win true) не равна true: 4. Если Player1Turn(Эта переменная отвечает за ход первого игрока, если она true, то ходит первый игрок, если она false, то второй игрок или компьютер) = true: 5. Ввод переменной turn, она отвечает за количество спичек, которые берутся за ход. 6. Пока turn < 1 или turn > 10 - вводим turn (Это условие хода игроков, игроки могут за ход брать от 1 до 10 спичек) 7. ost = ost - turn (ost - количество спичек, которое осталось) 8. Player1Turn = false (Конец хода игрока, передаем ход компьютеру) 9. Если Player1Turn = false(Ход компьютера) 10. turn = {Случайное число от 1 до 10} (Переменной turn присваиваем случайное число от 1 до 10) 11. Если ost > 12 и ost < 23: turn ost - 12 (Если игра пришла к отрезку спичек от 12 до 23, и в это время ход компьютера, то он сведет игру к 12 спичкам, т.к. как бы игрок не походил - след. ходом выигрывает компьютер) 12. Если ost < 12: turn = ost - 1 (При спичках от 1 до 12, не включая 12 - компьютер будет брать так, чтобы на след. ход игроку осталась 1 спичка (чтобы игрок проиграл)) 13. Если ost = 1: turn = 1 (Если игрок свел игру к 1 спичке, то компьютер будет брать последнюю спичку) 14. ost = ost - turn 15. Player1Turn = true (Передаем ход игроку) 16. Если ost < 1: 17. Если Player1Turn = false - победил комиьютер 18. Если Player1Turn = true - победил игрок 19. win = true (Выполнилось условие победы, кто то из игроков забрал последнюю спичку и осталось меньше 1 - выходим из цикла и возвращаемся в меню) 20. Если MenuChoice = 2, то запускается алгоритм "Игрок против игрока": 21. Пока переменная win не равна true: 22. Если Player1Turn = true: 23. Ввод переменной turn 24. Пока turn < 1 или turn > 10 - вводим turn 25. ost = ost - turn 26. Player1Turn = false 27. Если Player1Turn = false: 28. Ввод переменной turn 29. Пока turn < 1 или turn > 10 - вводим turn 30. ost = ost - turn 31. Player1Turn = true 32. Если ost < 1: 33. Если Player1Turn = false - победил второй игрок 34. Если Player1Turn = true - победил первый игрок 35. win = true 36. Если MenuChoice = 3, то выходим из программы.
Графическое описание алгоритма(блок-схема)
Листинг программы 1. #include <iostream> 2. #include <string> 3. #include <ctime> 4. 5. using namespace std; 6. 7. int main() 8. { 9. setlocale(LC_ALL, "Russian"); 10. 11. string MenuChoiceString; 12. int MenuChoice; 13. 14. int ost = 100; 15. bool win = false; 16. bool Player1 = false; 17. bool Player1Turn = true; 18. int turn; 19. string turnString; 20. 21. cout << "Меню:\n1) Игрок против компьютера\n2) Игрок против игрока\n3) Выход\n>"; 22. cin >> MenuChoiceString; 23. 24. while (true) 25. { 26. try 27. { 28. MenuChoice = stoi(MenuChoiceString); 29. break; 30. } 31. catch (const invalid_argument e) 32. { 33. cout << "Ошибка! Введено не число!\nВведите число: "; 34. cin >> MenuChoiceString; 35. } 36. } 37. 38. switch (MenuChoice) 39. { 40. case 1: 41. while (win != true) 42. { 43. if (Player1Turn == true) 44. { 45. cout << "Осталось " << ost << " спичек.\nХодит игрок.\n>"; 46. 47. cin >> turnString; 48. 49. while (true) 50. { 51. try 52. { 53. turn = stoi(turnString); 54. break; 55. } 56. catch (const invalid_argument e) 57. { 58. cout << "Ошибка! Введено не число!\nВведите число: "; 59. cin >> turnString; 60. } 61. } 62. 63. while (turn < 1 || turn > 10) 64. { 65. cout << "Вы не можете взять меньше 1 спички или больше 10.\nПовторите ввод: "; 66. cin >> turnString; 67. while (true) 68. { 69. try 70. { 71. turn = stoi(turnString); 72. break; 73. } 74. catch (const invalid_argument e) 75. { 76. cout << "Ошибка! Введено не число!\nВведите число: "; 77. cin >> turnString; 78. } 79. } 80. } 81. 82. ost -= turn; 83. Player1Turn = false; 84. } 85. else 86. { 87. cout << "Осталось " << ost << " спичек.\nХодит компьютер.\n>"; 88. 89. turn = rand() % 10 + 1; 90. 91. if (ost > 12 && ost < 23) 92. { 93. turn = ost - 12; 94. } 95. 96. if (ost < 12) 97. { 98. turn = ost - 1; 99. } 100. 101. if (ost == 1) 102. { 103. turn = 1; 104. } 105. 106. cout << turn << endl; 107. 108. ost -= turn; 109. Player1Turn = true; 110. } 111. 112. if (ost < 1) 113. { 114. if (Player1Turn == false) 115. { 116. cout << "Компьютер победил!\n"; 117. } 118. else 119. { 120. cout << "Игрок победил!\n"; 121. } 122. win = true; 123. } 124. } 125. main(); 126. break; 127. case 2: 128. while (win != true) 129. { 130. if (Player1Turn == true) 131. { 132. cout << "Осталось " << ost << " спичек.\nХодит первый игрок.\n>"; 133. 134. cin >> turnString; 135. 136. while (true) 137. { 138. try 139. { 140. turn = stoi(turnString); 141. break; 142. } 143. catch (const invalid_argument e) 144. { 145. cout << "Ошибка! Введено не число!\nВведите число: "; 146. cin >> turnString; 147. } 148. } 149. 150. while (turn < 1 || turn > 10) 151. { 152. cout << "Вы не можете взять меньше 1 спички или больше 10.\nПовторите ввод: "; 153. cin >> turnString; 154. while (true) 155. { 156. try 157. { 158. turn = stoi(turnString); 159. break; 160. } 161. catch (const invalid_argument e) 162. { 163. cout << "Ошибка! Введено не число!\nВведите число: "; 164. cin >> turnString; 165. } 166. } 167. } 168. 169. ost -= turn; 170. Player1Turn = false; 171. } 172. else 173. { 174. cout << "Осталось " << ost << " спичек.\nХодит второй игрок.\n>"; 175. 176. cin >> turnString; 177. 178. while (true) 179. { 180. try 181. { 182. turn = stoi(turnString); 183. break; 184. } 185. catch (const invalid_argument e) 186. { 187. cout << "Ошибка! Введено не число!\nВведите число: "; 188. cin >> turnString; 189. } 190. } 191. 192. while (turn < 1 || turn > 10) 193. { 194. cout << "Вы не можете взять меньше 1 спички или больше 10.\nПовторите ввод: "; 195. cin >> turnString; 196. while (true) 197. { 198. try 199. { 200. turn = stoi(turnString); 201. break; 202. } 203. catch (const invalid_argument e) 204. { 205. cout << "Ошибка! Введено не число!\nВведите число: "; 206. cin >> turnString; 207. } 208. } 209. } 210. 211. ost -= turn; 212. Player1Turn = true; 213. } 214. 215. if (ost < 1) 216. { 217. if (Player1Turn == false) 218. { 219. cout << "Второй игрок победил!\n"; 220. } 221. else 222. { 223. cout << "Первый игрок победил!\n"; 224. } 225. win = true; 226. } 227. } 228. main(); 229. break; 230. case 3: 231. break; 232. default: 233. cout << "Вы ввели неверное число! Повторите ввод\n>"; 234. main(); 235. } 236. }
Популярное: Как построить свою речь (словесное оформление):
При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою... Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация... Почему стероиды повышают давление?: Основных причин три... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (236)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |