Ir para o conteúdo
s e 7 e n

VB6 - 4 em Linha

Mensagens Recomendadas

s e 7 e n    0
s e 7 e n

Boas

Estou a fazer um trabalho pa escola onde tenho que fazer o jogo do 4 em Linha.

Vai a andar bem, mas agora estou na parte mais dificil.

Verificar quando é que algum jogador fez o 4 em LINHA.

Eu tenho uma Matriz de 5 por 6.

Todas as possições estam com o valor "0" inicialmente e quando o jogador 1 (Vermelho) mete uma peça, o lugar da peça na matriz recebe o valor "1".

Quando o jogador 2 (Amarelo) mete uma peça a matriz recebe o valor "2".

http://img39.imageshack.us/img39/1730/4linha1je.jpg

Exemplo do que tava a dizer.

Agora não tou a ver como fazer a verificação de quando estam as 4 peças da mesma cor seguidas.

Sera que me conseguem dar umas luzes???

Thanks

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
vbmaster    5
vbmaster

Bem, assim por alto. O primeiro que fazes a cada jogada executada é procurar um bloco com o valor 1 ou 2. Se estás a analisar o jogo do 1, experimenta desta maneira.

Assim que encontras uma casa com o valor 1, procura se as 3 casas a seguir (à frente) têm o valor 1, depois se as 3 anteriores têm, depois vais ter de verificar quantas casas de ambos os lados têm o vlaor 1, pois podes só ter 2 casas à direita e uma à esquerda e teres 4 em linha.

Para as diagonais vais ter de verificar subindo uma linha e tirando ou adicionando um valor.

Para as verticaiso processo é o mesmo que para as horizontais.

No fundo é código macaco, mas acho e semrpre achei que em programação o que interessa é desenvolver o código e não como foi feito.

Enfim...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
s e 7 e n    0
s e 7 e n

Tou a usar umas estruturas FOR e IF

Do genero:

A = Linha onde a peça entrou
B = 2

For X = 1 To 4
If TABELA(A, 1) = TABELA(A, B) Then
   B = B + 1
		If B = 4 Then
			MsgBox "GANHOU"
		End If
End If
Next X

E esta a trabalhar bem, mas so num sentido.

Agora eu queria por a fazer o For de 4 para 1. Em Pascal tinha o DownTo agora em VB n sei como fazer sito.

EDIT: Como é que esta a cena da syntax?? Ja meteram isso no forum?

É que isto assim não vai com nada :?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
David Pintassilgo    5
David Pintassilgo

Podes fazer o teste sempre no fim de cada jogada e por etapas.

Por exemplo:

'Testar orizontal'
Para x=1 to 8 Então   'comecar na linha de baixo e terminar na de cima
    se 1º=2º=3º=4
            ou
    se 2º=3º=4º=5º
            ou
    se 3º=4º=5º=6º
Seguinte

O mesmo para as linhas na Vertical, e as diagonais algo semelhante há-de dar tb.

Não é certamente o indicado a ser feito para ficar "como deve de ser" mas desenrasca ;) resta saber se te queres desenrascar ou se queres fazer uma coisa mesmo "como manda a lei".

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
pebat    1
pebat

eu kd fix o jogo do galo usei assim o metodo k o d_p ta a dizer uma porrada de if e ficou a funcionar... maneira mais facil nao sei mas k e uma maneira lenta digamos k sim

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
s e 7 e n    0
s e 7 e n

Pois tambem pode ser...

Mas até agora estou-me a dar bem com For's e If's que tenho estado a fazer.

Esse como dizem tambemé facil, mas vou ter que fazer muitos IF's.

Neste momento ja detecta alguns casos em k estao as 4 peças seguidas.

Penso que ate ao fim da proxima semana esteja operacional.

Vamos la ver como vai correr a semana

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
s e 7 e n    0
s e 7 e n

A noite correu bem ;)

Ja esta a verificar HORIZONTALMENTE e VERTICALMENTE.

Vamos ver se amanha lhe dou uns toques para as Diagonais, mas n me parece.

Os Testes estao a chegar. :?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
s e 7 e n    0
s e 7 e n

Sorry não ter dito nada mais cedo

Tenho estado a fazer uns testes aki a ver se tava tudo a correr bem e deparei-me que akilo tava a fazer as comparações mal ;)

Alterei o codigo o estilo que o d_pintassilgo disse.

Ficou assim:

A = Variavel que me indica a linha em que foi inserida a peça.

POS1 = 0

POS2 = 1

POS3 = 2

POS4 = 3

'----------------------------------------

'-----INICIO DA VERIFICAÇÃO-----

'----------------------------------------

'-------------------------------------

'----------HORIZONTAIS----------

'-------------------------------------

For K = 1 To 3

POS1 = POS1 + 1

POS2 = POS2 + 1

POS3 = POS3 + 1

POS4 = POS4 + 1

If TABELA(A, POS1) And TABELA(A, POS2) And TABELA(A, POS3) And TABELA(A, POS4) = "1" Then

MsgBox " GANHOU ", vbInformation, "GANHOU"

Exit For

End If

If TABELA(A, POS1) And TABELA(A, POS2) And TABELA(A, POS3) And TABELA(A, POS4) = "2" Then

MsgBox " GANHOU ", vbInformation, "GANHOU"

Exit For

End If

Next K

'-----------------------------------

'-----------VERTICAIS-----------

'-----------------------------------

B = 1

For X = 1 To 5 Step 1

If TABELA(A, 1) = TABELA(X, 1) Then

B = B + 1

If B = 5 Then

MsgBox " GANHOU ", vbInformation, "GANHOU"

End If

End If

Next X

Agora estou a reparar no codigo para verificar Verticalmente e não o estou a preceber :? mas esta a trabalhar.

Não estou a ver porque fiz aquilo assim ontem ?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade