Caros amigos estou a fazer um jogo de damas em portugol
Como nao achei o topico certo , quero acreditar que os colegas que mechem com C sabe portugol
Estou com um problema , quando a peça meche mais de 1 vez , ela fica me branco , ou seja desaparece do jogo
Abaixo segue o codigo para analise do tabuleiro que esta em desenvolvimento
algoritmo "semnome"
// Função :
// Autor :
// Data : 8/6/2012
// Seção de Declarações
var
mesa: vetor[1..8,1..8] de caracter
reflexo: vetor[1..8,1..8] de caracter
i, j, x, y, val1, val2, val3, val4, a, b:inteiro
inicio
// Cria a tabela com as peças no lugar.
para i <- 1 ate 8 faca
escreval("") // Quebra coluna para ficar em 8 colunas ou invés de só 1
para j <- 1 ate 8 faca
mesa[i,j] <- "." // Declara a mesa toda como "."
se (i <=3) entao //comando
se (i) mod 2 = 1 entao //para
se (j) mod 2 = 0 entao //declarar
mesa[i,j] <- "p" //a posição
fimse //incial
senao //das peças
se (j) mod 2 = 1 entao //pretas
mesa[i,j] <- "p" //representadas
fimse //pela
fimse //letra "p"
fimse
se (i >=6)entao //comando
se (i) mod 2 = 0 entao //para
se (j) mod 2 = 1 entao //declarar
mesa[i,j] <- "b" //a posição
fimse //inicial
senao //das peças
se (j) mod 2 = 0 entao //brancas
mesa[i,j] <- "b" //representadas
fimse //pela
fimse //leta "b"
fimse
escreva(mesa[i,j]," ") // Imprime a mesa com todas a peças nas suas posições inciais
fimpara
fimpara
//Cria uma tabela identica a mesa, para ter uma que seja usada como
//um espelho e facilite a criar os codigos que iram movimentar as peças
para x <- 1 ate 8 faca
para y <- 1 ate 8 faca
reflexo[x,y] <- "."
se (x <=3) entao
se (x) mod 2 = 1 entao
se (y) mod 2 = 0 entao
reflexo[x,y] <- "p"
fimse
senao
se (y) mod 2 = 1 entao
reflexo[x,y] <- "p"
fimse
fimse
fimse
se (x >=6)entao
se (x) mod 2 = 0 entao
se (y) mod 2 = 1 entao
reflexo[x,y] <- "b"
fimse
senao
se (y) mod 2 = 0 entao
reflexo[x,y] <- "b"
fimse
fimse
fimse
fimpara
fimpara
repita
escreval("")
repita
escreval("Digite a localizacao da peca a mexer:")
leia (x, y) // Pega a posição da peça a ser movimentada
escreval("Digite o lugar para onde mover:")
leia (i, j) // Pega o local para onde a peça irá na tabela reflexo
se (x <= 8) e (y <= 8) e (i <= 8) e (j <= 8)entao //Condição que limita o movimento para somente uma posição que esteja dentro do tamanho da tabela
se mesa[i,j] = "." entao //Condição para execução desses comandos se a casa de destino for uma casa vazia
se (i = x-1) e (j = y-1) ou (i = x+1) e (j = y-1) ou (i = x-1) e (j = y+1) ou (i = x+1) e (j = y+1)entao //Condição para que o movimento seja sempre na diagonal e que nao seja mais d uma casa
mesa[i,j] <- reflexo[x,y] //Passa o valor da casa escolhida em reflexo para a mesa
i <- x
j <- y
mesa[i,j] <- "." //Faz com que depois de mexer a peça a casa onde a peça estava seja vazia
interrompa //Interronpe o repita depois que todas condições forem verdadeiras
senao
escreval("Movimento Inválido! Só pode movimentar as peças na diagonal e de uma em uma casa!") //Imprime essa mensagem se o movimento não for na diagonal ou se for com mais de uma casa
fimse
fimse
senao
escreval("Movimento Inválido! Use numeros de 1 a 8 para movimentar sua peça.") //Imprime essa mensagem se alguma das posições escolhidas não estiverem dentro do tamanho da matriz que é 8x8
fimse
fimrepita
limpatela
para i <- 1 ate 8 faca //Imprime a tabela
escreval("") //atualizada depois
para j <- 1 ate 8 faca //de ter movimentado
escreva(mesa[i,j]," ") //a peça da rodada
reflexo[x,y] <- mesa[i,j]
fimpara
fimpara
para i <- 1 ate 8 faca
para j <- 1 ate 8 faca
se (mesa[i,j] <> "p") ou (mesa[i,j] <> "b") ou (mesa[i,j] <> "P") ou (mesa[i,j] <> "B") entao //Termina o jogo quando não sobra éça nenhuma braca ou preta na tabela
interrompa
fimse
fimpara
fimpara
fimrepita
fimalgoritmo