[FECHAR] 4 em Linha

ShaoZ

Power Member
Olá a todos :D

Após concluir o jogo do galo decidi criar um jogo parecido (4 em Linha).

O problema é que eu clico no botão para aparecer uma peça e o programa deixa de responder

my.php


Código:
Dim jogador As String
    Dim c_1 As Integer = 0

Private Sub c1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c1.Click

        If (jogador = 1) Then

            Button1.Enabled = False
            Button1.Visible = True
            Button1.BackColor = Color.Blue


            jogador = 2
            tabuleiro(0, 0) = 1
            c_1 = c_1 + 1
        Else

            Button1.Enabled = False
            Button1.Visible = True
            Button1.BackColor = Color.Red

            jogador = 1
            tabuleiro(0, 0) = 2
            c_1 = c_1 + 1
        End If
end sub
Depois tem mais codigo, tipo, se c_1 = 2 e mostra o codigo outra vez mas para outro botão

Será que tou a fazer alguma coisa mal???
 
Última edição:
Boas!

Uma questão, qual o nome dos teus botões? c1, certo? porque raio desactivas o Button1?

Já agora, para evitares código repetido, usa arrays de botões, e usa o index com proveito. É uma excelente forma de encurtar o código ;)

abraços, HecKel
 
Boas!

Uma questão, qual o nome dos teus botões? c1, certo? porque raio desactivas o Button1?

Já agora, para evitares código repetido, usa arrays de botões, e usa o index com proveito. É uma excelente forma de encurtar o código ;)

abraços, HecKel

não akeles espaços a branco são botões desactivados, quando o utilizador clica no botão de cima o botão desactivado transforma-se numa peça do jogo
 
É pá, e como controlas quando fica uma peça por cima da outra?

Eu fiz esse mesmo jogo, mas não andei a usar labels nem botões a torto e a direito. Usa mesmo shapes, e controla a posição das mesmas.

Se insistires por usar botões, usa o array como te disse.

Sobre o código, porque raio o jogador é uma string se usas como inteiro? e para que serve o c_1?

abraços, HecKel
 
As labels é para me orientar :D

O c_1 é para se o botão 1 estiver utilizado passa para o botão 2 pelo menos era o que eu queria fazer :wink:
 
hummm, não percebi :x Falas das colunas? Mas tu estás a dizer explicitamente que é o botão 1 que estás a colocar visivel, tenta fazer o código mais organizado, da forma como julgo que vais implementar, vais repetir o mesmo código umas 16 vezes..., para quê tanta coisa?

Apenas tens de controlar o seguinte:
- O jogador escolheu jogar na coluna X, então fazer o seguinte
- - Verificar se essa coluna está cheia
- - - Se sim, manda mensagem de erro
- - - Se não, vê qual é a linha em que vai ficar a jogada e alterar o botão dessa linha

Só isto! Se usares arrays de botões, isso facilita-te e muito o trabalho.

Depois disso feito, é que tens de pensar em validar jogadas, se ganha ou não. Mas isso é lá mais para a frente ;)

abraços, HecKel
 
Se insistires por usar botões, usa o array como te disse.
Em .NET é complicado criar arrays. Têm que ser feitos manualmente:

Código:
Dim botao() As Button

Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  ReDim botao(42)  '42 = 6 * 7

  For i as Integer = 1 to 42
    botao(i) = New Button
    botao(i).Size = New System.Drawing.Size(valor_x, valor_y)
    'propriedade = valor
    'propriedade = valor
    'propriedade = valor
    '(...)
  Next

  Me.Controls.AddRange(botao)

  botao(1).Location = New System.Drawing.Point(valor_x, valor_y)
  botao(2).Location = New System.Drawing.Point(valor_x, valor_y)
  botao(3).Location = New System.Drawing.Point(valor_x, valor_y)
  '(...)

End Sub
E se for um array com eventos, complica um pouco mais, porque tem que se criar uma nova classe que herda as características do "Button" e programar as respostas aos eventos, dentro dessa classe.

