Advertisement
Guest User

Untitled

a guest
Oct 6th, 2015
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <iomanip>
  3.  
  4. const int ROWS = 22;
  5. const int COLS = 42;
  6. const int GAME_ROWS(20);
  7. const int GAME_COLS(40);
  8. const char LIVE = 'X'; // Living Cells
  9. const char DEAD = '.'; // Dead cells
  10.  
  11. char NewBoard[ROWS][COLS];
  12. char board[ROWS][COLS];
  13.  
  14. void LifeBoard(char board[][COLS]);
  15. void copy(char board[][COLS]);
  16. void NextStage(char board[][COLS]);
  17.  
  18. void fillBlinker(int startRow, int startCol);
  19. void fillGlider(int startRow, int startCol);
  20. void fillCannon(int startRow, int startCol);
  21.  
  22. int main () {
  23.  
  24. int startRow;
  25. int startCol;
  26. int shape;
  27.  
  28. std::cout << "This is Conway's Game of Life! " << std::endl;
  29. std::cout << "Please enter your starting row (1-20): " << std::endl;
  30. std::cin >> startRow;
  31. std::cout << "Please Enter your starting column (1-40): " << std::endl;
  32. std::cin >> startCol;
  33.  
  34. std::cout << "Please select your starting shape." << std::endl;
  35. std::cout << "Enter 1 for Blinker." << std::endl;
  36. std::cout << "Enter 2 for Glider." << std::endl;
  37. std::cout << "Enter 3 for Cannon." << std::endl;
  38. std::cin >> shape;
  39.  
  40.  
  41. if(shape == 1)
  42. {
  43. fillBlinker(startRow, startCol);
  44. }
  45. if(shape == 2)
  46. {
  47. fillGlider(startRow, startCol);
  48. }
  49. if(shape == 3)
  50. {
  51. fillCannon(startRow, startCol);
  52. }
  53. do {
  54. NextStage(board);
  55. LifeBoard(board);
  56. usleep(250000);
  57. } while (true);
  58.  
  59.  
  60. return 0;
  61. }
  62.  
  63. void LifeBoard(char board[][COLS])
  64. {
  65. for(int i = 1; i <= ROWS-2; i++)
  66. {
  67. for(int j=1; j <= COLS-2; j++)
  68. {
  69. if(board[i][j] == LIVE)
  70. {
  71. std::cout << 'X';
  72. }
  73. else
  74. {
  75. std::cout << '.';
  76. }
  77. //board[i][j] = DEAD;
  78. //std::cout << board[i][j];
  79. }
  80. std::cout << std::endl;
  81. }
  82. //std::cout << std::endl;
  83. }
  84.  
  85. void NextStage(char board[][COLS])
  86. {
  87. for(int i = 0; i < ROWS; i++)
  88. {
  89. for(int j =0; j < COLS; j++)
  90. {
  91. int total = 0;
  92.  
  93. if(board[i][j+1] == LIVE)
  94. { total++; }
  95. if(board[i+1][j+1] == LIVE)
  96. { total++; }
  97. if(board[i+1][j] == LIVE)
  98. { total++; }
  99. if(board[i+1][j-1] == LIVE)
  100. { total++; }
  101. if(board[i][j-1] == LIVE)
  102. { total++;}
  103. if(board[i-1][j-1] == LIVE)
  104. { total++; }
  105. if(board[i-1][j] == LIVE)
  106. { total++; }
  107. if(board[i-1][j+1] == LIVE)
  108. { total++; }
  109.  
  110. NewBoard[i][j] = DEAD;
  111.  
  112. if(board[i][j] == LIVE && total < 2) // rule 1
  113. { NewBoard[i][j] = DEAD; }
  114. else if(board[i][j] == LIVE && (total==2 || total == 3)) // rule 2
  115. { NewBoard[i][j] = LIVE; }
  116. else if(board[i][j] == LIVE && total > 3) // rule 3
  117. { NewBoard[i][j] == DEAD; }
  118. else if(board[i][j] == DEAD && total == 3) // rule 4
  119. { NewBoard[i][j] = LIVE; }
  120. }
  121. }
  122.  
  123. for (int i = 0; i < ROWS; i++)
  124. {
  125. for(int j = 0; j < COLS; j++)
  126. {
  127. board[i][j] = NewBoard[i][j];
  128. }
  129. }
  130. }
  131.  
  132. void fillBlinker(int rows, int cols)
  133. {
  134. board[rows][cols] = LIVE;
  135. board[rows][cols+1] = LIVE;
  136. board[rows][cols+2] = LIVE;
  137. }
  138.  
  139. void fillGlider(int rows, int cols)
  140. {
  141. board[rows][cols] = LIVE;
  142. board[rows+1][cols] = LIVE;
  143. board[rows][cols+1] = LIVE;
  144. board[rows+3][cols+2] = LIVE;
  145. board[rows+2][cols+3] = LIVE;
  146. board[rows+3][cols+3] = LIVE;
  147. }
  148.  
  149. void fillCannon(int rows, int cols)
  150. {
  151.  
  152. board[rows][cols] = LIVE;
  153. board[rows+1][cols] = LIVE;
  154. board[rows+1][cols-2]= LIVE;
  155. board[rows+5][cols]= LIVE;
  156. board[rows+6][cols] = LIVE;
  157. board[rows+2][cols-3] = LIVE;
  158. board[rows+2][cols-4] = LIVE;
  159. board[rows+3][cols-4] = LIVE;
  160. board[rows+3][cols-3] = LIVE;
  161. board[rows+4][cols-3] = LIVE;
  162. board[rows+4][cols-4] = LIVE;
  163. board[rows+5][cols-2] = LIVE;
  164. board[rows+2][cols+10] = LIVE;
  165. board[rows+3][cols+10] = LIVE;
  166. board[rows+2][cols+11] = LIVE;
  167. board[rows+3][cols+11] = LIVE;
  168. board[rows+5][cols-7] = LIVE;
  169. board[rows+4][cols-8] = LIVE;
  170. board[rows+5][cols-8] = LIVE;
  171. board[rows+6][cols-8] = LIVE;
  172. board[rows+3][cols-9] = LIVE;
  173. board[rows+7][cols-9] = LIVE;
  174. board[rows+5][cols-10] = LIVE;
  175. board[rows+2][cols-11] = LIVE;
  176. board[rows+8][cols-11] = LIVE;
  177. board[rows+2][cols-12] = LIVE;
  178. board[rows+8][cols-12] = LIVE;
  179. board[rows+3][cols-13] = LIVE;
  180. board[rows+7][cols-13] = LIVE;
  181. board[rows+4][cols-14] = LIVE;
  182. board[rows+5][cols-14] = LIVE;
  183. board[rows+6][cols-14] = LIVE;
  184. board[rows+4][cols-23] = LIVE;
  185. board[rows+5][cols-23] = LIVE;
  186. board[rows+4][cols-24] = LIVE;
  187. board[rows+5][cols-24] = LIVE;
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement