Мегаобучалка Главная | О нас | Обратная связь


Глава 2. Практическая часть



2020-03-19 236 Обсуждений (0)
Глава 2. Практическая часть 0.00 из 5.00 0 оценок




Словесное описание алгоритма

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. }




2020-03-19 236 Обсуждений (0)
Глава 2. Практическая часть 0.00 из 5.00 0 оценок









Обсуждение в статье: Глава 2. Практическая часть

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как построить свою речь (словесное оформление): При подготовке публичного выступления перед оратором возникает вопрос, как лучше словесно оформить свою...
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Как выбрать специалиста по управлению гостиницей: Понятно, что управление гостиницей невозможно без специальных знаний. Соответственно, важна квалификация...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (236)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)