2012-04-13 7 views
-4

可能性の重複:
tic tac toe coding for tieチックタックつま先でネクタイをコーディング

私はチックタックつま先のプログラムを持っていると私はそれがあるべきそのように働いて、すべてを持っています。しかし、私がこのコーディングで持っている最終的な問題の1つは、コード化する方法がいつ結びつくのか分かりません。ここに私がこれまで持っていたものがあります。それはあなたがネクタイを持っていたと言うでしょうどこでMe.close()を持って

Public Class Form1 

Private turn As Integer = 1 
Private play() As String = {"O", "X"} 
Private board(2, 2) As String 

Private Structure arrayIndex 
    Dim x As Integer 
    Dim y As Integer 
End Structure 

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load 
    For x As Integer = 1 To 9 
     Dim b As New Button With { _ 
      .Width = 80, _ 
      .Height = 80, _ 
      .Text = "", _ 
      .Location = New Point(60 + (((x - 1) Mod 3) * 80), 60 + (((x - 1) \ 3) * 80)), _ 
      .Tag = New arrayIndex With {.x = (x - 1) Mod 3, .y = (x - 1) \ 3}} 
     Me.Controls.Add(b) 
     AddHandler b.Click, AddressOf buttons_click 

    Next 
    Me.SetClientSizeCore(360, 360) 

End Sub 

Private Sub buttons_click(ByVal sender As System.Object, ByVal e As System.EventArgs) 
    If DirectCast(sender, Button).Text <> "" Then Return 
    DirectCast(sender, Button).Text = play(turn Mod 2) 
    Dim index As arrayIndex = DirectCast(DirectCast(sender, Button).Tag, arrayIndex) 
    board(index.x, index.y) = play(turn Mod 2) 
    turn += 1 
    winner() 
End Sub 

Private Sub winner() 
    Dim rows(7) As String 
    rows(0) = board(0, 0) & board(1, 0) & board(2, 0) 
    rows(1) = board(0, 1) & board(1, 1) & board(2, 1) 
    rows(2) = board(0, 2) & board(1, 2) & board(2, 2) 
    rows(3) = board(0, 0) & board(0, 1) & board(0, 2) 
    rows(4) = board(1, 0) & board(1, 1) & board(1, 2) 
    rows(5) = board(2, 0) & board(2, 1) & board(2, 2) 
    rows(6) = board(0, 0) & board(1, 1) & board(2, 2) 
    rows(7) = board(2, 0) & board(1, 1) & board(0, 2) 

    For x As Integer = 0 To 7 
     If rows(x).Length = 3 AndAlso (rows(x)(0) = rows(x)(1) AndAlso rows(x)(0) = rows(x)(2)) Then 
      If MessageBox.Show(rows(x)(0) & "'s winsssss!", "We have a winner!", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = DialogResult.OK Then 
       turn = 1 
       ReDim board(2, 2) 
       For Each ctrl As Control In Controls 
        ctrl.Text = "" 
       Next 
       Return 
      Else 
       Me.Close() 


      End If 

     End If 
    Next 

End Sub 


End Class 
+0

私は知っています。再転記が質問をリストの一番上に置くと考えている。しかし、私はこれに取り組もうとしてきましたが、それを理解できないように見えています。 – beginnerprogrammer

+2

-1、あなたがすでに聞いた質問を再投稿することは容認できません。代替案のFAQの[このエントリ](http://meta.stackexchange.com/questions/7046/how-do-i-get-attention-for-my-old-unanswered-questions)を参照してください。 –

答えて

0

は、それはです。基本的には、これに入れたロジックは単純です。サイド(xまたはoのいずれか)が勝つと、それを示すメッセージボックスが表示されます。その後、ゲームをリセットして戻ります。その後、elseの文にはMe.close()があります。elseは、誰もゲームに勝っていないことを意味します。したがって、同点があるとみなされます。 (空白がすべて入っている場合)

+0

Me.close()はキャンセルをクリックしたときのものです。しかし、私は把握しようとしています、すべてのスペースが埋まっている場合、ネクタイがありますが、ネクタイがあることを示すメッセージボックスもあります。しかし、私は – beginnerprogrammer

+0

のコーディングを理解することができませんし、また、もし私が他の部分にネクタイがあったとすれば、どのようにすべてのスペースが埋まっているのか分かりますか? – beginnerprogrammer

+0

勝利メッセージボックスと同じことです。 'else'ステートメントの下で、このコードロジックを' Me.close() 'に入れてください。そうでなければ、すべてのスペースが埋まっていれば、それはネクタイです。それ以外の場合は、ユーザーがキャンセルしている必要があります。プログラムを終了する必要があります。 –

関連する問題