Перевод кода с C++ на C#. Игра с датами

Узнай цену своей работы

Формулировка задачи:

Помогите пожалуйста перевести код с с++ на с# !!!! Программа не сложная, про даты. Стратегия игры: Первый игрок сообщает какую-нибудь дату января. Каждый игрок на своем ходе называет более позднюю дату, увеличивая либо календарную дату в месяце, либо месяц, но не то и другое сразу. Если, например, начальной датой было 8 января, то можно перейти к 8 марта или к 12 января. Можно увеличить меньше: 9 января или 8 февраля; можно перейти сразу к 8 декабря или 31 января. Внимание: если вы переходите к 31 января, то ваш противник сможет в дальнейшем менять только месяцы, и притом лишь месяцы с 31 днем. Первый, кто доберется до 31 декабря, выигрывает. Буду очень благодарна!!! Вот код:
Листинг программы
  1. #include "stdafx.h"
  2. #include <iostream>
  3. #include <conio.h>
  4. using namespace std;
  5. //--------Глобальные переменные
  6. int day = 1; //текущий день
  7. int month = 1; //текущий месяц
  8. int isPlayerWon = 0; // Равно 1, если выиграл игрок
  9. int isCompWon = 0; /*Равно 1, если выиграл компьютер
  10. (нужно для вывода сообщения) */
  11. //-------Объявление вспомогательных функций, их описание внизу программы
  12. void Show(); //функция отображает день и месяц
  13. void whatInc(); //функция позволяет игроку делать ход
  14. void checkMonth(); /*проверяет, не пора ли увеличит месяц, если
  15. если число дней превысило 30, 31 или 28 (в феврале)*/
  16. void compTurn(); //ходит за компьютера
  17. int checkWon(); /* функция проверяет, не достигнуто ли 31 декабря,
  18. если достигнуто, становится равной (возвращат) 1,
  19. если нет - 0 */
  20.  
  21. int main()
  22. {
  23. do
  24. {
  25. cout << "Lets start a game! Please type in the date of January. (1-31)" << endl;
  26. cin >> day;
  27. } while ((day < 1) | (day >31)); /*начинаем игру, игроку надо ввести
  28. число января - от 1 до 31. Если ввести больше или меньше,
  29. то попросят ввести опять */
  30. do /*использум цикл do{ }while с постусловием,
  31. игрок с компьютером ходят, пока один не достигнет 31 декабря*/
  32. {
  33. //так как число выбирал игрок, первым ходит компьютер
  34. Show(); //покажем, какая дата сейчас
  35. compTurn(); //потом компьютер ходит
  36. if (checkWon() == 1) //если он выиграл, то прекращаем цикл do while
  37. {
  38. isCompWon = 1;
  39. break;
  40. }
  41. checkMonth(); //под конец проверим числа месяца
  42. Show(); //теперь ход игрока, почти то же самое
  43. whatInc(); //только другая процедура хода
  44. if (checkWon() == 1)
  45. {
  46. isPlayerWon = 1;
  47. break;
  48. }
  49. checkMonth();
  50. } while (isPlayerWon == 0 && isCompWon == 0); /*цикл работает, пока
  51. один не победит - хотя это излишне, так как
  52. в цикле уже есть условие для выхода - вместо этого
  53. здесь можно бы было сделать возможность выхода до победы*/
  54. Show(); //показать дату 31 декабря
  55. /*назвать победителя*/
  56. if (isPlayerWon == 1) cout << "The Player has won!" << endl;
  57. else cout << "The Computer has won!" << endl;
  58. }
  59. //--------------Вспомогательные функции
  60. void Show() //показывает дату
  61. {
  62. extern int day; /*обращение к глобальным переменным из функции,
  63. надо использовать extern*/
  64. extern int month;
  65. //пишем день, месяц c числового значения заменяем на January, February и т.д.
  66. cout << "----------" << endl;
  67. cout << day << " ";
  68. switch (month) {
  69. case 1: cout << "January" << endl; break;
  70. case 2: cout << "February" << endl; break;
  71. case 3: cout << "March" << endl; break;
  72. case 4: cout << "April" << endl; break;
  73. case 5: cout << "May" << endl; break;
  74. case 6: cout << "June" << endl; break;
  75. case 7: cout << "July" << endl; break;
  76. case 8: cout << "August" << endl; break;
  77. case 9: cout << "September" << endl; break;
  78. case 10: cout << "October" << endl; break;
  79. case 11: cout << "November" << endl; break;
  80. case 12: cout << "December" << endl; break;
  81. }
  82. cout << "----------" << endl;
  83. }
  84. void whatInc() //ход игрока
  85. {
  86. extern int day;
  87. extern int month;
  88. int dom; /*dom - сокращение Day Or Month - будет показыват,
  89. что увеличивать, дни или месяцы*/
  90. if (month == 12) //если уже декабрь, увеличивать можно только дни
  91. {
  92. do
  93. {
  94. cout << "December! You can only increase days(0)" << endl;
  95. cin >> dom;
  96. } while (dom != 0); //пока не выбран дни (0), программа будет спрашивать
  97. }
  98. else //если не декабрь, пусть игрок выбирает
  99. {
  100. cout << "Increase days(0) or months(1)?" << endl;
  101. cin >> dom;
  102. }
  103. if (dom == 0) //если ноль - увеличиваем день, если что-то другле, то месяц
  104. {
  105. day++;
  106. cout << "The Player has increased days" << endl;
  107. }
  108. else
  109. {
  110. month++;
  111. cout << "The Player has increased months" << endl;
  112. }
  113. }
  114. void checkMonth() /*функция, проверяет, не надо ли перейти на новый
  115. месяц, если число уже 30, 31 или 28 (для февраля)*/
  116. {
  117. extern int day;
  118. extern int month;
  119. /*если произошло так, что уже 29 февраля, то делаем первое число
  120. следующего месяца*/
  121. if ((day == 29) && (month == 2)) {
  122. day = 1;
  123. month++; //увеичить на один
  124. }
  125. //для других месяцев также, только с другими условиями
  126. if ((day == 32) && ((month == 1)
  127. | (month == 3)
  128. | (month == 5)
  129. | (month == 7)
  130. | (month == 8)
  131. | (month == 10)
  132. | (month == 12))) {
  133. day = 1;
  134. month++;
  135. }
  136. if ((day == 31) && ((month == 4) |
  137. (month == 6) |
  138. (month == 9) |
  139. (month == 11))) {
  140. day = 1;
  141. month++;
  142. }
  143. }
  144.  
  145. void compTurn() //процедура хода компьютера с использованием функции rand()
  146. {
  147. extern int day;
  148. extern int month;
  149. int dom = 0;
  150. if (month == 12) //если декабрь, то компьютер только дни
  151. {
  152. day++;
  153. cout << "The computer has increased days" << endl;
  154. }
  155. else
  156. {
  157. dom = rand() % 2; //выбор одного из двух - 0 или 1
  158. if (dom == 0)
  159. {
  160. day++;
  161. cout << "The computer has increased days" << endl;
  162. }
  163. else
  164. {
  165. month++;
  166. cout << "The computer has increased months" << endl;
  167. }
  168. }
  169. }
  170.  
  171. int checkWon() //становится равна 1, если уже 31 декабря
  172. {
  173. extern int day;
  174. extern int month;
  175. if ((day == 31) && (month == 12))
  176. return 1;
  177. else
  178. return 0;
  179. }

