Skip to content

EDAII/Ordena_ShuffleWar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

25 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ShuffleWar

Alunos

Matrícula Nome
23/1033737 Artur Mendonça Arruda
23/1035464 Lucas Mendonça Arruda

Sobre o Projeto

ShuffleWar é um jogo de terminal desenvolvido em C, ambientado na Idade Média, que utiliza algoritmos de ordenação para determinar a pontuação do jogador e do NPC.
O projeto combina lógica de programação, estrutura de dados e estratégia, permitindo ao jogador competir em eficiência de ordenação para sobreviver ao desafio proposto pelo Rei.

História do Jogo

O jogador assume o papel de um prisioneiro condenado à morte.
O Rei decide oferecer uma chance de sobrevivência: se o jogador conseguir organizar vetores de números melhor que o servo do Rei, ele sobrevive; caso contrário, é condenado.
O desafio envolve habilidade em algoritmos de ordenação e estratégia na escolha de cartas.

Sobre o Jogo

  • O jogo é composto por 10 rodadas.
  • A cada rodada, o jogador pode pegar até 3 cartas para completar a mão com máximo de 9 cartas.
  • O NPC também recebe cartas quando o jogador pega, mas sempre cartas diferentes.
  • As cartas podem possuir penalizações:
    • Penalização normal: desconta 5.000 pontos da reputação.
    • Penalização forte: desconta 10.000 pontos da reputação.

Sistema de Pontuação

  1. Quando uma carta (algoritmo de ordenação) é escolhida, tanto o player quanto o NPC ordenam o mesmo vetor.
  2. Cada algoritmo retorna a quantidade de comparações feitas.
  3. A fórmula de pontuação é: reputacao = 10000 * (preferencia_do_rei) - comparacoes / 1000
  • preferencia_do_rei: estado que muda a cada rodada (priorizar estabilidade dobra a pontuação base de 10000 para 20000).
  • comparacoes: número de comparações realizadas pelo algoritmo. Quanto maior, mais pontos são descontados.

Cartas e Penalizações

  • Cartas penalizadas afetam a reputação em 5000, e cartas muito penalizadas afetam a reputação em 10000 quando usadas.
  • É necessário planejar bem quais cartas usar para maximizar a pontuação e sobreviver ao desafio do Rei.

Guia de instalação

Dependências do projeto

  • Sistema operacional: Linux
  • Compilador: GCC (versão recomendada: 9.4 ou superior)
  • Linguagem: C (padrão C99 ou superior)

Para usuários Windows, é necessário:

  • Instalar o GCC (GNU Compiler Collection) ou
  • Utilizar um compilador online como o OnlineGDB

Não são necessárias bibliotecas externas, apenas o compilador C padrão.

Como executar o projeto

  1. Clone o repositório
git clone https://github.com/EDAII/Ordena_ShuffleWar.git
  1. Abra o terminal na pasta do projeto com o comando: cd Ordena_ShuffleWar
  2. Compile todos os arquivos juntos usando o GCC:
gcc main.c jogo.c algoritmos/insertion_sort.c algoritmos/selection_sort.c algoritmos/shell_sort.c algoritmos/bubble_sort.c algoritmos/counting_sort.c algoritmos/merge_sort.c algoritmos/quick_sort.c algoritmos/heap_sort.c -o rodar
  1. Execute o programa:
    ./rodar
    

Capturas de tela

Bubble Sort

Bubble Sort

  • Complexidade média: O(n²)
  • Pior caso: O(n²)

Counting Sort

Counting Sort

  • Complexidade média: O(n + k)
  • Pior caso: O(n + k)
    (n = tamanho do vetor, k = valor máximo do elemento)

Insertion Sort

Insertion Sort

  • Complexidade média: O(n²)
  • Pior caso: O(n²)
  • Melhor caso (quase ordenado): O(n)

Merge Sort

Merge Sort
Merge Sort

  • Complexidade média: O(n log n)
  • Pior caso: O(n log n)

Quick Sort

Quick Sort

  • Complexidade média: O(n log n)
  • Pior caso: O(n²)

Selection Sort

Selection Sort

  • Complexidade média: O(n²)
  • Pior caso: O(n²)

Shell Sort

Shell Sort

  • Complexidade média: depende da sequência de gaps, geralmente O(n^(3/2))
  • Pior caso: O(n²)

Conclusão

Os algoritmos de ordenação em ShuffleWar são usados para calcular a pontuação do jogador e do NPC.
Cada carta representa um algoritmo, que organiza o mesmo vetor para ambos. A quantidade de comparações feitas pelo algoritmo determina quantos pontos cada um recebe.

Assim, o jogo utiliza os algoritmos de forma prática para comparar eficiência e gerar a pontuação, sem abstrações, mostrando claramente o efeito de cada escolha de algoritmo na reputação do jogador.

Link do Vídeo de apresentação

Link Vídeo

Link Vídeo

Histórico de Versões

Versão Data Descrição Autor Revisor Revisão
v1.0 13/10/2025 Estruturação inicial da README Artur Mendonça Lucas Mendonça 13/10/2025

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages