Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Computação Cientifica
Jogo do galo
INTEGRANTES DO GRUPO
CURSO:
DOCENTE:
TURMA: EQM– M1
Página 2 de 32
Introdução
O jogo da velha é um jogo muito simples, geralmente jogado com caneta e papel, por
duas pessoas. Uma pessoa representa suas jogadas por um X e outra por um círculo.
Aqui, ilustraremos estes símbolos com as letras X e O. Se o jogador fizer uma
combinação de três símbolos em uma linha ou diagonal, ele vence.
O princípio deste jogo aqui é o mesmo. A “inteligência artificial” será utilizada para o
computador confrontar o jogador. Ou seja, não haverá duas pessoas, como de costume,
neste jogo. Será o jogador contra o computador.
Este capítulo não introduz muitos conceitos novos, mas aprimora a habilidade para
desenvolver jogos. Afinal, o principal de um jogo não é apenas o uso de recursos
gráficos e sonoros, mas uma boa lógica, funcionando adequadamente.
Objetivo
Página 3 de 32
Objectivo Geral
Criar um algoritmo do jogo do jogo do galo
Objectivos específicos
Criar o algoritmo do jogo da velha e inovar o algoritmo
Para este projecto do jogo da velha o nosso grupo baseou-se na ideia de (Imguvoss e
KhaosDoctor) em que o algoritmo apresentou diversas melhorias.
algoritmo "Jogodogalo"
var
Numerodejogadas : inteiro
Jogadavalortemp : inteiro
Jogadavalor : inteiro
Jogadoratual : inteiro
Outrojogador : inteiro
Contador : inteiro
Jogadasvalidas : inteiro
Jogadavalorretorno : inteiro
_JogadaInvalida : inteiro
Rodada: caractere
Listajogadasvalidas:vetor[1..10] de inteiro
Posicaovetor:vetor[1..3,1..3] de caractere
var
valorAtual : inteiro
Página 5 de 32
inicio
jogadaValorRetorno <- 0
se tabuleiro[7] = 0 entao
jogadaValorRetorno <- 7
senao
se tabuleiro[8] = 0 entao
jogadaValorRetorno <- 8
senao
jogadaValorRetorno <- 9
fimSe
fimSe
fimSe
se tabuleiro[4] = 0 entao
jogadaValorRetorno <- 4
senao
se tabuleiro[5] = 0 entao
jogadaValorRetorno <- 5
senao
jogadaValorRetorno <- 6
fimSe
fimSe
Página 6 de 32
fimSe
se tabuleiro[1] = 0 entao
jogadaValorRetorno <- 1
senao
se tabuleiro[2] = 0 entao
jogadaValorRetorno <- 2
senao
jogadaValorRetorno <- 3
fimSe
fimSe
fimSe
se tabuleiro[7] = 0 entao
jogadaValorRetorno <- 7
senao
se tabuleiro[4] = 0 entao
jogadaValorRetorno <- 4
senao
jogadaValorRetorno <- 1
fimSe
fimSe
fimSe
se tabuleiro[8] = 0 entao
jogadaValorRetorno <- 8
senao
se tabuleiro[5] = 0 entao
jogadaValorRetorno <- 5
senao
jogadaValorRetorno <- 2
fimSe
fimSe
fimSe
se tabuleiro[9] = 0 entao
jogadaValorRetorno <- 9
senao
se tabuleiro[6] = 0 entao
jogadaValorRetorno <- 6
senao
jogadaValorRetorno <- 3
fimSe
fimSe
fimSe
se tabuleiro[7] = 0 entao
retorne 7
senao
Página 8 de 32
se tabuleiro[5] = 0 entao
jogadaValorRetorno <- 5
senao
jogadaValorRetorno <- 3
fimSe
fimSe
fimSe
se tabuleiro[9] = 0 entao
jogadaValorRetorno <- 9
senao
se tabuleiro[5] = 0 entao
jogadaValorRetorno <- 5
senao
jogadaValorRetorno <- 1
fimSe
fimSe
fimSe
retorne jogadaValorRetorno
senao
retorne _jogadaInvalida
fimSe
fimfuncao
Página 9 de 32
inicio
jogadaValor <- 0
se numeroDeJogadas = 9 entao
jogadaValor <- 1
retorne jogadaValor
fimSe
//retorne jogadaValor
fimSe
retorne jogadaValor
fimSe
jogadaValor <- 1
retorne jogadaValor
fimSe
jogadaValor <- 2
retorne jogadaValor
fimSe
fimSe
// chance de vitoria
se tabuleiro[5] = 0 entao
jogadaValor <- 5
senao
se tabuleiro[1] = 0 entao
jogadaValor <- 1
senao
jogadaValor <- 8
fimSe
fimSe
senao
se jogadaValor = 0 entao
se tabuleiro[5] = 0 entao
jogadaValor <- 5
senao
se tabuleiro[7] = 0 entao
jogadaValor <- 7
senao
se tabuleiro[9] = 0 entao
jogadaValor <- 9
senao
se tabuleiro[1] = 0 entao
jogadaValor <- 1
senao
se tabuleiro[3] = 0 entao
jogadaValor <- 3
fimSe
fimSe
fimSe
fimSe
fimSe
retorne jogadaValor
fimSe
fimSe
fimSe
PupulaListaDeJogadasValidas()
se (jogadasValidas = 1) entao
retorne jogadaValor
fimSe
//Se Nenhuma das regras não forem atendidas, jogue a primeira jogada
retorne jogadaValor
senao
retorne jogadasValidas
fimSe
fimfuncao
procedimento PupulaListaDeJogadasValidas
inicio
//limpa variável
ListaJogadasValidas[contador] <- 0
fimPara
Página 13 de 32
//Preenche a variável
ListaJogadasValidas[1] <- 0
se tabuleiro[contador] = 0 entao
fimSe
fimPara
fimProcedimento
inicio
se jogador = -1 entao
retorne 1
senao
retorne -1
fimSe
fimfuncao
//Cabeçalho do jogo
procedimento Cabecalho
inicio
escreval("*********ADILSON**PASSOS****JOEL**KAYAYA***PEDRO**SOL
ADY***RICARDO**GOUVEIA******************")
Página 14 de 32
escreval("************************************
*********************************************************")
escreval("")
escreval("")
fimprocedimento
procedimento limparVariaveis
inicio
tabuleiro[contador] <- 0
fimPara
fimprocedimento
procedimento ExibirTabuleiro
Página 15 de 32
inicio
escreval("--------+---------+-------")
escreval("--------+---------+-------")
escreval("")
escreval("")
fimprocedimento
inicio
Página 16 de 32
se linha = 0 entao
fimPara
fimPara
senao
fimPara
fimSe
fimfuncao
procedimento VerificaGanhador
inicio
senao
senao
senao
senao
senao
senao
senao
senao
senao
senao
senao
senao
senao
senao
senao
senao
fimSe
fimSe
fimSe
fimSe
fimSe
fimSe
Página 21 de 32
fimSe
fimSe
fimSe
fimSe
fimSe
fimSe
fimSe
fimSe
fimSe
fimSe
fimSe
fimprocedimento
procedimento Parabens
inicio
Cabecalho()
ExibirTabuleiro()
escreval("")
escreval("")
escreval("")
Página 22 de 32
leia(rodada)
limparVariaveis()
senao
escreval("")
escreval("")
escreval("")
leia(rodada)
limparVariaveis()
fimSe
fimprocedimento
inicio
retorne "invalido"
fimSe
escolha posicaoPeca
caso 7
posicaoVetor[3,1] <-
tipoDeCaractere
retorne "ok"
senao
retorne "ocupado"
fimSe
caso 8
posicaoVetor[3,2] <-
tipoDeCaractere
retorne "ok"
senao
retorne "ocupado"
fimSe
caso 9
posicaoVetor[3,3] <-
tipoDeCaractere
retorne "ok"
senao
retorne "ocupado"
fimSe
caso 4
posicaoVetor[2,1] <-
tipoDeCaractere
retorne "ok"
senao
retorne "ocupado"
fimSe
caso 5
posicaoVetor[2,2] <-
tipoDeCaractere
retorne "ok"
senao
retorne "ocupado"
fimSe
caso 6
posicaoVetor[2,3] <-
tipoDeCaractere
Página 25 de 32
retorne "ok"
senao
retorne "ocupado"
fimSe
caso 1
posicaoVetor[1,1] <-
tipoDeCaractere
retorne "ok"
senao
retorne "ocupado"
fimSe
caso 2
posicaoVetor[1,2] <-
tipoDeCaractere
retorne "ok"
senao
retorne "ocupado"
fimSe
caso 3
posicaoVetor[1,3] <-
tipoDeCaractere
retorne "ok"
senao
retorne "ocupado"
fimSe
fimescolha
fimfuncao
procedimento ExibirPontuacaoJogadores
inicio
escreval(" Pontuação:")
escreval("")
fimprocedimento
inicio
_jogadaInvalida <- -1
Cabecalho()
escreval("Selecione um Jogo:")
escreval("")
escreval("1 - Um Jogador")
Página 27 de 32
escreval("3 - Sair")
escreval("")
leia(opcao)
limpatela
Cabecalho()
se opcao = 1 entao
leia(jogadorX)
fimSe
se opcao = 2 entao
leia(jogadorX)
leia(jogadorO)
fimSe
se opcao = 3 entao
fimalgoritmo
fimSe
limpatela
limparVariaveis()
jogadorAtual <- -1
pontuacaoO <- 0
pontuacaoX <- 0
limpatela
Cabecalho()
ExibirTabuleiro()
ExibirPontuacaoJogadores()
escreva("Digite um número de 1 a 9 de
acordo com as casas: ")
leia(posicaoX)
//tabuleiro[posicaoX] <- -1
Página 29 de 32
senao
jogadorAtual <- 1
fimSe
senao
se opcao = 1 entao
//escreva("Digite um número de 1 a 9 de
acordo com as casas: ")
//leia(posicaoO)
//tabuleiro[posicaoO] <- 1
senao
escreva("Digite um número de 1 a 9 de
acordo com as casas: ")
leia(posicaoO)
fimSe
senao
Página 30 de 32
jogadorAtual <- -1
fimSe
fimSe
limpatela
VerificaGanhador()
Parabens()
fimSe
fimenquanto
fimalgoritmo
Representando o tabuleiro
Primeiro, devemos descobrir como representar o tabuleiro como uma variável. No
papel, cruzamos duas linhas horizontais com duas verticais e preenchemos os espaços
em branco, com cada símbolo representando cada jogador.
No programa, vamos representá-lo como uma lista de letras. Cada letra representará
uma das nove posições do tabuleiro. Iremos numerá-las da mesma forma que um
teclado numérico, para que seja fácil lembrarmos cada posição. Veja a figura 2
Os símbolos que representarão os jogadores serão as letras ’X’ e ’O’ e uma letra de
espaço ’ ’ representará as casas em que não foi feita uma jogada ainda.
Raciocínio do jogo
4. Verifica se o centro está livre. Se estiver, a jogada vai para esta posição. Caso
contrário, seguir próximo passo.
5. A jogada irá para qualquer outra posição dos lados (2, 4, 6 ou 8). Não há mais passos,
pois, ao chegar nesta alternativa, o computador já verificou se poderia ocupar qualquer
outra posição disponível no tabuleiro.
Finalizando o jogo
No fim do bloco que caracteriza a execução do jogo, há um se para o jogador escolher
jogar novamente. Esta escolha é permitida pela função jogar novamentee, se o jogador
desejar, que inicia o jogo continua executando. Senão, é interrompido e o programa
termina.
Página 32 de 32
Conclusão