s e 7 e n Posted December 1, 2005 at 04:06 PM Report #7790 Posted December 1, 2005 at 04:06 PM 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
vbmaster Posted December 1, 2005 at 04:20 PM Report #7791 Posted December 1, 2005 at 04:20 PM 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...
s e 7 e n Posted December 1, 2005 at 04:34 PM Author Report #7792 Posted December 1, 2005 at 04:34 PM Humm OK Ja percebi mais ou menos o que fazer. Vou tentar fazer, se precisar de mais alguma coisa ja sei onde vir 😛 Thanks
s e 7 e n Posted December 1, 2005 at 06:30 PM Author Report #7795 Posted December 1, 2005 at 06:30 PM 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 :?
vbmaster Posted December 1, 2005 at 07:59 PM Report #7800 Posted December 1, 2005 at 07:59 PM Então fazes um for que comece em 4 e acabe em 1. :| o syntax está para breve espero....
s e 7 e n Posted December 1, 2005 at 08:11 PM Author Report #7801 Posted December 1, 2005 at 08:11 PM Humm :? Eu fiz isso, mas n deu. For X = 4 to 1 ... ... Next X Fiz assim?!?!?!
Anjo Posted December 1, 2005 at 08:18 PM Report #7802 Posted December 1, 2005 at 08:18 PM 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
s e 7 e n Posted December 1, 2005 at 10:00 PM Author Report #7809 Posted December 1, 2005 at 10:00 PM O downto não tem, foi a 1º coisa que testei. Agora esse com o step, vou experimentar. Thanks
David Pintassilgo Posted December 1, 2005 at 11:11 PM Report #7813 Posted December 1, 2005 at 11:11 PM 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//
pebat Posted December 2, 2005 at 02:30 AM Report #7818 Posted December 2, 2005 at 02:30 AM 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
s e 7 e n Posted December 2, 2005 at 09:02 PM Author Report #7861 Posted December 2, 2005 at 09:02 PM 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
s e 7 e n Posted December 2, 2005 at 11:34 PM Author Report #7881 Posted December 2, 2005 at 11:34 PM 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. :?
David Pintassilgo Posted December 2, 2005 at 11:37 PM Report #7883 Posted December 2, 2005 at 11:37 PM Já agora mete ai o codigo de como fixes-te a verificação... cool stuffs to check. http://blog.zxcoders.com//
s e 7 e n Posted December 3, 2005 at 08:28 PM Author Report #7981 Posted December 3, 2005 at 08:28 PM 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 ?
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now