Mas que o código fica mais robusto, isso é verdade, pois pode-se fazer tudo à base de loops. Já me deu muito jeito em alguns programas. ;)
 
Última edição:
acho que vou desistir deste projecto pois estou a ver que não percebo nada disto :'(

Fica aqui o codigo que fiz ate agora para voces verem :arrow:

Código:
Public Class Form1

    Dim jogador As String
    Dim c_1 As Integer = 0
    Dim c_2 As Integer = 0
    Dim c_3 As Integer = 0
    Dim c_4 As Integer = 0
    Dim c_5 As Integer = 0
    Dim c_6 As Integer = 0
    Dim c_7 As Integer = 0


    Dim tabuleiro(6, 5) As String

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    End Sub

    Private Sub c1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c1.Click

        If (jogador = 1) Then

            Button1.Enabled = False
            Button1.Visible = True
            Button1.BackColor = Color.Blue


            jogador = 2
            tabuleiro(0, 0) = 1

        Else

            Button1.Enabled = False
            Button1.Visible = True
            Button1.BackColor = Color.Red

            jogador = 1
            tabuleiro(0, 0) = 2

        End If

        If (jogador = 1) Then

            Button8.Enabled = False
            Button8.Visible = True
            Button8.BackColor = Color.Blue


            jogador = 2
            tabuleiro(0, 1) = 1

        Else

            Button8.Enabled = False
            Button8.Visible = True
            Button8.BackColor = Color.Red

            jogador = 1
            tabuleiro(0, 1) = 2

        End If


            If (jogador = 1) Then

                Button15.Enabled = False
                Button15.Visible = True
                Button15.BackColor = Color.Blue


                jogador = 2
                tabuleiro(0, 2) = 1

            Else

                Button15.Enabled = False
                Button15.Visible = True
                Button15.BackColor = Color.Red

                jogador = 1
                tabuleiro(0, 2) = 2

            End If


            If (jogador = 1) Then

                Button22.Enabled = False
                Button22.Visible = True
                Button22.BackColor = Color.Blue


                jogador = 2
                tabuleiro(0, 3) = 1

            Else

                Button22.Enabled = False
                Button22.Visible = True
                Button22.BackColor = Color.Red

                jogador = 1
                tabuleiro(0, 3) = 2

            End If


            If (jogador = 1) Then

                Button29.Enabled = False
                Button29.Visible = True
                Button29.BackColor = Color.Blue


                jogador = 2
                tabuleiro(0, 4) = 1

            Else

                Button29.Enabled = False
                Button29.Visible = True
                Button29.BackColor = Color.Red

                jogador = 1
                tabuleiro(0, 4) = 2

            End If


        If (jogador = 1) Then

            Button36.Enabled = False
            Button36.Visible = True
            Button36.BackColor = Color.Blue


            jogador = 2
            tabuleiro(0, 5) = 1

        Else

            Button36.Enabled = False
            Button36.Visible = True
            Button36.BackColor = Color.Red

            jogador = 1
            tabuleiro(0, 5) = 2

        End If


    End Sub

    Private Sub c2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c2.Click
        If (jogador = 1) Then

            Button2.Enabled = False
            Button2.Visible = True
            Button2.BackColor = Color.Blue


            jogador = 2
            tabuleiro(1, 0) = 1
        Else

            Button2.Enabled = False
            Button2.Visible = True
            Button2.BackColor = Color.Red

            jogador = 1
            tabuleiro(1, 0) = 2
        End If

        If (jogador = 1) Then

            Button9.Enabled = False
            Button9.Visible = True
            Button9.BackColor = Color.Blue


            jogador = 2
            tabuleiro(1, 1) = 1
        Else

            Button9.Enabled = False
            Button9.Visible = True
            Button9.BackColor = Color.Red

            jogador = 1
            tabuleiro(1, 1) = 2
        End If

        If (jogador = 1) Then

            Button16.Enabled = False
            Button16.Visible = True
            Button16.BackColor = Color.Blue


            jogador = 2
            tabuleiro(1, 2) = 1
        Else

            Button16.Enabled = False
            Button16.Visible = True
            Button16.BackColor = Color.Red

            jogador = 1
            tabuleiro(1, 2) = 2
        End If

        If (jogador = 1) Then

            Button23.Enabled = False
            Button23.Visible = True
            Button23.BackColor = Color.Blue


            jogador = 2
            tabuleiro(1, 3) = 1
        Else

            Button23.Enabled = False
            Button23.Visible = True
            Button23.BackColor = Color.Red

            jogador = 1
            tabuleiro(1, 3) = 2
        End If

        If (jogador = 1) Then

            Button30.Enabled = False
            Button30.Visible = True
            Button30.BackColor = Color.Blue


            jogador = 2
            tabuleiro(1, 4) = 1
        Else

            Button30.Enabled = False
            Button30.Visible = True
            Button30.BackColor = Color.Red

            jogador = 1
            tabuleiro(1, 4) = 2
        End If

        If (jogador = 1) Then

            Button37.Enabled = False
            Button37.Visible = True
            Button37.BackColor = Color.Blue


            jogador = 2
            tabuleiro(1, 5) = 1
        Else

            Button37.Enabled = False
            Button37.Visible = True
            Button37.BackColor = Color.Red

            jogador = 1
            tabuleiro(1, 5) = 2
        End If

    End Sub

    Private Sub c3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c3.Click
        If (jogador = 1) Then

            Button3.Enabled = False
            Button3.Visible = True
            Button3.BackColor = Color.Blue


            jogador = 2
            tabuleiro(2, 0) = 1
        Else

            Button3.Enabled = False
            Button3.Visible = True
            Button3.BackColor = Color.Red

            jogador = 1
            tabuleiro(2, 0) = 2
        End If

        If (jogador = 1) Then

            Button10.Enabled = False
            Button10.Visible = True
            Button10.BackColor = Color.Blue


            jogador = 2
            tabuleiro(2, 1) = 1
        Else

            Button10.Enabled = False
            Button10.Visible = True
            Button10.BackColor = Color.Red

            jogador = 1
            tabuleiro(2, 1) = 2
        End If

        If (jogador = 1) Then

            Button17.Enabled = False
            Button17.Visible = True
            Button17.BackColor = Color.Blue


            jogador = 2
            tabuleiro(2, 2) = 1
        Else

            Button17.Enabled = False
            Button17.Visible = True
            Button17.BackColor = Color.Red

            jogador = 1
            tabuleiro(2, 2) = 2
        End If

        If (jogador = 1) Then

            Button24.Enabled = False
            Button24.Visible = True
            Button24.BackColor = Color.Blue


            jogador = 2
            tabuleiro(2, 3) = 1
        Else

            Button24.Enabled = False
            Button24.Visible = True
            Button24.BackColor = Color.Red

            jogador = 1
            tabuleiro(2, 3) = 2
        End If

        If (jogador = 1) Then

            Button31.Enabled = False
            Button31.Visible = True
            Button31.BackColor = Color.Blue


            jogador = 2
            tabuleiro(2, 4) = 1
        Else

            Button31.Enabled = False
            Button31.Visible = True
            Button31.BackColor = Color.Red

            jogador = 1
            tabuleiro(2, 4) = 2
        End If

        If (jogador = 1) Then

            Button38.Enabled = False
            Button38.Visible = True
            Button38.BackColor = Color.Blue


            jogador = 2
            tabuleiro(2, 5) = 1
        Else

            Button38.Enabled = False
            Button38.Visible = True
            Button38.BackColor = Color.Red

            jogador = 1
            tabuleiro(2, 5) = 2
        End If

    End Sub


    Private Sub c4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c4.Click
        If (jogador = 1) Then

            Button4.Enabled = False
            Button4.Visible = True
            Button4.BackColor = Color.Blue


            jogador = 2
            tabuleiro(3, 0) = 1
        Else

            Button4.Enabled = False
            Button4.Visible = True
            Button4.BackColor = Color.Red

            jogador = 1
            tabuleiro(3, 0) = 2
        End If

        If (jogador = 1) Then

            Button11.Enabled = False
            Button11.Visible = True
            Button11.BackColor = Color.Blue


            jogador = 2
            tabuleiro(3, 1) = 1
        Else

            Button11.Enabled = False
            Button11.Visible = True
            Button11.BackColor = Color.Red

            jogador = 1
            tabuleiro(3, 1) = 2
        End If

        If (jogador = 1) Then

            Button18.Enabled = False
            Button18.Visible = True
            Button18.BackColor = Color.Blue


            jogador = 2
            tabuleiro(3, 2) = 1
        Else

            Button18.Enabled = False
            Button18.Visible = True
            Button18.BackColor = Color.Red

            jogador = 1
            tabuleiro(3, 2) = 2
        End If

        If (jogador = 1) Then

            Button25.Enabled = False
            Button25.Visible = True
            Button25.BackColor = Color.Blue


            jogador = 2
            tabuleiro(3, 3) = 1
        Else

            Button25.Enabled = False
            Button25.Visible = True
            Button25.BackColor = Color.Red

            jogador = 1
            tabuleiro(3, 3) = 2
        End If

        If (jogador = 1) Then

            Button32.Enabled = False
            Button32.Visible = True
            Button32.BackColor = Color.Blue


            jogador = 2
            tabuleiro(3, 4) = 1
        Else

            Button32.Enabled = False
            Button32.Visible = True
            Button32.BackColor = Color.Red

            jogador = 1
            tabuleiro(3, 4) = 2
        End If

        If (jogador = 1) Then

            Button39.Enabled = False
            Button39.Visible = True
            Button39.BackColor = Color.Blue


            jogador = 2
            tabuleiro(3, 5) = 1
        Else

            Button39.Enabled = False
            Button39.Visible = True
            Button39.BackColor = Color.Red

            jogador = 1
            tabuleiro(3, 5) = 2
        End If

    End Sub


    Private Sub c5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c5.Click
        If (jogador = 1) Then

            Button5.Enabled = False
            Button5.Visible = True
            Button5.BackColor = Color.Blue


            jogador = 2
            tabuleiro(4, 0) = 1
        Else

            Button5.Enabled = False
            Button5.Visible = True
            Button5.BackColor = Color.Red

            jogador = 1
            tabuleiro(4, 0) = 2
        End If

        If (jogador = 1) Then

            Button12.Enabled = False
            Button12.Visible = True
            Button12.BackColor = Color.Blue


            jogador = 2
            tabuleiro(4, 1) = 1
        Else

            Button12.Enabled = False
            Button12.Visible = True
            Button12.BackColor = Color.Red

            jogador = 1
            tabuleiro(4, 1) = 2
        End If

        If (jogador = 1) Then

            Button19.Enabled = False
            Button19.Visible = True
            Button19.BackColor = Color.Blue


            jogador = 2
            tabuleiro(4, 2) = 1
        Else

            Button19.Enabled = False
            Button19.Visible = True
            Button19.BackColor = Color.Red

            jogador = 1
            tabuleiro(4, 2) = 2
        End If

        If (jogador = 1) Then

            Button26.Enabled = False
            Button26.Visible = True
            Button26.BackColor = Color.Blue


            jogador = 2
            tabuleiro(4, 3) = 1
        Else

            Button26.Enabled = False
            Button26.Visible = True
            Button26.BackColor = Color.Red

            jogador = 1
            tabuleiro(4, 3) = 2
        End If

        If (jogador = 1) Then

            Button33.Enabled = False
            Button33.Visible = True
            Button33.BackColor = Color.Blue


            jogador = 2
            tabuleiro(4, 4) = 1
        Else

            Button33.Enabled = False
            Button33.Visible = True
            Button33.BackColor = Color.Red

            jogador = 1
            tabuleiro(4, 4) = 2
        End If

        If (jogador = 1) Then

            Button40.Enabled = False
            Button40.Visible = True
            Button40.BackColor = Color.Blue


            jogador = 2
            tabuleiro(4, 5) = 1
        Else

            Button40.Enabled = False
            Button40.Visible = True
            Button40.BackColor = Color.Red

            jogador = 1
            tabuleiro(4, 5) = 2
        End If

    End Sub

    Private Sub c6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c6.Click
        If (jogador = 1) Then

            Button6.Enabled = False
            Button6.Visible = True
            Button6.BackColor = Color.Blue


            jogador = 2
            tabuleiro(5, 0) = 1
        Else

            Button6.Enabled = False
            Button6.Visible = True
            Button6.BackColor = Color.Red

            jogador = 1
            tabuleiro(5, 0) = 2
        End If

        If (jogador = 1) Then

            Button13.Enabled = False
            Button13.Visible = True
            Button13.BackColor = Color.Blue


            jogador = 2
            tabuleiro(5, 1) = 1
        Else

            Button13.Enabled = False
            Button13.Visible = True
            Button13.BackColor = Color.Red

            jogador = 1
            tabuleiro(5, 1) = 2
        End If

        If (jogador = 1) Then

            Button20.Enabled = False
            Button20.Visible = True
            Button20.BackColor = Color.Blue


            jogador = 2
            tabuleiro(5, 2) = 1
        Else

            Button20.Enabled = False
            Button20.Visible = True
            Button20.BackColor = Color.Red

            jogador = 1
            tabuleiro(5, 2) = 2
        End If

        If (jogador = 1) Then

            Button27.Enabled = False
            Button27.Visible = True
            Button27.BackColor = Color.Blue


            jogador = 2
            tabuleiro(5, 3) = 1
        Else

            Button27.Enabled = False
            Button27.Visible = True
            Button27.BackColor = Color.Red

            jogador = 1
            tabuleiro(5, 3) = 2
        End If

        If (jogador = 1) Then

            Button34.Enabled = False
            Button34.Visible = True
            Button34.BackColor = Color.Blue


            jogador = 2
            tabuleiro(5, 4) = 1
        Else

            Button34.Enabled = False
            Button34.Visible = True
            Button34.BackColor = Color.Red

            jogador = 1
            tabuleiro(5, 4) = 2
        End If

        If (jogador = 1) Then

            Button41.Enabled = False
            Button41.Visible = True
            Button41.BackColor = Color.Blue


            jogador = 2
            tabuleiro(5, 5) = 1
        Else

            Button41.Enabled = False
            Button41.Visible = True
            Button41.BackColor = Color.Red

            jogador = 1
            tabuleiro(5, 5) = 2
        End If

    End Sub


    Private Sub c7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles c7.Click
        If (jogador = 1) Then

            Button7.Enabled = False
            Button7.Visible = True
            Button7.BackColor = Color.Blue


            jogador = 2
            tabuleiro(6, 0) = 1
        Else

            Button7.Enabled = False
            Button7.Visible = True
            Button7.BackColor = Color.Red

            jogador = 1
            tabuleiro(6, 0) = 2
        End If

        If (jogador = 1) Then

            Button14.Enabled = False
            Button14.Visible = True
            Button14.BackColor = Color.Blue


            jogador = 2
            tabuleiro(6, 1) = 1
        Else

            Button14.Enabled = False
            Button14.Visible = True
            Button14.BackColor = Color.Red

            jogador = 1
            tabuleiro(6, 1) = 2
        End If

        If (jogador = 1) Then

            Button21.Enabled = False
            Button21.Visible = True
            Button21.BackColor = Color.Blue


            jogador = 2
            tabuleiro(6, 2) = 1
        Else

            Button21.Enabled = False
            Button21.Visible = True
            Button21.BackColor = Color.Red

            jogador = 1
            tabuleiro(6, 2) = 2
        End If

        If (jogador = 1) Then

            Button28.Enabled = False
            Button28.Visible = True
            Button28.BackColor = Color.Blue


            jogador = 2
            tabuleiro(6, 3) = 1
        Else

            Button28.Enabled = False
            Button28.Visible = True
            Button28.BackColor = Color.Red

            jogador = 1
            tabuleiro(6, 3) = 2
        End If

        If (jogador = 1) Then

            Button35.Enabled = False
            Button35.Visible = True
            Button35.BackColor = Color.Blue


            jogador = 2
            tabuleiro(6, 4) = 1
        Else

            Button35.Enabled = False
            Button35.Visible = True
            Button35.BackColor = Color.Red

            jogador = 1
            tabuleiro(6, 4) = 2
        End If

        If (jogador = 1) Then

            Button42.Enabled = False
            Button42.Visible = True
            Button42.BackColor = Color.Blue


            jogador = 2
            tabuleiro(6, 5) = 1
        Else

            Button42.Enabled = False
            Button42.Visible = True
            Button42.BackColor = Color.Red

            jogador = 1
            tabuleiro(6, 5) = 2
        End If

    End Sub

