Estou fazendo um trabalho da faculdade sobre um jogo de cartas, porém identifiquei um problema com os operadores lógico "E" e o "OU"
Veja a estrutura:
linha 40:faca{
//lógica do código
}linha 68:enquanto( )
Estou usando ao final a seguinte comparação:
_faça{
//lógica do código
}enquanto(contador_vitoria_mao_jog1 != 3ou _contador_vitoria_mao_jog2 != 3) //Porém não funciona
Essa duas variáveis globais:linha 33: _inteiro contador_vitoria_mao_jog1 = 0linha 34: _inteiro contador_vitoria_mao_jog2 = 0
Elas são incrementadas na seguinte função:Linha: 187 _funcao vencedormao(){
//lógica do código
}QUANDO UMA DELAS CHEGAR A 3 O JOGO DEVERIA PARAR
Então utilizo o operador lógico "OU" porém não funciona mas se utilizo a estrutura "E" funciona, mas não deveria.
Veja abaixo:
Estou usando ao final a seguinte comparação:
_faça{
//lógica do código
}enquanto(contador_vitoria_mao_jog_1 != 3 e contador_vitoria_mao_jog2 != 3) //Mas não poderia funcionar
Não sei se é alguma limitação do portugol ou eu que estou fazendo alguma coisa errada, mas testei vários métodos diferentes e o erro persiste acredito que algo esteja errado na IDE do PortugolWeb.
Código
programa {
inclua biblioteca Util --> u
inclua biblioteca Texto --> t
inteiro contador = 0
cadeia jogador1[3]
cadeia jogador2[3]
cadeia opcao
cadeia jogador_1_menu
cadeia jogador_2_menu
inteiro jogada = 0
inteiro acha_posicao = 0
inteiro carta_escolhida_1 = 0
inteiro carta_escolhida_2 = 0
logico uso_da_carta[40]
cadeia nome_de_cartas[40] = {
"1 DE PAUS", "2 DE PAUS", "3 DE PAUS", "4 DE PAUS", "5 DE PAUS", "6 DE PAUS", "7 DE PAUS", "10 DE PAUS", "11 DE PAUS", "12 DE PAUS",
"1 DE OURO", "2 DE OURO", "3 DE OURO", "4 DE OURO", "5 DE OURO", "6 DE OURO", "7 DE OURO", "10 DE OURO", "11 DE OURO", "12 DE OURO",
"1 DE ESPADA", "2 DE ESPADA", "3 DE ESPADA", "4 DE ESPADA", "5 DE ESPADA", "6 DE ESPADA", "7 DE ESPADA", "10 DE ESPADA", "11 DE ESPADA", "12 DE ESPADA",
"1 DE COPAS", "2 DE COPAS", "3 DE COPAS", "4 DE COPAS", "5 DE COPAS", "6 DE COPAS", "7 DE COPAS", "10 DE COPAS", "11 DE COPAS", "12 DE COPAS"}
inteiro pontuacao_das_cartas[40] = {
39, 36, 37, 28, 29, 30, 31, 32, 33, 34,
35, 36, 37, 28, 29, 30, 37, 32, 33, 34,
40, 36, 37, 28, 29, 30, 38, 32, 33, 34,
35, 36, 37, 28, 29, 30, 31, 32, 33, 34}
inteiro pontos_jogador1 = 0
inteiro pontos_jogador2 = 0
inteiro contador_vitoria_mao_jog_1 = 0
inteiro contador_vitoria_mao_jog_2 = 0
funcao inicio() {
inteiro mao = 1
menu()
faca{
escreva("\n-------- VAMO INCIAR A: ", mao++, "ª MÃO ---------")
entrega_tres_cartas(jogador1)
entrega_tres_cartas(jogador2)
para(inteiro rodada = 1; rodada < 4; rodada++) {
escreva("\n\n:::: JOGADA ", rodada, " :::::\n")
escreva("VEJA SUAS CARTAS: ", jogador_1_menu, "\n")
mostra_carta_para_jogadores(jogador1)
escreva("QUAL VOCÊ DESEJA JOGAR: ")
leia(jogada)
verificar_erro()
encontra_pontuacao_da_carta(jogador1)
verifica_jogada(jogador1, verdadeiro)
// Jogador 2
escreva("\n\nVEJA SUAS CARTAS: ", jogador_2_menu, "\n")
mostra_carta_para_jogadores(jogador2)
escreva("QUAL VOCÊ DESEJA JOGAR: ")
leia(jogada)
verificar_erro()
encontra_pontuacao_da_carta(jogador2)
verifica_jogada(jogador2, falso)
// Resultado da rodada
vitoria_da_mao()
}
// Resultado final do jogo
vencedor_mao()
reseta_cartas()
placar_do_jogo()
}enquanto(contador_vitoria_mao_jog_1 != 3 e contador_vitoria_mao_jog_2 != 3) //Comparação errada
verifica_ganhador()
}
funcao cadeia entrega_tres_cartas(cadeia vetor[]){
inteiro carta_sorteada
para(contador = 0; contador < 3; contador){
carta_sorteada = u.sorteia(0, 39)
se(uso_da_carta[carta_sorteada] == verdadeiro){
}senao{
vetor[contador] = nome_de_cartas[carta_sorteada]
contador++
uso_da_carta[carta_sorteada] = verdadeiro
}
}
retorne vetor
}
funcao verifica_ganhador(){
escreva("\nJOGO FINALIZADO! \n")
se(contador_vitoria_mao_jog_1 > contador_vitoria_mao_jog_2){
escreva("PARABÉNS, JOGADOR 1!")
}senao{
escreva("PARABÉNS, JOGADOR 2!")
}
}
funcao reseta_cartas(){
para(inteiro i = 0; i < 40; i++){
uso_da_carta[i] = falso
}
pontos_jogador1 = 0
pontos_jogador2 = 0
}
funcao placar_do_jogo(){
escreva("\n__ACOMPANHE O PLACAR DO JOGO__\n")
escreva("JOGADOR 01: ", contador_vitoria_mao_jog_1)
escreva("\nJOGADOR 02: ", contador_vitoria_mao_jog_2)
}
funcao vitoria_da_mao(){
se(carta_escolhida_1 > carta_escolhida_2){
escreva("\n\nVITÓRIA! PLAYER 01")
pontos_jogador1++
}
senao se(carta_escolhida_2 > carta_escolhida_1){
escreva("\n\nVITÓRIA! PLAYER 02")
pontos_jogador2++
}
senao{
escreva("\n\nEMPATE")
}
}
funcao cadeia mostra_carta_para_jogadores(cadeia jogador[]){
para(inteiro i = 0; i < 3; i++){
se(jogador[i] != " "){
escreva("[",i + 1,"] ", jogador[i], "\n")
}
}
retorne jogador
}
funcao cadeia encontra_pontuacao_da_carta(cadeia jogador[]){
para(inteiro i = 0; i < 40; i++){
se(jogador[jogada - 1] == nome_de_cartas[i]){
acha_posicao = i
}
}
retorne jogador
}
funcao verifica_jogada(cadeia jogador[], logico carta_escolhida){
se(jogada == 1){
escreva(jogador[0], " --> ", pontuacao_das_cartas[acha_posicao], " PONTOS")
se(carta_escolhida){
carta_escolhida_1 = pontuacao_das_cartas[acha_posicao]
}senao{
carta_escolhida_2 = pontuacao_das_cartas[acha_posicao]
}
jogador[0] = " "
}
se(jogada == 2){
escreva(jogador[1], " --> ", pontuacao_das_cartas[acha_posicao], " PONTOS")
se(carta_escolhida){
carta_escolhida_1 = pontuacao_das_cartas[acha_posicao]
}senao{
carta_escolhida_2 = pontuacao_das_cartas[acha_posicao]
}
jogador[1] = " "
}
se(jogada == 3){
escreva(jogador[2], " --> ", pontuacao_das_cartas[acha_posicao], " PONTOS")
se(carta_escolhida){
carta_escolhida_1 = pontuacao_das_cartas[acha_posicao]
}senao{
carta_escolhida_2 = pontuacao_das_cartas[acha_posicao]
}
jogador[2] = " "
}
}
funcao menu(){
escreva("::::::::: MENU :::::::::\n")
escreva("OLÁ!!!\n","SEJA BEM-VINDO[A] AO NOSSO JOGO\n", "[S] - Sim ou [N] - Não\n","DESEJA INICIAR O JOGO? ")
leia(opcao)
opcao = t.caixa_alta(opcao)
se(opcao == "S" ou opcao == "SIM"){
limpa()
escreva("--> ÓTIMO! INSIRA OS JOGADORES <--\n")
escreva("DIGITE O NOME DO 1º JOGADOR: ")
leia(jogador_1_menu)
escreva("DIGITE O NOME DO 2º JOGADOR: ")
leia(jogador_2_menu)
}
escreva("\nPLAYER 01: ", jogador_1_menu, "\nPLAYER 02: ", jogador_2_menu, "\n")
}
funcao vencedor_mao(){
escreva("\n\n:::: RESULTADO FINAL :::::\n")
escreva("Pontuação do Jogador 1: ", pontos_jogador1, "\n")
escreva("Pontuação do Jogador 2: ", pontos_jogador2, "\n")
se(pontos_jogador1 > pontos_jogador2) {
escreva("VITÓRIA DA MÃO! JOGADOR 1")
contador_vitoria_mao_jog_1++
} senao se(pontos_jogador2 > pontos_jogador1) {
escreva("VITÓRIA DA MÃO! JOGADOR 2")
contador_vitoria_mao_jog_2++
} senao {
escreva("EMPATE FINAL")
}
}
funcao verificar_erro(){
enquanto(jogada > 3 ou jogada < 1){
escreva("OPS! OPÇÃO INVÁLIDA\n")
escreva("QUAL VOCÊ DESEJA JOGAR: ")
leia(jogada)
}
}
}
Descrição do problema
Estou fazendo um trabalho da faculdade sobre um jogo de cartas, porém identifiquei um problema com os operadores lógico "E" e o "OU"
Veja a estrutura:
linha 40: faca{ //lógica do código } linha 68: enquanto( )
Estou usando ao final a seguinte comparação:
_faça{ //lógica do código }enquanto(contador_vitoria_mao_jog1 != 3 ou _contador_vitoria_mao_jog2 != 3) //Porém não funciona
Essa duas variáveis globais: linha 33: _inteiro contador_vitoria_mao_jog1 = 0 linha 34: _inteiro contador_vitoria_mao_jog2 = 0
Elas são incrementadas na seguinte função: Linha: 187 _funcao vencedormao(){ //lógica do código } QUANDO UMA DELAS CHEGAR A 3 O JOGO DEVERIA PARAR
Então utilizo o operador lógico "OU" porém não funciona mas se utilizo a estrutura "E" funciona, mas não deveria.
Veja abaixo:
Estou usando ao final a seguinte comparação: _faça{ //lógica do código }enquanto(contador_vitoria_mao_jog_1 != 3 e contador_vitoria_mao_jog2 != 3) //Mas não poderia funcionar
Não sei se é alguma limitação do portugol ou eu que estou fazendo alguma coisa errada, mas testei vários métodos diferentes e o erro persiste acredito que algo esteja errado na IDE do PortugolWeb.
Código
Comentários adicionais
No response