• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

s e 7 e n

VB6 - 4 em Linha

14 mensagens neste tópico

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Humm

OK

Ja percebi mais ou menos o que fazer.

Vou tentar fazer, se precisar de mais alguma coisa ja sei onde vir :P

Thanks

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 :?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Então fazes um for que comece em 4 e acabe em 1.

:|

o syntax está para breve espero....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Humm :?

Eu fiz isso, mas n deu.

For X = 4 to 1

...

...

Next X

Fiz assim?!?!?!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Não me lembro se o vb tem o down to

for x = 4 downto 1
...
...
next x

ou entao

for x = 4 to 1 step - 1
...
...
next x

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O downto não tem, foi a 1º coisa que testei.

Agora esse com o step, vou experimentar.

Thanks

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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".

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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. :?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já agora mete ai o codigo de como fixes-te a verificação...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

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 ?

0

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