Alguem me pode dar umas dicas neste trabalho de programaçao em C ?

jcpl

Membro
Descrição do problema
Considere um aquário representado por uma matriz bidimensional de 80*45 (cabe num ecrã e ainda ficam 5 linhas para extras).
Nesse aquário existem dois tipos de peixes, os do tipo A, que comem plâncton, e os do tipo B que comem os peixes do tipo A.
Regras dos peixes do tipo A
Se se movimentarem durante 10 (ReproduzA) vezes seguidas e se à sua volta houver uma célula livre reproduzem-se ficando na mesma célula e o filho na célula livre
Se houver uma célula livre à sua volta movimentam-se de uma forma aleatória.
Se não se movimentarem durante 3 (MorreA) vezes seguidas morrem à fome.
Regras dos peixes do tipo B
Se à sua volta houver algum peixe do tipo A movimenta-se para lá e come-o, se não movimenta-se para uma célula livre de uma forma aleatória.
Quando tiver comido 5 (ReproduzB) peixes do tipo A e à sua volta não existir nenhum peixe do seu tipo reproduz-se.
Se durante 10 (MorreB) vezes não comer nenhum peixe do tipo A morre à fome.
Por cada iteração (movimentos dos peixes do tipo A e depois do tipo B) devem ser mostrados os resultados no ecrã.
Os dados deverão ser guardados num ficheiro para que a aplicação possa ser reiniciada com o estado actual do jogo.
O utilizador (jogador) terá uma tecla para avançar uma iteração, outra para avançar com 10 iterações e outra para avançar com 100 iterações.
O utilizador poderá mudar os valores das variáveis ReproduzA, ReproduzB, MorreA e MorreB
Inicialmente serão colocados aleatoriamente 200 peixes do tipo A e 25 do Tipo B
O jogo termina quando não houver peixes do tipo B.
A pontuação do jogo será pelo número de iterações conseguidas (com parâmetros correctos o jogo pode nunca acabar, o que dá um ecossistema sustentável)


Se alguem me puder ajudar agradecia,...
obrigado, um feliz natal e um bom ano a todos

cump jcpl
 
se bem entendi podes fazer tipo: (nao sei se é isso o pretendido)

um array bidimensional que terá apontadores para algo. (struct objecto, que será ou A ou B ou comida)
Acho que pode ser assim porque não podem existir dois peixes no mesmo local.

Depois basicamente serão operações sobre a caixinha.
numa iteração irás percorrer a caixa e vais movimentar os apontadores que estão la dentro de forma aleatória com MOD's de um valor random, para decidires se vai para cima para baixo e assim. Tens que verificar em cada mudança se existir la os peixes perto para os comer, ou outro tipo de alterações necessárias.
Depois tens que aplicar as regras, guardando em variáveis globais os limites, e as correspondentes a cada "objecto" na struct....

será isto assim?
De certeza que nas aulinhas se falou no pretendido para o trabalho bem como os metodos a seguir para conseguir conclui-lo...
 
Última edição:
nas aulas de programação n foi mt falado deste trabalho, que é o trabalho final ja houve outro antes e esse sim foi mt mais falado e eu tenho ido as aulas todas este trabalho e em conjunto com o a cadeira de algoritmos, na de algoritmos sim se deve falar mais mas essa eu ja tenho feita esta e k ta atrasada, e tou tendo agr alguma dificuldade em resolver este trabalho...
 
a minha duvida ta mais em começar a entender o problema, em entender bem o k e pedido, para começar por algum lado ei que tenho que fzr uma matriz de 80 por 45, ms como vou meter la peixes do tipo A e do tipo B, ou seja A's e B's aleatoriamente n sei mt bem..
 
a minha duvida ta mais em começar a entender o problema, em entender bem o k e pedido, para começar por algum lado ei que tenho que fzr uma matriz de 80 por 45, ms como vou meter la peixes do tipo A e do tipo B, ou seja A's e B's aleatoriamente n sei mt bem..

Se fosse eu metia apontadores para uma struct que pudesse ser do tipo A, B e plâncton.
 
sim eu tou a criar uma estrutura po peixe, tou a fxr mais ou menus uma coisa axim

typedef struct Peixe {
char tipo; // 'A' ou 'B' conforme o tipo do peixe
int iteracao; // o valor de Ciclos
int morre; // o valor de MorreA ou MorreB ou o decremento deste
char reproduz;

}PEIXE;
 
Eu tive de fazer uma cena parecida mas foi em C++, o que o tornava mais fácil por causa do polimorfismo, etc.

Como em C não há polimorfismo, penso que será mais fácil fazeres 3 arrays diferentes, peixes A, peixes B e Plâncton.
O meu conselho é não fazeres matriz nenhuma.
Colocas nos peixes uma int X e Y que vão ser as coordenadas que eles ocupam no aquário.
A matriz vai ser só uma variável local a uma função imprime(para o monitor) que vais preencher indo buscar as posições X e Y dos peixes ou plâncton (correndo o array de estruturas ou listas ligadas, o que seja).

Há muitos aspectos que faltam nesse enunciado, por exemplo o plâncton. Se é suposto alguns peixes o comerem e é suposto ser um sistema sustentável, ele tem de aparecer de algum lado.
 
Umas estruturas assim devem chegar para resolver o teu problema:

Código:
#define AQUARIUS_WIDTH  (80)
#define AQUARIUS_HEIGHT (45)

static sea_cell aquarius[AQUARIUS_HEIGHT][AQUARIUS_WIDTH];

#define FISH     ('F')
#define PLANCTON ('P')

typedef struct _fish {
    char fish_type;
    int consecutive_moves;
    int consecutive_stalls;
} fish;

typedef struct _sea_creature {
    char creature_type;
    fish* fish;
} sea_creature;

typedef struct _sea_cell {
    sea_creature* creature = NULL;
} sea_cell;
 
Última edição:
muito obrigado a todos pela vossa ajuda, ajudaram bastante a perceber um poco melhor o problema.. uma das maior dificuldades ta mesmo em entender bem o que e pedido no problema, para poder comecar por algum lado..
se tiverem alguem mais alguma ideia por favor que diga pk toda a ajuda é bem vinda..

o pedacinho de codigo com as estruturas vai msmo dar-me mt jeito obrigado IComeFromBehind.

cump jcpl,
mt obrigado a todos mais uma vez
 
Back
Topo