Guest User

Untitled

a guest
Feb 26th, 2015
251
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.37 KB | None | 0 0
  1. *
  2. #include <iostream>
  3. #include "RandomNumber.h"
  4. #include "console.h"
  5.  
  6. using namespace std;
  7.  
  8. class creature{
  9. public:
  10. creature() { energy = 5; }
  11. int getenergy() { return energy; }
  12. void setenergy(int e) { energy = e; }
  13. void incenergy() { energy++; }
  14. void decenergy() { energy--; }
  15. private:
  16. int energy;
  17. };
  18.  
  19. int food_grid[30][30]; //[x][y]
  20. creature* creature_grid[30][30]; //[x][y]
  21. Console c;
  22. RandomNumber r;
  23.  
  24. void Init();
  25. void DropFood();
  26. void Logic();
  27. void display();
  28. bool isGameOver();
  29.  
  30. int main()
  31. {
  32. Init();
  33. while (!isGameOver())
  34. {
  35. DropFood();
  36. display();
  37. Sleep(1000);
  38. Logic();
  39. display();
  40. Sleep(1000);
  41. }
  42. return 0;
  43. }
  44. void Logic()
  45. {
  46. // Dead creatures by food
  47. for (int y = 0; y < 30; y++)
  48. for (int x = 0; x < 30; x++)
  49. if (food_grid[x][y] != 0 && creature_grid[x][y] != NULL)
  50. {
  51. delete creature_grid[x][y];
  52. creature_grid[x][y] = NULL;
  53. }
  54. //Food Eating
  55. for (int y = 0; y < 30; y++)
  56. for (int x = 0; x < 30; x++)
  57. {
  58. if (creature_grid[x][y] != NULL)
  59. {
  60. bool found_food = false;
  61. //Check if food is around
  62. for (int y2 = 0; y2 < 30; y2++)
  63. for (int x2 = 0; x2 < 30; x2++)
  64. {
  65. if (food_grid[x2][y2]!=0)
  66. if ((y - y2<=5 && y - y2 >=0) || y2 - y>=0 && y2 - y<=5)
  67. if ((x - x2<=5 && x - x2 >=0) || x2 - x>=0 && x2 - x<=5)
  68. {
  69. food_grid[x2][y2] = 0;
  70. creature_grid[x][y]->incenergy();
  71. found_food = true;
  72. }
  73. }
  74. if (found_food == false)
  75. creature_grid[x][y]->decenergy();
  76. //If not - decrease energy
  77. }
  78. }
  79. //Remove dead creatures
  80. for (int y = 0; y < 30; y++)
  81. for (int x = 0; x < 30; x++)
  82. {
  83. if (creature_grid[x][y] != NULL && creature_grid[x][y]->getenergy() > 9)
  84. creature_grid[x][y]->setenergy(9);
  85. if (creature_grid[x][y] != NULL && creature_grid[x][y]->getenergy() <= 0)
  86. {
  87. delete creature_grid[x][y];
  88. creature_grid[x][y] = NULL;
  89. }
  90. }
  91. //Remove Food
  92. ZeroMemory(food_grid,sizeof(int)*30*30);
  93. }
  94. bool isGameOver()
  95. {
  96. for (int y = 0; y < 30; y++)
  97. {
  98. for (int x = 0; x < 30; x++)
  99. {
  100. if (creature_grid[x][y] != 0)
  101. return false;
  102. }
  103. }
  104. return true;
  105. }
  106. void Init()
  107. {
  108. int randomx, randomy;
  109. r.initialiseSeed();
  110. for (int i = 0; i < 5; i++)
  111. {
  112. randomx = r.random(0, 29);
  113. randomy = r.random(0, 29);
  114. if (creature_grid[randomx][randomy] == NULL)
  115. creature_grid[randomx][randomy] = new creature();
  116. else
  117. i--;
  118. }
  119. }
  120. void DropFood()
  121. {
  122. int randomx, randomy;
  123. for (int i = 0; i < 5; i++)
  124. {
  125. randomx = r.random(0, 29);
  126. randomy = r.random(0, 29);
  127. if (food_grid[randomx][randomy] == 0)
  128. food_grid[randomx][randomy] = 1;
  129. else
  130. i--;
  131. }
  132. }
  133. void display()
  134. {
  135. c.clear();
  136. c.gotoXY(0, 0);
  137. c.setColour(c.BLACK, c.BLACK);
  138. for (int y = 0; y < 30; y++)
  139. {
  140. for (int x = 0; x < 30; x++)
  141. {
  142. if (creature_grid[x][y] == NULL && food_grid[x][y] == 0)
  143. cout << ".";
  144. else if (food_grid[x][y] == 0)
  145. {
  146. if (creature_grid[x][y]->getenergy()<3)
  147. c.setColour(c.WHITE, c.RED);
  148. else if (creature_grid[x][y]->getenergy()<6)
  149. c.setColour(c.WHITE, c.YELLOW);
  150. else
  151. c.setColour(c.WHITE, c.GREEN);
  152. cout << creature_grid[x][y]->getenergy();
  153. c.setColour(c.BLACK, c.BLACK);
  154. }
  155. else
  156. {
  157. c.setColour(c.WHITE, c.PURPLE);
  158. cout << "o";
  159. c.setColour(c.BLACK, c.BLACK);
  160. }
  161. }
  162. cout << endl;
  163. }
  164. }
Advertisement
Add Comment
Please, Sign In to add comment