/projeto_aspnet_core

Projeto de ASP.NET Core com registo de grupos de RPG e gestão dos personagens, com todos seus equipamentos e especialidades. Utilizando Entity e Identity.

Primary LanguageC#

🚧 WEB RPG CREATION 🚧


🎮 DESCRIÇÃO DO PROBLEMA

  • Registo de grupos de e gestão dos personagens, com todos seus equipamentos e especialidades. Para uso limitado dos Jogadores e para total controle do Game Master em suas partidas de Roleplaying Game.

  • Utilizar como base um sistema de RPG pré-estabelecido (Isle of Ixx do Into the Odd neste caso), podendo ser facilmente adaptável para outros jogos.

  • Tem como objetivo promover organização e gestão dos grupos e personagens por parte, principalmente do Game Master. Mas, há também, a possibilidade do Jogador (utilizador comum) criar/registar seu próprio personagem de forma “aleatória”.

  • Todo processo assenta em ASP.NET Core 6 em formato MVC (Model, View e Controller), com o Entity Framework e o Identity, além, claro, de C#, HTML, CSS, Bootstrap e um pouco de Javascript.

  • Há conexão com a Base de dados, onde ficam registadas estas informações.


👾 TAREFAS IMPLEMENTADAS

  • Inicialmente criar o projeto com Identity e configurá-lo para aceitar Login por parte do Game Master e limitar acesso às funções por parte dos Jogadores.

  • Criar os Modelos e suas relações para criação da base de dados e também a criação automática, via Entity Framework, dos Controllers e Views.

  • Realizar CRUD de todas informações relacionadas aos Modelos.

  • Com base nessas informações e com a criação de um Grupo, apresentar os membros desse grupo, através de listas, na página principal Home.

  • Criar métodos que geram valores aleatórios, com base na regra do jogo, para os atributos do Personagem quando tentam criar um personagem.

  • Limitar estes campos para apenas leitura.

  • Limitar a quantidade de Equipamentos associados aos personagens com base no valor final do atributo poder.

  • Qualquer um não logado (Jogador) pode visualizar Home, Personagens, Criar Novos Personagens, e ver Detalhes dos Personagens.


🤖 FERRAMENTAS / VERSÕES

  • Início do planeamento em 2023-04-30

  • Reformulação do Diagrama de Entidades em 2023-05-05:

    • Exclusão do Artefato, Bugiganga e PacoteInicial
    • Os três acima foram diferenciados em Tipos dentro do Equipamento
    • Retirada de alguns preenchimentos obrigatório
    • Reestruturação dos Modelos
  • Modificações em 2023-05-06:

    • Alterado alguns tipos para poder incluir mais informações pertinentes
    • Alteração considerável no Equipamento
    • Primeira tentativa, de muitas, frustrada de incluir sistema de Login no projeto já iniciado
  • Modificações em 2023-05-13:

    • Recriação do projeto “do zero” para inclusão do sistema de Login automático pelo modo Identity
    • Remodelações das Views e nos Controllers
  • Modificações em 2023-05-21:

    • Verificação do Personagem Controller com a View
    • Tratar dos envios de informações no método Create()
    • Modificar argumentos do Create(POST)
    • Criar variáveis de Classe
  • Modificações em 2023-05-27:

    • Desisti de múltiplos métodos Random
    • Testei as variáveis de Classe como Static
    • Testei métodos com retorno
    • Objetivo era evitar modificação dos Value através do Inspect via HTML e ao fazer Submit
    • Resolvi da maneira mais simples, porém funcional
  • Modificações em 2023-06-03 e 04:

    • Modificação do Program.cs para ser Main e facilitar a criação das Roles e contas de Utilizadores
    • Configuração do Program e criação na Base de Dados
    • Alteração do Login, Access Denied, Register... para funcionar direto na página
    • Todo novo Registo é automaticamente um Role "Jogador"
  • Modificações em 2023-06-10 e 11:

    • Inclusão de tudo relacionado ao Identity
    • Ficaram por configurar Logins Externos e Servidor de envio de Emails
    • A base para tudo isso já funciona, falta apenas a implementação

📈 ANÁLISE DE DADOS

  • Entity

Imagem1

  • Identity

Imagem2


