Witam jestem studentem informatyki potrzebującym pomocy w napisaniu dość ciekawego projektu. Program ma za zadanie zasymulować wyspę na której mają znajdować się wilki króliki i wilczyce. Króliki maja poruszać się w różne strony z takim samym prawdo. co nie jest trudne ale te same króliki maja 20% szans na zamienienie się w dwa - nie do końca wiem jak tego dokonać .. Kiedy w wyznaczonym obszarze wokół wilka znajdzie się królik wilk zaczyna polowanie jesli złapie królika zyskuje 1 tłuszczu jeśli nie to traci 0,1 tłuszczu ...Jeżeli wilk i wilczyca znajdą się na tym samym polu powstaje kolejny wilk z losową płcią.
Ten program przerasta moje umiejętności .. proszę o pomoc
To co udało mi się stworzyć:
#include <iostream>
#include <cstdio>
#include <windows.h>
#include <vector>
#include <time.h>
using namespace std;
int const Wx = 20;
int const Hy = 30;
struct Pozycja
{
int x, y;
};
class obiekt
{
private:
Pozycja players;
int pkt_zycia;
int tluszcz;
int ilu;
int score;
public:
obiekt()
: score(0)
{
players.x = 5;
players.y = 4;
}
void fail()
{
system("cls");
system("pause");
exit(1);
}
void score_up()
{
if (players.y == 0 | players.x == 0)
{
cout << "krolik 1" << score;
};
}
void poruszanie()
{
int k;
srand(time(NULL));
k = rand() % 100 + 1;
switch (k)
{
case 1:
if (players.x + 1 == Wx)
break;
else
players.x++;
break;
case 2:
if (players.y + 1 == Hy)
break;
else
players.y++;
break;
case 3:
if (players.y - 1 == -1)
break;
else
players.y--;
break;
case 4:
if (players.x - 1 == -1)
break;
else
players.x--;
break;
case 5:
if (players.x - 1 == -1 || players.x + 1 == Wx)
break;
else
players.y++;
players.x--;
break;
case 6:
if (players.x - 1 == -1 || players.x - 1 == -1)
break;
else
players.y--;
players.x--;
break;
case 7:
if (players.x - 1 == -1 || players.x + 1 == Wx)
break;
else
players.y++;
players.x++;
break;
case 8:
if (players.x - 1 == -1 || players.x + 1 == Wx)
break;
else
players.y--;
players.x++;
break;
}
}
Pozycja& return_ref_to_players()
{
return players;
}
};
class wilk : public obiekt
{
private:
Pozycja wilk;
int tluszcz;
public:
obiekt()
{
wilk.x = 6;
wilk.y = 6;
}
};
/////////////////////////////////////////////////////
// MAPY //
/////////////////////////////////////////////////////
class Map
{
// Mapa gry
int map[Wx][Hy];
public:
// Zeruje mape
Map()
:
{
for (int i = 0; i < Wx; i++)
{
for (int j = 0; j < Hy; j++)
{
map[i][j] = 0;
}
}
}
// Rysuje mape
void draw()
{
for (int i = 0; i < Wx; i++)
{
for (int j = 0; j < Hy; j++)
{
// Zamienia liczy na
// odpowiednie znaki graficzne
switch (map[i][j])
{
case 0:
cout << ".";
break;
case 1:
cout << "M";
break;
case 2:
cout << "@";
break;
case 3:
cout << "K";
break;
}
}
// Kolejny wiersz mapy
cout << endl;
}
}
// Resetuje mape
void reset()
{
for (int i = 0; i < Wx; i++)
{
for (int j = 0; j < Hy; j++)
{
map[i][j] = 0;
}
}
}
// Umieszcza gracza na mapie
void put_player(Pozycja& player)
{
map[player.x][player.y] = 2;
}
// Umieszcza potwory na mapie
};
int main()
{
Map m;
obiekt g;
// Start gry
// Glowna petla gry
for (;;)
{
m.reset();
m.put_player(g.return_ref_to_players());
m.draw();
g.poruszanie();
g.score_up();
system("cls");
}
return 0;
}