Home › Fóruns › Programação Básica › ex068
- Este tópico contém 7 respostas, 4 vozes e foi atualizado pela última vez 2 anos, 2 meses atrás por Tutora Jessica.
-
AutorPosts
-
-
24 de julho de 2022 às 22:45 #98144Rafael Cipriano da SilvaParticipante
Consegui prosseguir com o jogo de boa, mas tive problema com o preenchimentos das bombas. Ocorre que quando eu coloco para sortear o comando executa o sorteio mas, se os números forem repetidos eu fico com bombas faltando. Como eu posso estar corrigindo isso?
OBS: É a primeira estrutura de repetição!
programa { inclua biblioteca Util --> u funcao inicio() { cadeia campoMinado[5][5], campoExibicao[5][5] inteiro linha, coluna, totBombas, comeco, fim = 5, x, y, pontuacao = 0 escreva("{ EXERCÍCIO 068 - Jogo do campo minado }\n") //Preenchimento das bombas. para(totBombas = 5; totBombas > 0; totBombas--) { para(totBombas = 5; totBombas > 0; totBombas--) { linha = sorteia(0, 4) coluna = sorteia(0, 4) campoMinado[linha][coluna] = "O" } escreva("\n") } //Preenchendo espaços vazios. para(linha = 0; linha < u.numero_linhas(campoMinado); linha++) { para(coluna = 0; coluna < u.numero_linhas(campoMinado); coluna++) { se(campoMinado[linha][coluna] != "O") { campoMinado[linha][coluna] = "-" } } } //Campo de exibição da primeira tela! para(linha = 0; linha < u.numero_linhas(campoExibicao); linha++) { para(coluna = 0; coluna < u.numero_colunas(campoExibicao); coluna++) { campoExibicao[linha][coluna] = "?" escreva(campoExibicao[linha][coluna], " ") } escreva("\n") } //Entrada das coordenadas. para(comeco = 1; comeco <= fim; comeco++) { escreva("----------------------------------------\n") escreva("Faça sua jogada: TENTATIVA ", comeco, " de ", fim, "\n") escreva("Linha: ") leia(x) escreva("Coluna: ") leia(y) //Teste para verificação de acertos se(campoMinado[x][y] != "O") { campoExibicao[x][y] = "V" campoMinado[x][y] = "V" pontuacao += 2 escreva("----------------------------------------\n") escreva("--> VOCÊ ACERTOU! Não acertou nenhuma bomba.\n") para(linha = 0; linha < u.numero_linhas(campoExibicao); linha++) { para(coluna = 0; coluna < u.numero_colunas(campoExibicao); coluna++) { escreva(campoExibicao[linha][coluna], " ") } escreva("\n") } se(pontuacao == 10) { escreva("PARABÉNS! Você ganhou e marcou um total de ", pontuacao, " pontos.\n") } //Teste de bombas disparadas } senao se(campoMinado[x][y] == "O") { escreva("----------------------------------------\n") escreva("--> VOCÊ ERROU! Uma bomba foi disparada.\n") para(linha = 0; linha < u.numero_linhas(campoMinado); linha++) { para(coluna = 0; coluna < u.numero_colunas(campoMinado); coluna++) { escreva(campoMinado[linha][coluna], " ") } escreva("\n") } escreva("Fim de jogo! Você perdeu e marcou um total de ", pontuacao, " pontos. \n") pare } } } }
-
25 de julho de 2022 às 15:22 #98213Tutora JessicaModerador
Olá Rafael,
Para esse tipo de situação oenquanto
se encaixa melhor, pois com opara
ele pode sortear duas vezes na mesma posição.
Então no preenchimento das bombas, use a função enquanto e veja se vai funcionar.
Depois nos dê o feedback se funcionou 🖖-
25 de julho de 2022 às 18:54 #98224Rafael Cipriano da SilvaParticipante
Consegui meu DEEEEEUUUUUUSSSSS, que incrível!
-
-
26 de julho de 2022 às 09:52 #98263Tutora JessicaModerador
Parabéns Rafael 🖖
-
26 de julho de 2022 às 11:39 #98287Felipe BarbourParticipante
Bom dia, rsrs….
Entaooo, eu consegui chegar ao resultado esperado, porém minha lógica está com um pequeno problema, as vezes ele sorteia 3 bombas ou 4 bombas, ao verificar a lógica do professor creio que eu fiz pelo caminho mais difícil, gostaria de um auxilio referente a minha lógica, segue abaixo:programa
{
inclua biblioteca Util –> u
funcao inicio()
{
inteiro totcerto = 0, tot=1
cadeia jogo[4][4]escreva(“{ EXERCÍCIO – 068 Jogo Campo Minado }\n”)
escreva (“BOMBA = O”)
escreva (“\nSua jogada = V\n”)
para (inteiro sort = 0; sort < u.numero_colunas(jogo); sort++){
inteiro l = u.sorteia(0, u.numero_linhas(jogo)-1)
inteiro c = u.sorteia(0, u.numero_colunas(jogo)-1)
jogo[l][c] = ” O ”
}
para (inteiro l = 0; l < u.numero_linhas(jogo); l++){
para (inteiro c = 0; c < u.numero_colunas(jogo); c++){
se (jogo[l][c] != ” O “){
jogo[l][c] = “-”
}
}
}
para (inteiro l = 0; l < u.numero_linhas(jogo); l++){
para (inteiro c = 0; c < u.numero_colunas(jogo); c++){
se (jogo[l][c] != ” V “){
escreva (” ? “)
}
}
escreva (“\n”)
}
escreva (“———————————————–“)
para (inteiro sort = 0; sort < u.numero_colunas(jogo); sort++){
inteiro l
inteiro c
escreva (“\nFaça sua jogada! (Tentativa: “, tot, “)\n”)
escreva (“LINHA = “)
leia (l)
escreva (“\nColuna = “)
leia (c)
escreva (“———————————————–“)
se (jogo[l][c] != ” O “){
escreva (“\n–> ATIROU CERTO! Não acertou nenhuma bomba!!\n”)
jogo[l][c] = ” V ”
totcerto+=2
tot++para ( l = 0; l < u.numero_linhas(jogo); l++){
para ( c = 0; c < u.numero_colunas(jogo); c++){
se (jogo[l][c] != ” V “){
escreva (” ? “)
} senao {
escreva (jogo[l][c])
}
}
escreva (“\n”)
}} senao {
se (jogo[l][c] == ” O “){
escreva (“\n–> TIRO ERRADO! Acertou uma BOMBA!!”)
escreva (“\n\n\n”)
escreva (“———————————————–“)
escreva (“\nFIM DO JOGO!\n”)
para (l = 0; l < u.numero_linhas(jogo); l++){
para (c = 0; c < u.numero_colunas(jogo); c++){
se (jogo[l][c] != ” O ” e jogo [l][c] != ” V “){
jogo[l][c] = ” – ”
}
escreva (jogo[l][c])
}
escreva (“\n”)
}
escreva (“\nVocê fez “, totcerto, ” pontos, em “, tot, ” tentativas!!\n”)
escreva (“———————————————–“)
pare
}
}
}
}
} -
26 de julho de 2022 às 14:24 #98294Tutora JessicaModerador
Olá Felipe, tudo bem?
Então, dê uma olhadinha no código acima do Rafael e te indico também a usar oenquanto
no sorteio das bombas.
Peço também para que quando for enviar o seu código, selecione a parte inteira do código e clique em CODE na caixinha aqui do fórum, que ai ele já vem formatado direitinho.
Tente dessa forma, usando o enquanto, caso tenha alguma dificuldade, só retornar ao fórum.
Bons estudos 🖖 -
13 de setembro de 2022 às 17:38 #101243Robson Lopes da SilvaParticipante
Olá pessoal!
Com a ajuda dos comentários acima, conseguir chegar a essa conclusão.
Vibrei muito! Mas se houver algo a melhor ou corrigir, ficarei feliz em saber.
Boas práticas.programa
{inclua biblioteca Util –> u
funcao inicio()
{
// DECRAÇÃO DE VARIÁVEIS E MATRIZES
logico bomba = falso
inteiro tentativa = 1
inteiro pontos = 0
caracter matriz[5][5]
caracter jogo_velha[5][5]
// PREENCHIMENTO MATRIZ JOGO DA VELHA
para(inteiro l = 0; l < u.numero_linhas(jogo_velha); l++){
para(inteiro c = 0; c < u.numero_colunas(jogo_velha); c++){
inteiro sorteio = sorteia(0,1)
se(sorteio == 1){
jogo_velha[l][c] = ‘O’
}senao{
jogo_velha[l][c] = ‘-‘
}
}
}
// MOSTRANDO MATRIZ PARA COMPARAÇÃO
para(inteiro l = 0; l < u.numero_linhas(matriz); l++){
para(inteiro c = 0; c < u.numero_colunas(matriz); c++){
matriz[l][c] = ‘?’
escreva(matriz[l][c] + ” “)
}
escreva(“\n”)
}
enquanto(bomba == falso){
inteiro linha
inteiro coluna
escreva(“——————————–\n”)
escreva(“Faça sua jogada! (Tentativa: ” + tentativa + “)\n”)
escreva(“LINHA = “)
leia(linha)
escreva(“COLUNA = “)
leia(coluna)
matriz[linha][coluna] = ‘O’
escreva(“——————————–\n”)
se(matriz[linha][coluna] == jogo_velha[linha][coluna]){
escreva(“–> TIRO ERRADO! Acertou uma bomba!\n”)
jogo_velha[linha][coluna] = ‘*’
bomba = verdadeiro
}senao{
escreva(“–> ATIROU CERTO! Não acertou nenhuma bomba!\n”)
jogo_velha[linha][coluna] = ‘V’
pontos+= 2
para(inteiro l = 0; l < u.numero_linhas(matriz); l++){
para(inteiro c = 0; c < u.numero_colunas(matriz); c++){
escreva(matriz[l][c] + ” “)
}
escreva(“\n”)
}
}
tentativa++
se(tentativa == 6){
bomba = verdadeiro
}
} // FIM ENQUANTO
escreva(“——————————–\n”)
escreva(“FIM DE JOGO!\n”)
para(inteiro l = 0; l < u.numero_linhas(jogo_velha); l++){
para(inteiro c = 0; c < u.numero_colunas(jogo_velha); c++){
escreva(jogo_velha[l][c] + ” “)
}
escreva(“\n”)
}
escreva(“Você fez ” + pontos + ” pontos em ” + (tentativa – 1) + ” tentativas.\n”)
escreva(“——————————–\n”)
}
} -
13 de setembro de 2022 às 17:48 #101244Tutora JessicaModerador
Ola Robson,
Parabéns pelo seu empenho, continue assim!!
Cada pessoa tem sua forma de programar, e todas as formas estão corretas, o mais importante é você entender o passo a passo e a lógica do exercício .
Bons estudos 🖖
-
-
AutorPosts
- Você deve fazer login para responder a este tópico.