Home › Fóruns › Programação Básica › M04A14 – Exercício 68 – Campo Minado – Avaliação
- Este tópico contém 1 resposta, 2 vozes e foi atualizado pela última vez 9 meses, 2 semanas atrás por Tutora Jessica.
-
AutorPosts
-
-
3 de fevereiro de 2024 às 09:48 #131285Thiago Gomes da FonsecaParticipante
Olá tudo bem? Eu gostaria de uma avaliação no meu código, conseguir fazer sozinho e funciona perfeitamente, existe algo a ser comentado, estilo, comportamento etc? Achei que deu linhas demais comparado a correção.
programa
{
inclua biblioteca Tipos –> t
inclua biblioteca Util –> ufuncao inicio()
{
escreva(“{ EXERCÍCIO 068 – Jogo Campo Minado }\n”)
//matriz 5 x 5
//cada vez que acerta um lugar que nao tem bomba eu ganho 2 pontos
//tem 5 tentativas
//tem 5 bombas//Declaração de variáveis
cadeia teclado
caracter mat [5][5] //Tamanho do campo minado
inteiro L = 0, C = 0, soma = 0, tentativa = 0, pontos = 0, resultado = 1//Criação da matriz campo minado
enquanto (soma < 5) { //Quantidade de bombas
L = sorteia (0, u.numero_linhas(mat) – 1)
C = sorteia (0, u.numero_colunas(mat) – 1)
mat [L][C] = ‘B’ //Coloca ‘B’ onde tem bomba
//Conta quantas bombas tem
soma = 0
para (L = 0; L < u.numero_linhas(mat); L ++) {
para (C = 0; C < u.numero_colunas(mat); C ++) {
se (mat [L][C] == ‘B’) {
soma ++
}
}
}
//Coloca ‘-‘ onde não tem bomba
para (L = 0; L < u.numero_linhas(mat); L++) {
para (C = 0; C < u.numero_colunas(mat); C ++) {
se (mat [L][C] != ‘B’) {
mat [L][C] = ‘-‘
}
}
}
}//Escreve na tela o campo preenchido com ?
escreva(” “)
para (C = 0; C < u.numero_colunas(mat); C ++) { //Escreve o título da coluna
escreva(C + 1 + ” “)
}
escreva(“\n\n”)para (L = 0; L < u.numero_linhas(mat); L ++) { //Escreve o título da linha
para (C = 0; C < u.numero_colunas(mat); C ++) {
se (C == 0) {
escreva((L + 1) + ” “)
}
escreva(“?” + ” “)
}
escreva(“\n”)
}//Tentativas
escreva(“\n—————————————-\n”)
para (tentativa = 0; tentativa < 5; tentativa ++) { //Número de tentativas
escreva(“\nFaça sua jogada! (Tentativa ” + (tentativa + 1) + “)\n”)//Verificação se já tinha bomba
enquanto (verdadeiro) {//Validação se é linha válida
enquanto (verdadeiro) {
escreva(“LINHA = “)
leia(teclado)
se (t.cadeia_e_inteiro(teclado, 10)) {
L = t.cadeia_para_inteiro(teclado, 10) – 1
se (L >= 0 e L <= u.numero_linhas(mat) – 1) {
pare
} senao {
escreva(“<< Opção inválida >>\n”)
}
} senao {
escreva(“<< Opção inválida >>\n”)
}
}//Validação se é coluna válida
enquanto (verdadeiro) {
escreva(“COLUNA = “)
leia(teclado)
se (t.cadeia_e_inteiro(teclado, 10)) {
C = t.cadeia_para_inteiro(teclado, 10) – 1
se (C >= 0 e C <= u.numero_colunas(mat) – 1) {
pare
} senao {
escreva(“<< Opção inválida >>\n”)
}
} senao {
escreva(“<< Opção inválida >>\n”)
}
}//Verifica se a coordenada já tinha sido escolhida
se (mat [L][C] == ‘-‘ ou mat [L][C] == ‘B’) {
pare
} senao {
escreva(“Esse já foi\n”)
}
}//Se acertou ou não na bomba
se (mat [L][C] == ‘B’) {
escreva(“\n—————————————-\n”)
escreva(“\nTIRO ERRADO! Acertou uma bomba!\n”)
tentativa ++
mat [L][C] = ‘X’ //Marca com X ao acertar na bomba
escreva(“\n—————————————-\n”)
escreva(” “)
para (C = 0; C < u.numero_colunas(mat); C ++) { //Escreve o título da coluna
escreva(C + 1 + ” “)
}
escreva(“\n\n”)
para (L = 0; L < u.numero_linhas(mat); L ++) {
para (C = 0; C < u.numero_colunas(mat); C ++) {
se (C == 0) { //Escreve o título da linha
escreva((L + 1) + ” “)
}
escreva(mat [L][C] + ” “)
}
escreva(“\n”)
}
pare
} senao {
escreva(“\n—————————————-\n”)
escreva(“\nATIROU CERTO! Não acertou nenhuma bomba!\n\n”)
pontos += 2
mat [L][C] = ‘V’ //Marca com V ao não acertar na bomba
escreva(” “)
para (C = 0; C < u.numero_colunas(mat); C ++) { //Escreve o título da coluna
escreva(C + 1 + ” “)
}
escreva(“\n\n”)
para (L = 0; L < u.numero_linhas(mat); L ++) {
para (C = 0; C < u.numero_colunas(mat); C ++) {
se (C == 0) { //Escreve o título da linha
escreva((L + 1) + ” “)
}
se (mat [L][C] == ‘V’) {
escreva(“V” + ” “)
} senao {
escreva(“?” + ” “)
}
}
escreva(“\n”)
}
}
}//Fim do jogo
escreva(“\n—————————————-\n”)
escreva(“\nFIM DO JOGO!\n”)//Verifica de ganhou ou perdeu
para (L = 0; L < u.numero_linhas(mat); L ++) {
para (C = 0; C < u.numero_colunas(mat); C ++) {
se (mat [L][C] == ‘X’) {
resultado = 0
}
}
}
se (resultado == 0) {
escreva(“\nVocê perdeu”)
} senao {
escreva(“\nVocê ganhou”)
}
escreva(“\nVocê fez ” + pontos + ” pontos em ” + tentativa + ” tentativas”)}
} -
5 de fevereiro de 2024 às 10:20 #131392Tutora JessicaModerador
Olá Thiago, sim ficou bem comprido o código, procure sempre soluções para tentar diminuir seu código, pois pensa no futuro um código muito grande, com muitas etapas, para encontrar um erro fica mais difícil.
Nesse início o importante é você conseguir concluir o exercício e como foi dito: funcionando perfeitamente (isso é o mais importante).
Te sugiro prestar bastante a atenção nas explicações dos exercícios para ajudar a começar a diminuir seu código, lembrando que o mais importante é entender todas as etapas do seu código (não é um erro estar com o código grande).
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.