📊 TABELAS / CAMPOS / TIPOS

  • Grupo:

    • Id - INT, NN, PK, AI
    • Nome - NVARCHAR(MAX)
    • Descricao - NVARCHAR(MAX)
    • DataFim - DATETIME2(7)
    • DataInicio - DATETIME2(7)
  • Personagem:

    • Id - INT, NN, PK, AI
    • Nome - NVARCHAR(MAX)
    • Descricao - NVARCHAR(MAX)
    • Nivel - NVARCHAR(MAX)
    • XP - NVARCHAR(MAX)
    • PoderAtual - NVARCHAR(MAX)
    • PoderMaximo - NVARCHAR(MAX)
    • AgirAtual - NVARCHAR(MAX)
    • AgirMaximo - NVARCHAR(MAX)
    • MenteAtual - NVARCHAR(MAX)
    • MenteMaximo - NVARCHAR(MAX)
    • HpAtual - NVARCHAR(MAX)
    • HpMaximo - NVARCHAR(MAX)
    • GrupoId - INT, NN, FK
    • Moeda - NVARCHAR(MAX)
  • Especialidade:

    • Id - INT, NN, PK, AI
    • Nome - NVARCHAR(MAX)
    • Descricao - NVARCHAR(MAX)
    • PersonagemId - INT, NN, FK
  • Equipamento:

    • Id - INT, NN, PK, AI
    • Nome - NVARCHAR(MAX)
    • Quantidade - NVARCHAR(MAX)
    • Valor - NVARCHAR(MAX)
    • Tipo - NVARCHAR(MAX)
    • Ataque - NVARCHAR(MAX)
    • Protecao - NVARCHAR(MAX)
    • PoderProfanoId - INT, NN, FK
    • PersonagemId - INT, NN, FK
  • PoderProfano:

    • Id - INT, NN, PK, AI
    • Nome - NVARCHAR(MAX)
    • Descricao - NVARCHAR(MAX)

🗃 NAMESPACES

  • WebRPGCreation.Controllers
  • WebRPGCreation.Data
  • WebRPGCreation.Models
  • WebRPGCreation.Migrations

📇 CLASSES / MÉTODOS

  • WebRPGCreation
    • Program

Captura de ecrã 2023-05-31, às 09 31 20
  • Data

    • ApplicationDbContext
  • Models

    • Equipamento
    • Especialidade
    • Grupo
    • Personagem
    • PoderProfano
    • ErrorViewModel
  • Controllers

    • EquipamentoController
      • Index( )
      • Details( )
      • Create( )
      • Edit( )
      • Delete( )
      • DeleteConfirmed( )
      • EquipamentoExists( )

Captura de ecrã 2023-05-31, às 09 32 08

  • Controllers
    • EspecialidadeController
      • Index( )
      • Details( )
      • Create( )
      • Edit( )
      • Delete( )
      • DeleteConfirmed( )
      • EspecialidadeExists( )

Captura de ecrã 2023-05-31, às 09 32 17

  • Controllers
    • GrupoController
      • Index( )
      • Details( )
      • Create( )
      • Edit( )
      • Delete( )
      • DeleteConfirmed( )
      • GrupoExists( )

Captura de ecrã 2023-05-31, às 09 31 44

  • Controllers
    • PersonagemController
      • Index( )
      • Details( )
      • Create( )
      • Edit( )
      • Delete( )
      • DeleteConfirmed( )
      • PersonagemExists( )

Captura de ecrã 2023-05-31, às 09 31 56

  • Controllers
    • PoderProfanoController
      • Index( )
      • Details( )
      • Create( )
      • Edit( )
      • Delete( )
      • DeleteConfirmed( )
      • PoderProfanoeExists( )

Captura de ecrã 2023-05-31, às 09 32 27

  • Controllers
    • HomeController
      • Index( )
      • Error( )

Captura de ecrã 2023-05-31, às 09 31 03


📝 OUTRAS INFORMAÇÕES

  • Material Extra (wwwroot):
    • Sketchy Theme (Bootstrap)
    • Image

🎥 APRESENTAÇÃO

13_Rodrigo_PROJETO50.mp4

👨‍💻 PROJETO DE 50 HORAS EM ASP.NET CORE

📖 PARA CURSO DE PROGRAMADOR DE INFORMÁTICA - IEFP BRAGA