End Class
ANTES DE CLICAR NOS BOTOES DE CIMA


DEPOIS DE CLICAR NOS BOTOES DE CIMA

Não consigo hospedar a imagem mas os botoes ficam vermelhos e azuis :D
 
Última edição:
acho que vou desistir deste projecto pois estou a ver que não percebo nada disto :'(

Desculpa-me que te diga..., mas isso é a atitude mais idiota que já vi. Se ainda agora começaste e já pensas em desistir..., nem quero imaginar no futuro.

Sobre o teu código, das duas uma, ou não sabes/percebeste a ideia dos arrays de botões, ou então queres mesmo fazer da forma complicada.

Dá uma olhada no teu código, e repara quantas vezes repetes o mesmo código, depois olha as dicas que te dei acima e tenta aplicar as mesmas. Se tiveres dúvidas sobre isso, é só perguntar, vais ter sempre resposta ;)

abraços, HecKel
 
Desculpa-me que te diga..., mas isso é a atitude mais idiota que já vi. Se ainda agora começaste e já pensas em desistir..., nem quero imaginar no futuro.

Sobre o teu código, das duas uma, ou não sabes/percebeste a ideia dos arrays de botões, ou então queres mesmo fazer da forma complicada.

Dá uma olhada no teu código, e repara quantas vezes repetes o mesmo código, depois olha as dicas que te dei acima e tenta aplicar as mesmas. Se tiveres dúvidas sobre isso, é só perguntar, vais ter sempre resposta ;)

