Lab 2: Scrabble
Você pode colaborar com um ou dois colegas de classe neste laboratório, embora seja esperado que todos os alunos em qualquer grupo contribuam igualmente para o trabalho.
Determine qual das duas palavras do Scrabble vale mais.
$ ./scrabble
Player 1: COMPUTER
Player 2: science
Player 1 wins!
Começando
Abra o VS Code.
Comece clicando dentro da janela do terminal e, em seguida, execute cd
por si só. Você deve encontrar que seu "prompt" se
assemelha ao abaixo.
$
Clique dentro dessa janela de terminal e execute
wget https://cdn.cs50.net/2022/fall/labs/2/scrabble.zip
digite Enter para baixar um arquivo ZIP chamado scrabble.zip
em seu espaço de códigos. Tenha cuidado para
não ignorar o espaço entre wget
e a URL seguinte, ou
qualquer outro caractere!
Agora execute
unzip scrabble.zip
para criar uma pasta chamada scrabble
. Você não precisa
mais do arquivo ZIP, então pode executar
rm scrabble.zip
e responda com "y" seguido de Enter no prompt para remover o arquivo ZIP que você baixou.
Agora digite
cd scrabble
seguido de Enter para entrar (ou seja, abrir) nesse diretório. Seu prompt agora deve se parecer com o abaixo.
scrabble/ $
Se tudo foi bem sucedido, você deve executar
ls
e você deve ver um arquivo chamado scrabble.c
. Abra
esse arquivo executando o comando abaixo:
code scrabble.c
Se você tiver algum problema, siga estas mesmas etapas novamente e veja se consegue determinar onde errou!
Contexto
No jogo de Scrabble, os jogadores criam palavras para marcar pontos, e o número de pontos é a soma dos valores de ponto de cada letra na palavra.
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 3 | 3 | 2 | 1 | 4 | 2 | 4 | 1 | 8 | 5 | 1 | 3 | 1 | 1 | 3 | 10 | 1 | 1 | 1 | 1 | 4 | 4 | 8 | 4 | 10 |
Por exemplo, se quisermos pontuar a palavra Code
,
observamos que, de acordo com as regras gerais do Scrabble, a letra C
vale 3
pontos, o o
vale 1
ponto, o d
vale 2
pontos e o e
vale 1
ponto. Somando tudo isso, temos que Code
vale 3 + 1 + 2 + 1 = 7
pontos.
Detalhes de Implementação
Completar a implementação de scrabble.c
, de forma que
determine o vencedor de um jogo curto semelhante ao Scrabble, em que dois jogadores entram com suas palavras e o
jogador com a maior pontuação vence.
- Observe que os valores de pontos de cada letra do alfabeto estão armazenados em um array de
inteiros chamado
POINTS
.- Por exemplo,
A
oua
vale 1 ponto (representado porPOINTS[0]
),B
oub
vale 3 pontos (representado porPOINTS[1]
), etc.
- Por exemplo,
- Observe que criamos um protótipo para uma função auxiliar chamada
compute_score()
que recebe uma string como entrada e retorna umint
. Sempre que quisermos atribuir valores de pontos a uma palavra específica, podemos chamar essa função. Observe que esse protótipo é necessário para que C saiba quecompute_score()
existe mais tarde no programa. - Em
main()
, o programa solicita que os dois jogadores informem suas palavras usando a funçãoget_string()
. Esses valores são armazenados em variáveis chamadasword1
eword2
. - Em
compute_score()
, seu programa deve calcular, usando o arrayPOINTS
, e retornar a pontuação para o argumento da string. Caracteres que não são letras devem receber zero pontos, e letras maiúsculas e minúsculas devem receber os mesmos valores de ponto.- Por exemplo,
!
vale0
pontos enquantoA
ea
valem ambos1
ponto. - Embora as regras do Scrabble normalmente exijam que uma palavra esteja no dicionário, não é necessário verificar isso neste problema!
- Por exemplo,
- Em
main()
, seu programa deve imprimir, dependendo das pontuações dos jogadores,Player 1 wins!
,Player 2 wins!
ouTie!
.
Dicas
-
Você pode achar as funções
isupper()
eislower()
úteis. Essas funções recebem um caractere como argumento e retornam um valor booleano. -
Para encontrar o valor no índice
n
de um array chamadoarr
, podemos escreverarr[n]
. Podemos aplicar isso às strings também, já que as strings são arrays de caracteres. -
Lembre-se de que os computadores representam caracteres usando ASCII, um padrão que representa cada caractere como um número.
Como Testar seu Código
Seu programa deve se comportar de acordo com os exemplos abaixo.
$ ./scrabble
Player 1: Question?
Player 2: Question!
Tie!
$ ./scrabble
Player 1: Oh,
Player 2: hai!
Player 2 wins!
$ ./scrabble
Player 1: COMPUTER
Player 2: science
Player 1 wins!
$ ./scrabble
Player 1: Scrabble
Player 2: wiNNeR
Player 1 wins!
Execute o código abaixo para avaliar a correção do seu código usando o check50
. Mas certifique-se de compilar e testar por conta
própria também!
check50 cs50/labs/2023/x/scrabble
Execute o comando abaixo para avaliar o estilo do seu código utilizando o style50
.
style50 scrabble.c
Como enviar
No seu terminal, execute o comando abaixo para enviar o seu trabalho.
submit50 cs50/labs/2023/x/scrabble