Jump to content

Quatro em linha


Sergio990
 Share

Recommended Posts

Boas...

Eu estou realizar um projecto para vb.net, e estou com umas duvidas.

O código é este:

Public Class Form1
    'Criei a matriz principal
    Dim matrizPrincipal(5, 6)

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Vou dar as coordenadas dos botoes na matriz
        matrizPrincipal(0, 0) = Button1.Text
        matrizPrincipal(0, 1) = Button2.Text
        matrizPrincipal(0, 2) = Button3
        matrizPrincipal(0, 3) = Button4
        matrizPrincipal(0, 4) = Button5
        matrizPrincipal(0, 5) = Button6
        matrizPrincipal(0, 6) = Button7
        matrizPrincipal(1, 0) = Button8.Text
        matrizPrincipal(1, 1) = Button9
        matrizPrincipal(1, 2) = Button10
        matrizPrincipal(1, 3) = Button11
        matrizPrincipal(1, 4) = Button12
        matrizPrincipal(1, 5) = Button13
        matrizPrincipal(1, 6) = Button14
        matrizPrincipal(2, 0) = Button15.Text
        matrizPrincipal(2, 1) = Button16
        matrizPrincipal(2, 2) = Button17
        matrizPrincipal(2, 3) = Button18
        matrizPrincipal(2, 4) = Button19
        matrizPrincipal(2, 5) = Button20
        matrizPrincipal(2, 6) = Button21
        matrizPrincipal(3, 0) = Button22.Text
        matrizPrincipal(3, 1) = Button23
        matrizPrincipal(3, 2) = Button24
        matrizPrincipal(3, 3) = Button25
        matrizPrincipal(3, 4) = Button26
        matrizPrincipal(3, 5) = Button27
        matrizPrincipal(3, 6) = Button28
        matrizPrincipal(4, 0) = Button29.Text
        matrizPrincipal(4, 1) = Button30
        matrizPrincipal(4, 2) = Button31
        matrizPrincipal(4, 3) = Button32
        matrizPrincipal(4, 4) = Button33
        matrizPrincipal(4, 5) = Button34
        matrizPrincipal(4, 6) = Button35
        matrizPrincipal(5, 0) = Button36.Text
        matrizPrincipal(5, 1) = Button37
        matrizPrincipal(5, 2) = Button38
        matrizPrincipal(5, 3) = Button39
        matrizPrincipal(5, 4) = Button40
        matrizPrincipal(5, 5) = Button41
        matrizPrincipal(5, 6) = Button42
    End Sub
    'Criei uma sub para saber qual o jogador que inicia o jogo 

    Private Sub JogadorInicial()
        Dim Random As Integer
        Dim escolhaJogadorInicial As New Random
        Random = escolhaJogadorInicial.Next(0, 2)
        Dim jogador1 As Integer
        Dim jogador2 As Integer

        If Random = 0 Then
            TextBox1.Text = "O jogador que ira começar a jogar é o jogador0"
            jogador1 = 0
            jogador2 = 1
        Else
            TextBox1.Text = "O jogador que ira começar a jogar é o jogador1"
            jogador1 = 1
            jogador2 = 0
        End If

    End Sub
    Private Sub vazioVertical_0(ByVal col As Integer)

        For linhas = 5 To 0 Step -1
            If (matrizPrincipal(linhas, col) = "") Then

            End If
        Next
    End Sub

   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button8.Click, Button36.Click, Button29.Click, Button22.Click, Button15.Click
        vazioVertical_0(0)
    End Sub
End Class

Ou seja a minha duvida é de como é que no ultimo for ele vai trocar o nome do botão que esta em branco nessa coordenada para um x por exemplo.

A minha ideia era esta:

  Private Sub vazioVertical_0(ByVal col As Integer)

        For linhas = 5 To 0 Step -1
            If (matrizPrincipal(linhas, col) = "") Then
                matrizPrincipal(linhas, col) = "X"
            End If
        Next
    End Sub

Ele aqui realmente entra no if se o botão não tiver texto mas não imprime o x no botão

Se alguém me poder ajudar agradecia imenso ;D

Link to comment
Share on other sites

Ou seja fazer isto assim:

   Function vazioVertical_0(ByVal col As Integer)

        For linhas = 5 To 0 Step -1
            If (matrizPrincipal(linhas, col) = "") Then
                Return "x"
            End If
        Next
    End Function

   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button8.Click, Button36.Click, Button29.Click, Button22.Click, Button15.Click
        Button1.Text = vazioVertical_0(0)
    End Sub

Ele assim realmente vai imprimir 🙂

Mas ao fazer isto assim depois surge um problema, que ele nao vai verificar a coluna toda vai logo colocar o x no primeiro botão, ou no botao que clicar-mos, eu queria ver se dava para clicar por exemplo no primeiro botao e ele verificar se em baixo desse botao esta algum sem nada escrito se tivesse entao iria escrever nele.

Aqui esta a parte da form:

http://img823.imageshack.us/img823/8265/semttulozz.jpg

Uploaded with ImageShack.us

Ou seja eu tinha a sub na esperança que esta desse para todos os botões da mesma coluna, ou melhor chamava a sub em todos os botões e esta iria exercer sempre a mesma função que era colocar o x no ultimo botao em branco, mas a minha ideia não resultou em nada ahah

Com a funçao ele realmente coloca texto mas surge o problema que disse acima.

Desculpem a novice mas eu não dou programação à muito tempo...

Ok acho que ja consegui da seginte forma:

    Private Sub vazioVertical_0(ByVal col As Integer)

        For linhas = 5 To 0 Step -1
            If (matrizPrincipal(linhas, col) = "") Then
                If linhas = 5 Then
                    Button36.Text = "X"
                    matrizPrincipal(linhas, col) = "ocupado"
                    Exit For
                End If
                If linhas = 4 Then
                    Button29.Text = "X"
                    matrizPrincipal(linhas, col) = "ocupado"
                    Exit For
                End If
                If linhas = 3 Then
                    Button22.Text = "X"
                    matrizPrincipal(linhas, col) = "ocupado"
                    Exit For
                End If
                If linhas = 2 Then
                    Button15.Text = "X"
                    matrizPrincipal(linhas, col) = "ocupado"
                    Exit For
                End If
                If linhas = 1 Then
                    Button8.Text = "X"
                    matrizPrincipal(linhas, col) = "ocupado"
                    Exit For
                Else
                    Button1.Text = "X"
                    matrizPrincipal(linhas, col) = "ocupado"
                    Exit For
                End If
            End If
        Next
    End Sub

   
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button8.Click, Button36.Click, Button29.Click, Button22.Click, Button15.Click
        vazioVertical_0(0)
    End Sub
End Class

Eu não sei se isto esta bem feito mas espero que me digam as vossas opiniões 🙂 Se faziam assim ou onde é que eu podia alterar o código...

Link to comment
Share on other sites

Penso que já vi onde está o problema aqui:

    
Private Sub  Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button8.Click, Button36.Click, Button29.Click, Button22.Click, Button15.Click
        Button1.Text = vazioVertical_0(0)
End Sub

Se reparares estas a mandar escrever sempre no botão em que clicas te.. mas se fizeres um debug, penso que a tua matriz esta com os valores correctos.. Se carregares no botão1 e por acaso o valor "X" tiver de aparecer no botão5 então o resultado tem de aparecer no botão5. Dessa maneira ele vai sempre escrever o valor no botão que foi clicado.

Aconselho-te a usar a colecção Controls da tua form para acederes ao botão em que o valor tem de aparecer..

Espero ter ajudado 🙂

Link to comment
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
 Share

×
×
  • Create New...

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.