abraços, HecKel

ah então ja não desisto isso é o que digo sempre mas nunca desisto :lol:

Se as arrays é aquilo que o Wizard-of-War disse eu nunca dei isso mas ja ando a ler uns ebooks sobre VB :-D


Quanto ao codigo que o Wizard-of-War pos tenho estas duvidas:

Para que server o ReDim botao(42) é para declarar o array ? Não podia ser Dim botao(42)?

E o Me.Controls.AddRange(botao) para que serve ?


É que nunca dei nada disto e para por isto no programa tenho que saber com o que estou a trabalhar
 
Última edição:
Para que server o ReDim botao(42) é para declarar o array ? Não podia ser Dim botao(42)?
Sim, dá para pôr logo Dim botao(42), sem usar o ReDim.

O ReDim é só para o caso de quereres reconstruir os botões.

E o Me.Controls.AddRange(botao) para que serve ?
É para adicionar todos os elementos do array "botao" aos objectos da janela do programa (form). Ou seja, é para fazer os botões aparecerem. :P

Btw, em vez de um array de (42) elementos, podes fazer um de 2 dimensões: (6, 7) ou (6)(7).

E não te esqueças de mudar o "valor_x" e o "valor_y" para os respectivos valores (números).
 
Última edição:
Bem como ja fiz este jogo ja podem apagar este topico :)

Obrigado pela ajuda de todos :D

Fikem bem :x2:
 
Última edição:
Back
Topo