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

Sign in to follow this  
s e 7 e n

VB6 - 4 em Linha

Recommended Posts

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

Share this post


Link to post
Share on other sites
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...

Share this post


Link to post
Share on other sites
s e 7 e n

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

Share this post


Link to post
Share on other sites
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 :?

Share this post


Link to post
Share on other sites
vbmaster

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

:|

o syntax está para breve espero....

Share this post


Link to post
Share on other sites
Anjo

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

Share this post


Link to post
Share on other sites
s e 7 e n

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

Agora esse com o step, vou experimentar.

Thanks

Share this post


Link to post
Share on other sites
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".


cool stuffs to check.

http://blog.zxcoders.com//

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites
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. :?

Share this post


Link to post
Share on other sites
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 ?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.