Advertisement
Guest User

Untitled

a guest
Oct 17th, 2017
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.40 KB | None | 0 0
  1. #include <iostream>
  2. #include <time.h>
  3. #include <stdlib.h>
  4. using namespace std;
  5.  
  6. struct playerz{
  7. string name;
  8. int position;
  9. int id;
  10. };
  11.  
  12. struct board{
  13. bool occupied;
  14. int pid;
  15. int obstacle;
  16. };
  17.  
  18. int getPlayersCount();
  19. playerz* getPlayersNames(int);
  20. void shuffleDeck(int []);
  21. void getBoard(board*);
  22. void showState(int, playerz*);
  23. void taketurn (int, playerz*, int*, int [], board*, bool*, int);
  24. void switchPlaces(int, playerz*, int);
  25. void play (playerz*, int, int [], board*);
  26.  
  27. int main(){
  28. board* Board= new board[20];
  29. int deck[10] = {1,1,2,2,3,3,4,4,0,-1};
  30. int numPlayers = getPlayersCount();
  31. playerz* players = getPlayersNames(numPlayers);
  32.  
  33. shuffleDeck(deck);
  34. getBoard(Board);
  35. play (players, numPlayers, deck, Board);
  36. delete[] players;
  37. delete[] Board;
  38. return 0;
  39. }
  40.  
  41. int getPlayersCount(){
  42. int num;
  43.  
  44. cout << "How many are playing?" << endl;
  45. cin >> num;
  46. return num;
  47. }
  48.  
  49. playerz* getPlayersNames(int num){
  50. playerz* players = new playerz[num];
  51.  
  52. for (int i=0;i<num;i++){
  53. cout << "enter player " << i+1 << "'s name" << endl;
  54. cin >> players[i].name;
  55. players[i].position=0;
  56. players[i].id=i;
  57. }
  58. return players;
  59. }
  60.  
  61. void shuffleDeck(int deck[]){
  62. int temp;
  63. int pos1;
  64. int pos2;
  65.  
  66. srand (time(NULL));
  67. for (int i=0; i<5;i++){
  68. temp=0;
  69. pos1= rand() % 10;
  70. pos2= rand() % 10;
  71. temp=deck[pos1];
  72. deck[pos1]=deck[pos2];
  73. deck[pos2]=temp;
  74. }
  75. return;
  76. }
  77.  
  78. void getBoard(board* Board){
  79. for (int i=0;i<20;i++){
  80. Board[i].obstacle=0;
  81. Board[i].occupied=false;
  82. }
  83. Board[3].obstacle=1;
  84. Board[8].obstacle=1;
  85. Board[12].obstacle=2;
  86. Board[14].obstacle=2;
  87. Board[17].obstacle=2;
  88. Board[18].obstacle=3;
  89. }
  90.  
  91.  
  92. void showState(int numPlayers, playerz* players){
  93. for (int i=0;i<numPlayers;i++){
  94. cout << players[i].name << " has id " << players[i].id << " and is in position " << players[i].position << endl;
  95. }
  96. return;
  97. }
  98.  
  99. void switchPlaces(int player, playerz* players, int numPlayers){
  100. int temp;
  101. int switchy;
  102.  
  103. cout << "Switching " << players[player].name << endl;
  104. if (player==0)
  105. showState (numPlayers-1, players+1);
  106. else
  107. {
  108. showState (player, players);
  109. showState (numPlayers-(player+1), players+player+1);
  110. }
  111. cout << "Which player id to switch with?" << endl;
  112. cin >> switchy;
  113. cout << "Switching " << players[player].name << " and " << players[switchy].name << endl;
  114. temp=players[player].position;
  115. players[player].position=players[switchy].position;
  116. players[switchy].position=temp;
  117. cout << players[player].name <<" is now at position " << players[player].position << endl;
  118. cout << players[switchy].name << " is now at position " << players[switchy].position << endl;
  119. return;
  120. }
  121.  
  122.  
  123. void taketurn (int player, playerz* players, int *card, int deck[], board* Board[], bool* gameWon, int numPlayers){
  124. int obstacle;
  125. int oldpos=players[player].position;
  126. int newpos;
  127.  
  128. if (*card == 10) {
  129. *card = 0;
  130. shuffleDeck(deck);
  131. }
  132. if (deck[*card] == -1)
  133. switchPlaces (player, players, numPlayers);
  134. else {
  135. players[player].position += deck[*card];
  136. newpos=players[player].position;
  137. }
  138. Board[newpos]->occupied=true;
  139. Board[newpos]->pid=player;
  140. if (players[player].position >= 19) {
  141. *gameWon = true;
  142. cout << players[player].name << " has won" << endl;
  143. return;
  144. }
  145. obstacle=Board[newpos]->obstacle;
  146. if (obstacle!=0){
  147. players[player].position -= obstacle;
  148. newpos = players[player].position;
  149. cout << "The obstacle moved " << players[player].name << " back " << obstacle << " spaces" << endl;
  150. }
  151. if (Board[newpos]->occupied) {
  152. cout << "Spot was occupied by " << players[Board[newpos]->pid].name << ", switching places" << endl;
  153. players[Board[newpos]->pid].position=oldpos;
  154. Board[oldpos]->pid=Board[newpos]->pid;
  155. }
  156. else {
  157. cout << players[player].name << " drew " << deck[*card] << " and is now in position " << players[player].position << endl;
  158. Board[oldpos]->occupied=false;
  159. }
  160. Board[newpos]->occupied=true;
  161. Board[newpos]->pid=player;
  162. (*card)++;
  163. return;
  164. }
  165.  
  166. void play (playerz* players, int numPlayers, int deck[], board* Board){
  167. int player = 0;
  168. int card = 0;
  169. int i=0;
  170. bool gameWon = false;
  171.  
  172. cout << endl << endl;
  173. showState(numPlayers,players);
  174. while (!gameWon){
  175. cout << endl;
  176. if (i==numPlayers){
  177. i=0;
  178. showState(numPlayers, players);
  179. cout << endl;
  180. }
  181. taketurn (i, players, &card, deck, Board, &gameWon, numPlayers);
  182. i++;
  183.  
  184. }
  185. return;
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement