diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a979ee7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/venv \ No newline at end of file diff --git a/README.md b/README.md index 2c0701e..e6a6265 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,14 @@ -# ![unimancer-mage](./docs/img/animation.gif) +![unimancer-mage](/img/animation.gif) ## Alunos -| Matrícula | Aluno | Usuário | -| ---------- | -------------------------------------- | ---------------------------------------------------- | -| 22/1022604 | João Victor da Silva Batista de Farias | [@beyondmagic](https://github.com/beyondmagic) | -| 20/2046283 | Millena de Abreu Queiroz | [@MillenaQueiroz](https://github.com/MillenaQueiroz) | -| 22/2006169 | Natan da Cruz Almeida | [@natanalmeida03](https://github.com/natanalmeida03) | -| 22/1022408 | Paulo Henrique Lamounier Dantas | [@Nanashii76](https://github.com/@Nanashii76) | -| 22/1031363 | Renan Vieira Guedes | [@R-enanVieira](https://github.com/R-enanVieira) | + +| Matrícula | Aluno | Usuário | Foto de Perfil | +| ---------- | -------------------------------------- | ---------------------------------------------------- | -------------------------------------------------- | +| 22/1022604 | João Victor da Silva Batista de Farias | [@beyondmagic](https://github.com/beyondmagic) | ![João](https://github.com/beyondmagic.png?size=50) | +| 20/2046283 | Millena de Abreu Queiroz | [@MillenaQueiroz](https://github.com/MillenaQueiroz) | ![Millena](https://github.com/MillenaQueiroz.png?size=50) | +| 22/2006169 | Natan da Cruz Almeida | [@natanalmeida03](https://github.com/natanalmeida03) | ![Natan](https://github.com/natanalmeida03.png?size=50) | +| 22/1022408 | Paulo Henrique Lamounier Dantas | [@Nanashii76](https://github.com/Nanashii76) | ![Paulo](https://github.com/Nanashii76.png?size=50) | +| 22/1031363 | Renan Vieira Guedes | [@R-enanVieira](https://github.com/R-enanVieira) | ![Renan](https://github.com/R-enanVieira.png?size=50) | ## Sobre diff --git a/docs/index.md b/docs/index.md index ebd42b0..6bede2e 100644 --- a/docs/index.md +++ b/docs/index.md @@ -1,6 +1,6 @@ # Unimancer -## ![unimancer-mage](/img/animation.gif) +## ![unimancer-mage](img/animation.gif) ## Alunos | Matrícula | Aluno | Usuário | @@ -90,4 +90,4 @@ Explique como usar seu projeto caso haja algum passo a passo após o comando de | Versão | Data | Descrição | Autor | | :----: | :--------: | :-------: | :---: | -| `1.0` | XX/11/2024 | Criação | XXXXX | +| `1.0` | 24/11/2024 | Criação | Grupo | diff --git a/docs/modelagem/dd.md b/docs/modelagem/dd.md index e5618f7..2399e69 100644 --- a/docs/modelagem/dd.md +++ b/docs/modelagem/dd.md @@ -2,124 +2,242 @@ ## Entidades e Atributos -### 1. Personagem +### **1. Personagem** + **Descrição:** Representa os personagens do jogo, contendo atributos básicos e progressos. -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idPersonagem | Identificador único do personagem | INT | - | PRIMARY KEY, IDENTITY | -| idInstanciaCriatura | Relacionamento com uma criatura | INT | - | FOREIGN KEY REFERENCES `Instancia_Criatura` | -| idProgresso | Relacionamento com progresso | INT | - | FOREIGN KEY REFERENCES `Progresso_personagem` | -| nome | Nome do personagem | VARCHAR | 100 | NOT NULL | -| elemento | Elemento associado ao personagem | VARCHAR | 50 | CHECK (elemento IN ('Fogo', 'Água', etc.)) | -| nivel | Nível atual do personagem | INT | - | NOT NULL, CHECK (nivel >= 1) | -| pontosDeVidaAtual | Pontos de vida restantes | INT | - | DEFAULT 0, CHECK (pontosDeVidaAtual >= 0) | -| energiaArcanaAtual | Energia mágica disponível | INT | - | DEFAULT 0, CHECK (energiaArcanaAtual >= 0) | -| conhecimentoArcano | Conhecimento arcano disponível | INT | - | DEFAULT 0, CHECK (conhecimentoArcano >= 0) | -| inteligencia | Inteligência do personagem | INT | - | DEFAULT 0, CHECK (inteligencia >= 0) | -| moedas | Quantidade de moedas disponíveis | INT | - | DEFAULT 0, CHECK (moedas >= 0) | +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idPersonagem|Identificador único do personagem|INT|-|PRIMARY KEY, IDENTITY| +|idInstanciaCriatura|Relacionamento com uma criatura|INT|-|FOREIGN KEY REFERENCES `Instancia_Criatura`| +|idProgresso|Relacionamento com progresso|INT|-|FOREIGN KEY REFERENCES `Progresso_personagem`| +|nome|Nome do personagem|VARCHAR|100|NOT NULL| +|elemento|Elemento associado ao personagem|VARCHAR|50|CHECK (elemento IN ('Fogo', 'Água', etc.))| +|nivel|Nível atual do personagem|INT|-|NOT NULL, CHECK (nivel >= 1)| +|pontosDeVidaAtual|Pontos de vida restantes|INT|-|DEFAULT 0, CHECK (pontosDeVidaAtual >= 0)| +|energiaArcanaAtual|Energia mágica disponível|INT|-|DEFAULT 0, CHECK (energiaArcanaAtual >= 0)| +|conhecimentoArcano|Conhecimento arcano disponível|INT|-|DEFAULT 0, CHECK (conhecimentoArcano >= 0)| +|inteligencia|Inteligência do personagem|INT|-|DEFAULT 0, CHECK (inteligencia >= 0)| +|moedas|Quantidade de moedas disponíveis|INT|-|DEFAULT 0, CHECK (moedas >= 0)| --- -### 2. Instancia_Criatura +### **2. Instancia_Criatura** + **Descrição:** Relaciona uma criatura a um personagem com base em atributos e estatísticas. -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idInstanciaCriatura | Identificador único da instância | INT | - | PRIMARY KEY, IDENTITY | -| idCriatura | Identificador da criatura | INT | - | FOREIGN KEY REFERENCES `Criatura` | +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idInstanciaCriatura|Identificador único da instância|INT|-|PRIMARY KEY, IDENTITY| +|idCriatura|Identificador da criatura|INT|-|FOREIGN KEY REFERENCES `Criatura`| --- -### 3. Criatura +### **3. Criatura** + **Descrição:** Define as criaturas do jogo, incluindo seus atributos principais. -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idCriatura | Identificador único da criatura | INT | - | PRIMARY KEY, IDENTITY | -| pontosDeVidaMaximos | Pontos de vida máximos da criatura | INT | - | NOT NULL, CHECK (pontosDeVidaMaximos >= 0) | -| nivel | Nível da criatura | INT | - | NOT NULL, CHECK (nivel >= 0) | -| energiaArcanaMaxima | Energia mágica máxima da criatura | INT | - | DEFAULT 0, CHECK (energiaArcanaMaxima >= 0) | -| XP | XP da criatura | INT | - | DEFAULT 0, CHECK (XP >= 0) | -| pontosDeVida | Energia pontos de vida da criatura | INT | - | DEFAULT 0, CHECK (pontosDeVida >= 0) | -| moedas | Quantidade de moedas disponíveis | INT | - | DEFAULT 0, CHECK (moedas >= 0) | +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idCriatura|Identificador único da criatura|INT|-|PRIMARY KEY, IDENTITY| +|pontosDeVidaMaximos|Pontos de vida máximos da criatura|INT|-|NOT NULL, CHECK (pontosDeVidaMaximos >= 0)| +|nivel|Nível da criatura|INT|-|NOT NULL, CHECK (nivel >= 0)| +|energiaArcanaMaxima|Energia mágica máxima da criatura|INT|-|DEFAULT 0, CHECK (energiaArcanaMaxima >= 0)| +|XP|XP da criatura|INT|-|DEFAULT 0, CHECK (XP >= 0)| +|pontosDeVida|Energia pontos de vida da criatura|INT|-|DEFAULT 0, CHECK (pontosDeVida >= 0)| +|moedas|Quantidade de moedas disponíveis|INT|-|DEFAULT 0, CHECK (moedas >= 0)| --- -### 4. Inventário +### **4. Inventário** + **Descrição:** Representa o inventário de itens associados a um personagem. -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idInventario | Identificador único do inventário | INT | - | PRIMARY KEY, IDENTITY | -| idPersonagem | Identificador do personagem | INT | - | FOREIGN KEY REFERENCES `Personagem` | +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idInventario|Identificador único do inventário|INT|-|PRIMARY KEY, IDENTITY| +|idPersonagem|Identificador do personagem|INT|-|FOREIGN KEY REFERENCES `Personagem`| --- -### 5. Item +### **5. Item** + **Descrição:** Representa itens que podem ser armazenados no inventário. -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idItem | Identificador único do item | INT | - | PRIMARY KEY, IDENTITY | -| idInventario | Identificador do inventário | INT | - | FOREIGN KEY REFERENCES `Inventário` | -| nome | Nome do item | VARCHAR | 100 | NOT NULL | -| peso | Peso do item | FLOAT | - | DEFAULT 0, CHECK (peso >= 0) | -| preco | Preço do item | FLOAT | - | DEFAULT 0, CHECK (preco >= 0) | -| chanceDrop | chance de drop do item | INT | - | DEFAULT 0, CHECK (chanceDrop >= 0) | +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idItem|Identificador único do item|INT|-|PRIMARY KEY, IDENTITY| +|idInventario|Identificador do inventário|INT|-|FOREIGN KEY REFERENCES `Inventário`| +|nome|Nome do item|VARCHAR|100|NOT NULL| +|peso|Peso do item|FLOAT|-|DEFAULT 0, CHECK (peso >= 0)| +|preco|Preço do item|FLOAT|-|DEFAULT 0, CHECK (preco >= 0)| +|chanceDrop|chance de drop do item|INT|-|DEFAULT 0, CHECK (chanceDrop >= 0)| --- -### 6. Mochila +### **6. Mochila** + **Descrição:** Representa mochilas que armazenam itens e possuem limite de peso. -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idMochila | Identificador único da mochila | INT | - | PRIMARY KEY, IDENTITY | -| idInventario | Relacionamento com inventário | INT | - | FOREIGN KEY REFERENCES `Inventário` | -| pesoMaximo | Peso máximo suportado pela mochila | FLOAT | - | NOT NULL, CHECK (pesoMaximo >= 0) | -| pesoAtual | Peso atual da mochila | FLOAT | - | NOT NULL, CHECK (pesoAtual >= 0) | +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idMochila|Identificador único da mochila|INT|-|PRIMARY KEY, IDENTITY| +|idInventario|Relacionamento com inventário|INT|-|FOREIGN KEY REFERENCES `Inventário`| +|pesoMaximo|Peso máximo suportado pela mochila|FLOAT|-|NOT NULL, CHECK (pesoMaximo >= 0)| +|pesoAtual|Peso atual da mochila|FLOAT|-|NOT NULL, CHECK (pesoAtual >= 0)| --- -### 7. Região -**Descrição:** Representa regiões do mapa onde locais podem ser encontrados. +### **7. Região** -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idRegiao | Identificador único da região | INT | - | PRIMARY KEY, IDENTITY | -| nome | Nome da região | VARCHAR | 100 | NOT NULL | -| descricao | Descrição da região | TEXT | - | - | -| elementoRegiao | Elemento da região | TEXT | - | CHECK (elemento IN ('Fogo', 'Água', etc.)) | +**Descrição:** Representa regiões do mapa onde locais podem ser encontrados. +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idRegiao|Identificador único da região|INT|-|PRIMARY KEY, IDENTITY| +|nome|Nome da região|VARCHAR|100|NOT NULL| +|descricao|Descrição da região|TEXT|-|-| +|elementoRegiao|Elemento da região|TEXT|-|CHECK (elemento IN ('Fogo', 'Água', etc.))| --- -### 8. Local +### **8. Local** + **Descrição:** Representa locais onde os jogadores podem interagir. -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idLocal | Identificador único do local | INT | - | PRIMARY KEY, IDENTITY | -| idRegiao | Identificador da região | INT | - | FOREIGN KEY REFERENCES `Regiao` | -| idInstanciaItem | Identificador da instancia de item | INT | - | FOREIGN KEY REFERENCES `Instancia_item` | -| nome | Nome do local | VARCHAR | 100 | NOT NULL | -| descricao | Descrição do local | TEXT | - | - | +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idLocal|Identificador único do local|INT|-|PRIMARY KEY, IDENTITY| +|idRegiao|Identificador da região|INT|-|FOREIGN KEY REFERENCES `Regiao`| +|idInstanciaItem|Identificador da instancia de item|INT|-|FOREIGN KEY REFERENCES `Instancia_item`| +|nome|Nome do local|VARCHAR|100|NOT NULL| +|descricao|Descrição do local|TEXT|-|-| --- -### 9. NPC +### **9. NPC** + **Descrição:** Representa personagens não jogáveis. -| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | -|---------------------|------------------------------------|--------------|----------|----------------------------------------------| -| idNPC | Identificador único do NPC | INT | - | PRIMARY KEY, IDENTITY | -| idLocal | Relacionamento com local | INT | - | FOREIGN KEY REFERENCES `Local` | -| nome | Nome do NPC | VARCHAR | 100 | NOT NULL | -| dialogo | Texto de diálogo do NPC | TEXT | - | - | +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idNPC|Identificador único do NPC|INT|-|PRIMARY KEY, IDENTITY| +|idLocal|Relacionamento com local|INT|-|FOREIGN KEY REFERENCES `Local`| +|nome|Nome do NPC|VARCHAR|100|NOT NULL| +|dialogo|Texto de diálogo do NPC|TEXT|-|-| + +### **10. Grimório** + +**Descrição:** Representa grimórios que podem ser encontrados e usados para adquirir novas habilidades. + +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idGrimorio|Identificador único do grimório|INT|-|PRIMARY KEY, IDENTITY| +|idInventario|Relacionamento com inventário|INT|-|FOREIGN KEY REFERENCES `Inventário`| +|numPaginas|Número de páginas do grimório|INT|-|NOT NULL, CHECK (numPaginas > 0)| + +--- + +### **11. Poção** + +**Descrição:** Representa itens consumíveis do tipo poção. + +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idPocao|Identificador único da poção|INT|-|PRIMARY KEY, IDENTITY| +|idItemConsumivel|Relacionamento com item consumível|INT|-|FOREIGN KEY REFERENCES `item_nao_consumivel`| +|efeito|Efeito da poção|TEXT|-|NOT NULL| +|duracao|Duração do efeito (em segundos)|INT|-|NOT NULL, CHECK (duracao > 0)| + +--- + +### **12. Pergaminho** + +**Descrição:** Representa pergaminhos mágicos com feitiços. + +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idPergaminho|Identificador único do pergaminho|INT|-|PRIMARY KEY, IDENTITY| +|idItemConsumivel|Relacionamento com item consumível|INT|-|FOREIGN KEY REFERENCES `item_nao_consumivel`| +|cor|Cor do pergaminho|VARCHAR|50|NOT NULL| +|descricao|Descrição do pergaminho|TEXT|-|-| + +--- + +### **13. Feitiço** + +**Descrição:** Representa feitiços disponíveis no jogo, vinculados a pergaminhos. + +| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | +| ----------------------- | ------------------------------ | ------------ | ------- | --------------------------------------------- | +| idFeitico | Identificador único do feitiço | INT | - | PRIMARY KEY, IDENTITY | +| idPergaminho | Relacionamento com pergaminho | INT | - | FOREIGN KEY REFERENCES `Pergaminho` | +| elemento | Elemento do feitiço | VARCHAR | 50 | CHECK (elemento IN ('Fogo', 'Água', etc.)) | +| energiaArcanaNecessaria | Energia arcana necessária | INT | - | NOT NULL, CHECK (energiaArcanaNecessaria > 0) | + +--- + +### **14. Instância de Item** + +**Descrição:** Representa uma instância de item, que pode ser vinculada a um inventário. + +| Nome | Descrição | Tipo de Dado | Tamanho | Restrição de Domínio | +| --------------- | ---------------------------------- | ------------ | ------- | ----------------------------- | +| idInstanciaItem | Identificador único da instância | INT | - | PRIMARY KEY, IDENTITY | +| idItem | Relacionamento com a tabela `Item` | INT | - | FOREIGN KEY REFERENCES `Item` | + +--- + +### **15. Item Não-Consumível** + +**Descrição:** Representa itens que possuem atributos específicos, como bônus e penalidades, mas não podem ser consumidos. + +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idItemNaoConsumivel|Identificador único do item|INT|-|PRIMARY KEY, IDENTITY| +|idItem|Relacionamento com a tabela `Item`|INT|-|FOREIGN KEY REFERENCES `Item`| +|buff|Valor de bônus do item|INT|-|DEFAULT 0, CHECK (buff >= 0)| +|debuff|Valor de penalidade do item|INT|-|DEFAULT 0, CHECK (debuff >= 0)| + +--- +### **17. Inimigo** + +**Descrição:** Representa uma criatura hostil no jogo derivada de `Criatura`. + +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idInimigo|Identificador único do inimigo|INT|-|PRIMARY KEY, IDENTITY| +|idNPC|Relacionamento com a tabela `NPC`|INT|-|FOREIGN KEY REFERENCES `NPC`| +|idInstanciaCriatura|Relacionamento com `Instancia_Criatura`|INT|-|FOREIGN KEY REFERENCES `Instancia_Criatura`| +|elemento|Elemento principal do inimigo|VARCHAR|50|CHECK (elemento IN ('Fogo', 'Água', etc.))| +|pontosDeVidaTotal|Pontos de vida totais do inimigo|INT|-|NOT NULL, CHECK (pontosDeVidaTotal >= 0)| +|inteligencia|Inteligência do inimigo|INT|-|DEFAULT 0, CHECK (inteligencia >= 0)| + +--- +### **18. Mercador** + +**Descrição:** Representa um NPC que atua como comerciante no jogo. + +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idMercador|Identificador único do mercador|INT|-|PRIMARY KEY, IDENTITY| +|idNPC|Relacionamento com a tabela `NPC`|INT|-|FOREIGN KEY REFERENCES `NPC`| +|elemento|Elemento principal do mercador|VARCHAR|50|CHECK (elemento IN ('Fogo', 'Água', etc.))| + +--- + +### **19. Poção** + +**Descrição:** Representa um item consumível que fornece efeitos temporários ao ser usado. + +|Nome|Descrição|Tipo de Dado|Tamanho|Restrição de Domínio| +|---|---|---|---|---| +|idPocao|Identificador único da poção|INT|-|PRIMARY KEY, IDENTITY| +|idItemConsumivel|Relacionamento com `item_nao_consumivel`|INT|-|FOREIGN KEY REFERENCES `item_nao_consumivel`| +|efeito|Efeito da poção|TEXT|-|NOT NULL| +|duracao|Duração do efeito (em segundos)|INT|-|NOT NULL, CHECK (duracao > 0)| -## Histórico de Versão | Versão | Data | Descrição | Autor | | :----: | :--------: | :-------: | :---: | -| `1.0` | 24/11/2024 | Criação | Millena | +| `1.0` | 25/11/2024 | Criação | Grupo |