Sobre este projeto
it-programming / web-development
Aberto
Descrição da Tarefa
Você agora faz parte de uma empresa chamada de DarkGames que desenvolve jogos de
computador. A DarkGames quer desenvolver um jogo no qual a pessoa segue por um labirinto
de salas e que será chamado de labirinto sombrio. Este labirinto é composto por salas
interligadas.
Cada sala é ligada a outra sala por uma fechadura e cada sala possui um baú com
um prêmio em pontos e uma chave. As chaves são representadas por números inteiros de 0 a
100. A chave abre uma fechadura cujo número é igual, portanto se você não possuir a chave
para aquela fechadura, o jogo acaba pois você não conseguiu sair do labirinto de salas.
A primeira sala sempre possui fechadura com número 0 e o jogador sempre começa com a
chave 0. Portanto sempre é possível entrar na primeira sala.
Como você faz parte da equipe que desenvolve jogos, você deve ajudar a fazer parte deste
jogo.
As suas tarefas consistirão em:
a) Implementar em C uma estrutura de dados que represente uma sala. Ela deve ser como
a seguir.
Struct sala {
struct sala* proxima;
float bau; // pontos que aquela sala contem
int chave; // chave para alguma sala
int fechadura; // fechadura para a sala atual
};
b) Faça uma função em C que leia de um arquivo um conjunto de salas e utilize alocação
dinâmica para o campo proxima.
A cada três linhas do arquivo, você terá as
informações para a sua sala. A primeira das três linhas conterá a informação sobre a
quantidade de pontos da sala, a segunda o número da chave e por fim a fechadura da
sala. Você pode assumir que este arquivo sempre conterá informação de ao menos
uma sala.
A seguir um exemplo de um arquivo que servirá para esta função.
2.5
2
0
10.2
5
2
0.0
7
5
Para cada sala lida do arquivo, você deve utilizar a função de alocação dinâmica para
alocação de memória de uma sala. Talvez te ajude sempre guardar um ponteiro para a
primeira sala.
C) Faça uma função que dada a primeira sala, percorra o labirinto até onde for possível,
isto é, até onde existir chave para fechadura.
Retorne o número da sala onde o labirinto
parou.
D) Faça uma função que dada a primeira sala, percorra o labirinto e ache a sala com a
maior pontuação. Você deve retornar o número da sala com a maior pontuação.
E) Faça uma função principal (main), cuja entrada (scanf) é o nome do arquivo a ser lido
pela função da letra (b) e cujas saídas (printf) serão o número retornado pela função da
letra (c) e o número retornado pela função (d). Assim o modelo a ser feito na função
principal é como a seguir:
int main() {
char nome_arquivo[14];
scanf("%s", nome_arquivo);
cria_labirinto(); // funcao da letra (b)
print("%d\n", ultima_sala()); //funcao da letra ( c)
print("%d\n", sala_maiorpontos()); // funcao da letra (d)
return 0;
}
Você pode mudar o nome de suas funções e variáveis, também pode acrescentar
parâmetros em funções onde achar necessário. Os únicos conteúdos que não devem
ser mudados neste modelo são os conteúdos entre aspas do seu scanf e do seu printf.
Formato de entrega do arquivo
Você deve entregar apenas um arquivo com extensão .c no moodle. O nome do seu arquivo
deve ser seu número de matrícula apenas. Por exemplo, um aluno com número de matrícula 1111111 terá que salvar como 20191111111.c
Categoria TI e Programação
Subcategoria Programação
Qual é o alcance do projeto? Bug ou alteração pequena
Isso é um projeto ou uma posição de trabalho? Um projeto
Tenho, atualmente Eu tenho uma ideia geral
Disponibilidade requerida Conforme necessário
Funções necessárias Desenvolvedor
Prazo de Entrega: Não estabelecido
Habilidades necessárias