Решение задачи: «Перевод кода с C++ на C#. Игра с датами»

textual
Листинг программы
  1. class Program
  2.     {
  3.         public static int day = new int(); //текущий день
  4.         public static int month = new int(); //текущий месяц
  5.         public static int isPlayerWon = new int(); // Равно 1, если выиграл игрок
  6.         public static int isCompWon = new int();
  7.        
  8.         static void Show() //показывает дату
  9.         {
  10.             //пишем день, месяц c числового значения заменяем на January, February и т.д.
  11.             Console.WriteLine("----------");
  12.             Console.WriteLine("{0} ", day);
  13.             switch (month)
  14.             {
  15.                 case 1: Console.WriteLine("January"); break;
  16.                 case 2: Console.WriteLine("February"); break;
  17.                 case 3: Console.WriteLine("March"); break;
  18.                 case 4: Console.WriteLine("April"); break;
  19.                 case 5: Console.WriteLine("May"); break;
  20.                 case 6: Console.WriteLine("June"); break;
  21.                 case 7: Console.WriteLine("July"); break;
  22.                 case 8: Console.WriteLine("August"); break;
  23.                 case 9: Console.WriteLine("September"); break;
  24.                 case 10: Console.WriteLine("October"); break;
  25.                 case 11: Console.WriteLine("November"); break;
  26.                 case 12: Console.WriteLine("December"); break;
  27.             }
  28.             Console.WriteLine("----------");
  29.         }
  30.  
  31.         static void whatInc() //ход игрока
  32.         {
  33.             int dom; /*dom - сокращение Day Or Month - будет показыват,
  34.              что увеличивать, дни или месяцы*/
  35.  
  36.             if (month == 12) //если уже декабрь, увеличивать можно только дни
  37.             {
  38.                 do
  39.                 {
  40.                     Console.WriteLine("December! You can only increase days(0)");
  41.                     dom = int.Parse(Console.ReadLine());
  42.                 } while (dom != 0); //пока не выбран дни (0), программа будет спрашивать
  43.             }
  44.             else //если не декабрь, пусть игрок выбирает
  45.             {
  46.                 Console.WriteLine("Increase days(0) or months(1)?");
  47.                 dom = int.Parse(Console.ReadLine());
  48.             }
  49.  
  50.             if (dom == 0) //если ноль - увеличиваем день, если что-то другле, то месяц
  51.             {
  52.                 day++;
  53.                 Console.WriteLine("The Player has increased days");
  54.             }
  55.             else
  56.             {
  57.                 month++;
  58.                 Console.WriteLine("The Player has increased months");
  59.             }
  60.         }
  61.  
  62.         static void checkMonth() /*функция, проверяет, не надо ли перейти на новый
  63.                   месяц, если число уже 30, 31 или 28 (для февраля)*/
  64.         {
  65.  
  66.             /*если произошло так, что уже 29 февраля, то делаем первое число
  67.             следующего месяца*/
  68.             if ((day == 29) && (month == 2))
  69.             {
  70.                 day = 1;
  71.                 month++; //увеичить на один
  72.             }
  73.  
  74.             //для других месяцев также, только с другими условиями
  75.             if ((day == 32) && ((month == 1)
  76.                 | (month == 3)
  77.                 | (month == 5)
  78.                 | (month == 7)
  79.                 | (month == 8)
  80.                 | (month == 10)
  81.                 | (month == 12)))
  82.             {
  83.                 day = 1;
  84.                 month++;
  85.             }
  86.  
  87.             if ((day == 31) && ((month == 4) |
  88.                 (month == 6) |
  89.                 (month == 9) |
  90.                 (month == 11)))
  91.             {
  92.                 day = 1;
  93.                 month++;
  94.             }
  95.         }
  96.  
  97.  
  98.         static void compTurn() //процедура хода компьютера с использованием функции rand()
  99.         {
  100.             int dom = 0;
  101.  
  102.             if (month == 12) //если декабрь, то компьютер только дни
  103.             {
  104.                 day++;
  105.                 Console.WriteLine("The computer has increased days");
  106.             }
  107.             else
  108.             {
  109.                 Random rand = new Random();
  110.                 dom = rand.Next(0, 1); //выбор одного из двух - 0 или 1  
  111.                 if (dom == 0)
  112.                 {
  113.                     day++;
  114.                     Console.WriteLine("The computer has increased days");
  115.                 }
  116.                 else
  117.                 {
  118.                     month++;
  119.                     Console.WriteLine("The computer has increased months");
  120.                 }
  121.             }
  122.         }
  123.  
  124.         static int checkWon() //становится равна 1, если уже 31 декабря
  125.         {
  126.             if ((day == 31) && (month == 12))
  127.                 return 1;
  128.             else
  129.                 return 0;
  130.         }
  131.         static void Main(string[] args)
  132.         {
  133.             day = 1; //текущий день
  134.             month = 1; //текущий месяц
  135.             isPlayerWon = 0; // Равно 1, если выиграл игрок
  136.             isCompWon = 0;
  137.             do
  138.             {
  139.                 Console.WriteLine("Lets start a game! Please type in the date of January. (1-31)");
  140.                 day = int.Parse(Console.ReadLine());
  141.             } while ((day < 1) | (day > 31)); /*начинаем игру, игроку надо ввестичисло января - от 1 до 31. Если ввести больше или меньше, то попросят ввести опять */
  142.  
  143.             do /*использум цикл do{ }while с постусловием,игрок с компьютером ходят, пока один не достигнет 31 декабря*/
  144.             {
  145.                 //так как число выбирал игрок, первым ходит компьютер  
  146.                 Show(); //покажем, какая дата сейчас    
  147.                 compTurn(); //потом компьютер ходит
  148.                 if (checkWon() == 1) //если он выиграл, то прекращаем цикл do while
  149.                 {
  150.                     isCompWon = 1;
  151.                     break;
  152.                 }
  153.                 checkMonth(); //под конец проверим числа месяца
  154.            
  155.                 Show(); //теперь ход игрока, почти то же самое
  156.                 whatInc(); //только другая процедура хода
  157.                 if (checkWon() == 1)
  158.                 {
  159.                     isPlayerWon = 1;
  160.                     break;
  161.                 }
  162.                 checkMonth();
  163.             } while (isPlayerWon == 0 && isCompWon == 0); /*цикл работает, пока
  164.                                               один не победит - хотя это излишне, так как
  165.                                               в цикле уже есть условие для выхода - вместо этого
  166.                                               здесь можно бы было сделать возможность выхода до победы*/
  167.  
  168.             Show(); //показать дату 31 декабря
  169.                     /*назвать победителя*/
  170.             if (isPlayerWon == 1) Console.WriteLine("The Player has won!");
  171.             else Console.WriteLine("The Computer has won!");
  172.  
  173.             Console.ReadLine();
  174.         }
  175.     }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.083 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут