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, 7 meses atrás por
Tutora Jessica.
-
AutorPosts
-
-
24 de julho de 2022 às 22:45 #98144
Rafael Cipriano da Silva
ParticipanteConsegui 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 #98213
Tutora Jessica
ModeradorOlá 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 #98224
Rafael Cipriano da Silva
ParticipanteConsegui meu DEEEEEUUUUUUSSSSS, que incrível!
-
-
26 de julho de 2022 às 09:52 #98263
Tutora Jessica
ModeradorParabéns Rafael 🖖
-
26 de julho de 2022 às 11:39 #98287
Felipe Barbour
ParticipanteBom 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 #98294
Tutora Jessica
ModeradorOlá 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 #101243
Robson Lopes da Silva
ParticipanteOlá 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 #101244
Tutora Jessica
ModeradorOla 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.