INTRODUÇÃO À PROGRAMAÇÃO
Requisitos dos Projetos
Roteiro
•
Equipes e temas
•
Requisitos gerais para todas as equipes
•Requisitos específicos para cada equipe
•
Todos os projetos são jogos simples
•
As equipes devem ser de 3 alunos
•
A data final de entrega/apresentação é 02/12
Recapitulando as Equipes e Temas
Equipe Alunos Tema
1 Diogo, Matheus e Liffá Jogo do enforcado
2 Cintia, Michel e Adisson Jogo de caça-palavras
3 Humberto, Renato e Pedro Jogo de duelo de guerreiros
4 Caio, Matheus e Mário Jogo de bingo
5 Anderson, Carlos e Fábio Jogo de palavras-cruzadas
Conceitos básicos sobre requisitos
•
Há dois tipos básicos de requisitos:
• Requisitos funcionais
• Requisitos não funcionais
•
Os requisitos funcionais:
• Representam os recursos que o sistema deve possuir para atender as necessidades de quem vai usá-lo
• Informa o que o sistema vai fazer
• Os requisitos não funcionais:
Requisitos comuns a todos os projetos
•
Funcionais:
• Permitir começar um jogo novo, durante uma partida ou após a finalização de uma
• Permitir gravar um jogo para continuar posteriormente
• Permitir continuar a partir de um jogo gravado, seja durante uma partida ou após a finalização de uma
• Permitir escolher pelo menos 2 níveis de dificuldade • Permitir encerrar o programa a qualquer momento
• Não-funcionais:
• Deve ser implementado na linguagem C
• Deve gravar o estado dos jogos (para continuar depois) em um arquivo com extensão .txt • Deve possuir uma interface simples padrão console
• O uso de interface gráfica usando recursos avançados é uma opção de cada equipe
• Deve estar estruturado usando o conceito de modularização
Jogo do Enforcado
•
Requisitos específicos:
• As palavras que serão oferecidas para o jogador descobrir devem ser obtidas a partir de uma lista de palavras contidas em um arquivo que será disponibilizada pelo professor • O comportamento do jogo depende do nível de dificuldade:
• No nível de dificuldade “fácil” devem ser escolhida palavras de até 8 letras
• No nível de dificuldade “difícil” devem ser escolhida palavras de mais de 8 letras
• O jogador pode fornecer até 8 palpites incorretos antes de perder a partida em qualquer nível
• O programa deverá manter na tela as seguintes informações:
• O nível de dificuldade
• Espaço reservado para letras ainda não descobertas e indicação das letras descobertas
• Os palpites relacionados com letras que não estão na palavra
• A taxa de sucesso do jogador
• A taxa de sucesso é a média de palpites errados antes de acertar cada palavra
Jogo do Enforcado : exemplo
╔═══════════════════════════════════════════════════╗ ║ Nível: Fácil ║
║ Palavra: _ A _ _ O _ _ _ L ║
║ Tentativas: B, X. ║ ║ Taxa de sucesso: 2,5 palpites/palavra ║ ║ ║ ║ ║ ╟───────────────────────────────────────────────────╢ ║ Comandos: ║
║ 1 – Novo; 2 – Sair; 3 – Gravar; 4 – Continuar ║
Jogo de Caça-Palavras
•
Requisitos específicos:
• As palavras que serão oferecidas para o jogador descobrir devem ser obtidas a partir de uma lista de palavras contidas em um arquivo que será disponibilizada pelo professor • O comportamento do jogo depende do nível de dificuldade:
• No nível de dificuldade “fácil” devem ser escolhidas palavras de até 8 letras
• No nível de dificuldade “difícil” devem ser escolhidas palavras de mais de 8 letras
• Para tentar advinhar uma palavra o jogador informa as coordenadas e a direção
• Quando o jogador seleciona o comando ajuda o jogo mostra todas as palavras e ele perde o jogo
• O programa deverá manter na tela as seguintes informações:
• Letras aleatoriamente escolhidas e as letras das palavras ainda não descobertas, em minúsculas
• As letras das palavras descobertas, em maiúsculas
• As coordenadas das linhas e colunas, considerando um quadrado de 40 x 40 letras
• A taxa de sucesso do jogador
• A taxa de sucesso é o número de minutos que o jogador demora para achar uma palavra
Jogo de Caça-Palavras : exemplo
╔═══════════════════════════════════════════════════╗ ║ Nível: Fácil ║
║ 01 02 03 04 05 06 07 08 09 10 11 12 13 ...40 ║
║ 01 a k k a q n o p q h k q ç a j 01 ║ ║ 02 x r u P R O G R A M A Ç Ã O i 02 ║
║ ... ║
║ 40 o k t a q y o p q h k q ç a q 40 ║
║ 01 02 03 04 05 06 07 08 09 10 11 12 13 ...40 ║
║ ║ ║ Taxa de sucesso: 2,5 minutos/palavra ║ ╟───────────────────────────────────────────────────╢ ║ Comandos: ║ ║ 1–Novo; 2–Sair; 3–Gravar; 4– Continuar; 5-Ajuda ║
Jogo de Duelo de Guerreiros
• Requisitos específicos:• O jogo consiste no duelo de dois guerreiros fictícios, um representa o computador e outro representa o jogador humano
• Quando cada jogo começa o jogador recebe um número de pontos por sorteio, compreendido entre 6 e 12.
• Estes pontos são usados para determinar o número de dano que ele pode sofrer • O jogador deve distribuir o número de pontos para duas parcelas: defesa e ataque
• Um duelo é uma sequência de rodadas e em cada rodada é sorteado o dano que cada guerreiro sofre usando a seguinte regra:
• Um dado de 6 faces é lançado para o 1º jogador e o número de pontos obtidos determina a quantidade de dano causado no 2º jogador usando essa fórmula:
• DANO = (PONTOS DO DADO-1) x [1 + (ATAQUE1 - DEFESA2)/12]
• Exemplo: se o dado fornece 2, o ataque do 1º é 7 e a defesa do 2º é 5, o dano causado é 1,33
• O programa deverá manter na tela as seguintes informações:
• A defesa, ataque e saúde de cada jogador (pontos de dados inicial – dados recebidos) • Os resultados de cada rodada
• A experiência do jogador
• A experiência do jogador é o número de danos que ele já causou no oponente desde que começou a duelar
Jogo de Duelo de Guerreiros: exemplo
╔════════════════════════════════════════════════════╗ ║ Rodada 1: ║
║ Player 1 sofre 1,5 de dano. ║
║ Player 2 sofre 3,0 de dano. ║
║ Rodada 2: ║ ║ Player 1 sofre 0,0 de dano. ║
║ Player 2 sofre 1,0 de dano. ║
║ ║ ║ Player 1 [Ataque:5; Defesa:7; Saúde:10,5; XP:4,0] ║
║ Player 2 [Ataque:4; Defesa:6; Saúde: 6,0; XP:1,5] ║
╟────────────────────────────────────────────────────╢ ║ Comandos: ║ ║ 1–Novo; 2–Sair; 3–Gravar; 4– Continuar; 5-Ajuda ║
Jogo de Bingo
•
Requisitos específicos:
• O programa deve sortear os números da cartela do jogador humano de outras N cartelas de posse do computador
• Cada cartela possui 16 números organizados em 4 x 4 e para ganhar o bingo basta preencher uma linha completa, uma coluna completa ou uma diagonal completa
• O comportamento do jogo depende do nível de dificuldade:
• No nível de dificuldade “fácil” o computador fica com 2 outras cartelas
• No nível de dificuldade “difícil” o computador fica com 4 outras cartelas
• O programa deverá manter na tela as seguintes informações:
• O nível de dificuldade
• Exibição das cartelas com indicação dos números já sorteados
• A taxa de sucesso do jogador
• A taxa de sucesso é a quantidade médias de números sorteados na cartela quando as partidas acabam
• Indicações dos comandos para “Novo jogo”, “Gravar jogo”, “Continuar jogo” e “Sortear”, “Sair”
Jogo de Duelo de Guerreiros: exemplo
╔════════════════════════════════════════════════════╗ ║ Números sorteados: 01,07, 22, 31 ║ ║ ║
║ JOGO 1 JOGO 2 SEU JOGO ║
║ 03 06 08 09 02 03 06 08 X 02 04 09 ║ ║ 11 12 14 19 12 13 16 18 14 15 18 19 ║
║ X 26 28 29 21 23 26 28 X 23 24 29 ║
║ 30 32 38 39 32 33 36 38 X 32 34 39 ║
║ ║ ║ Taxa de sucesso: 9 números por jogo ║
╟────────────────────────────────────────────────────╢ ║ Comandos: ║ ║ 1–Novo; 2–Sair; 3–Gravar; 4– Continuar; 5-Sortear ║
Jogo de Palavras Cruzadas
•
Requisitos específicos:
• As palavras que serão oferecidas para o jogador descobrir devem ser obtidas a partir de uma lista de palavras contidas em um arquivo que será disponibilizada pelo professor
• O jogo deve sortear 20 palavras em cada partida
• O programa deve determinar aleatoriamente se uma palavra deve ficar na horizontal ou na vertical e determinar o cruzamento entre elas verificando se há letras em comum
• O programa deverá manter na tela as seguintes informações:
• As letras informadas em cada posição e as posições que estão em aberto com um *
• Quando uma palavra é descoberta corretamente, as letras devem ficar em maiúsculas, quando o palpite for temporário deve ficar em minúsculas
• A taxa de sucesso do jogador
• A taxa de sucesso é o tempo médio que ele leva para descobrir cada palavra
Jogo de Palavras Cruzadas: exemplo
╔═══════════════════════════════════════════════════╗ ║ 01 02 03 04 05 06 07 08 09 10 11 12 13 ...40 ║ ║ 01 * * * * * c 01 ║ ║ 02 * B E L I C H E * 02 ║ ║ 03 C A S A e i * 03 ║ ║ ...* S * L E A O ... ║
║ 40 * A * * * * * * * 40 ║
║ 01 02 03 04 05 06 07 08 09 10 11 12 13 ...40 ║
║ ║ ║ Taxa de sucesso: 2,5 minutos/palavra ║ ╟───────────────────────────────────────────────────╢ ║ Comandos: ║ ║ 1–Novo; 2–Sair; 3–Gravar; 4– Continuar; 5-Ajuda ║
Jogo da Velha Customizável
•
Requisitos específicos:
• O programa deve solicitar a qualtidade de linhas/colunas do jogo
• O jogo segue a mesma regra do jogo da velha tradicional, mas nesta versão uma linha/coluna/diagonal completa pode requerer mais posições além de 3
• O computador deve identificar corretamente o momento em que algum jogador ganha e finalizar a partida, com uma mensagem de saudação para o vencedor
• O programa deverá manter na tela as seguintes informações:
• A disposição da matriz do jogo com as posições já jogadas
• A rodada atual e de quem é a vez de jogar
• A taxa de sucesso do jogador
• A taxa de sucesso é a quantidade médias de jogadas necessárias nas partidas que ele ganhou
Jogo da Velha Customizável: exemplo
╔════════════════════════════════════════════════════╗ ║ Rodada 04. É a vez do jogador X ║ ║ ║
║ - - - ║
║ - X - O - ║
║ - X O - - ║
║ - - - ║
║ - - - ║
║ ║ ║ Taxa de sucesso: 15 rodadas por jogo ║
╟────────────────────────────────────────────────────╢ ║ Comandos: ║ ║ 1–Novo; 2–Sair; 3–Gravar; 4– Continuar ║
Dicas para Implementação dos Projetos: arquivos
•
Como ler e gravar dados em um arquivo texto?
• O primeiro passo é criar um ponteiro para o tipo FILE:
• FILE *fp;
• Para abrir o arquivo há uma função específica que retorno um ponteiro par FILE
• Depois de abrir o arquivo é possível ler e gravar dados nele
• Sintaxe:
• FILE *fopen(const char *filename, const char *mode);
• Exemplo para abrir o arquivo para leitura e gravação:
• FILE *fp;
• fp=fopen("/home/tutorialspoint/test.txt", “a+");
• Quando não precisar mais usar o arquivo, ele deve ser fechado!
Dicas para Implementação dos Projetos: arquivos
•
Possibilidades para o parâmetro “mode”:
•
Para ler e gravar dados no arquivo devem ser usados os
procedimentos fprintf e fscanf
• São irmãos do printf e scanf!
Modo Descrição
w Abre para gravação (o arquivo não precisa existir)
a Abre para acrescentar dados (o arquivo não precisa existir) r+ Abre para ler e gravar, a partir do início do arquivo
w+ Abre para ler e gravar, sobrescrevendo o arquivo
Dicas para Implementação dos Projetos: arquivos
INTRODUÇÃO À PROGRAMAÇÃO
Requisitos dos Projetos