Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- *
- #include <iostream>
- #include "RandomNumber.h"
- #include "console.h"
- using namespace std;
- class creature{
- public:
- creature() { energy = 5; }
- int getenergy() { return energy; }
- void setenergy(int e) { energy = e; }
- void incenergy() { energy++; }
- void decenergy() { energy--; }
- private:
- int energy;
- };
- int food_grid[30][30]; //[x][y]
- creature* creature_grid[30][30]; //[x][y]
- Console c;
- RandomNumber r;
- void Init();
- void DropFood();
- void Logic();
- void display();
- bool isGameOver();
- int main()
- {
- Init();
- while (!isGameOver())
- {
- DropFood();
- display();
- Sleep(1000);
- Logic();
- display();
- Sleep(1000);
- }
- return 0;
- }
- void Logic()
- {
- // Dead creatures by food
- for (int y = 0; y < 30; y++)
- for (int x = 0; x < 30; x++)
- if (food_grid[x][y] != 0 && creature_grid[x][y] != NULL)
- {
- delete creature_grid[x][y];
- creature_grid[x][y] = NULL;
- }
- //Food Eating
- for (int y = 0; y < 30; y++)
- for (int x = 0; x < 30; x++)
- {
- if (creature_grid[x][y] != NULL)
- {
- bool found_food = false;
- //Check if food is around
- for (int y2 = 0; y2 < 30; y2++)
- for (int x2 = 0; x2 < 30; x2++)
- {
- if (food_grid[x2][y2]!=0)
- if ((y - y2<=5 && y - y2 >=0) || y2 - y>=0 && y2 - y<=5)
- if ((x - x2<=5 && x - x2 >=0) || x2 - x>=0 && x2 - x<=5)
- {
- food_grid[x2][y2] = 0;
- creature_grid[x][y]->incenergy();
- found_food = true;
- }
- }
- if (found_food == false)
- creature_grid[x][y]->decenergy();
- //If not - decrease energy
- }
- }
- //Remove dead creatures
- for (int y = 0; y < 30; y++)
- for (int x = 0; x < 30; x++)
- {
- if (creature_grid[x][y] != NULL && creature_grid[x][y]->getenergy() > 9)
- creature_grid[x][y]->setenergy(9);
- if (creature_grid[x][y] != NULL && creature_grid[x][y]->getenergy() <= 0)
- {
- delete creature_grid[x][y];
- creature_grid[x][y] = NULL;
- }
- }
- //Remove Food
- ZeroMemory(food_grid,sizeof(int)*30*30);
- }
- bool isGameOver()
- {
- for (int y = 0; y < 30; y++)
- {
- for (int x = 0; x < 30; x++)
- {
- if (creature_grid[x][y] != 0)
- return false;
- }
- }
- return true;
- }
- void Init()
- {
- int randomx, randomy;
- r.initialiseSeed();
- for (int i = 0; i < 5; i++)
- {
- randomx = r.random(0, 29);
- randomy = r.random(0, 29);
- if (creature_grid[randomx][randomy] == NULL)
- creature_grid[randomx][randomy] = new creature();
- else
- i--;
- }
- }
- void DropFood()
- {
- int randomx, randomy;
- for (int i = 0; i < 5; i++)
- {
- randomx = r.random(0, 29);
- randomy = r.random(0, 29);
- if (food_grid[randomx][randomy] == 0)
- food_grid[randomx][randomy] = 1;
- else
- i--;
- }
- }
- void display()
- {
- c.clear();
- c.gotoXY(0, 0);
- c.setColour(c.BLACK, c.BLACK);
- for (int y = 0; y < 30; y++)
- {
- for (int x = 0; x < 30; x++)
- {
- if (creature_grid[x][y] == NULL && food_grid[x][y] == 0)
- cout << ".";
- else if (food_grid[x][y] == 0)
- {
- if (creature_grid[x][y]->getenergy()<3)
- c.setColour(c.WHITE, c.RED);
- else if (creature_grid[x][y]->getenergy()<6)
- c.setColour(c.WHITE, c.YELLOW);
- else
- c.setColour(c.WHITE, c.GREEN);
- cout << creature_grid[x][y]->getenergy();
- c.setColour(c.BLACK, c.BLACK);
- }
- else
- {
- c.setColour(c.WHITE, c.PURPLE);
- cout << "o";
- c.setColour(c.BLACK, c.BLACK);
- }
- }
- cout << endl;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment