プロが教える店舗&オフィスのセキュリティ対策術

三目並べのコードについて。ビジュアルベーシック2008

現在三目並べのコードにて苦戦しています。
×が3つ揃えば勝ち、Oが3つ揃えば勝ち、というメッセージが表示されるコードも完了しました。
しかし引き分け、つまり9つのボタンの内3つ揃わなかった場合、どのようなコードにすればいいでしょう?色々やっているのですが、メッセージボックスすら表示されません。

また、勝ち、や引き分け、のメッセージ表示後、自動的にリセットしたく


Private Sub reset()    
    Button1.Text = ""
Button1.Enabled = True
Button2.Text = ""
Button2.Enabled = True
Button3.Text = ""
Button3.Enabled = True
Button4.Text = ""
Button4.Enabled = True
Button5.Text = ""
Button5.Enabled = True
Button6.Text = ""
Button6.Enabled = True
Button7.Text = ""
Button7.Enabled = True
Button8.Text = ""
Button8.Enabled = True
Button9.Text = ""
Button9.Enabled = True



Private Sub win()
If Button1.Text = "X" And Button2.Text = "X" And Button3.Text = "X" Then
MessageBox.Show("You are the winner with X!")
Call disablebuttons()
       Call reset() ・・・以下続く


とCALLで呼び出しているのですが、9つきちんとリセットされてくれず必ず9つのボタンのうち一つだけ窪み(何も表示されない状態)になってしまいます。一体どうすればよいでしょう?


また、ボタンにカーソルが触れると色が変わるようにしたいのですが、もしお知恵を貸していただけるようでしたらよろしくお願いいたします。

A 回答 (3件)

>9つのボタンのうち一つだけ窪み(何も表示されない状態)



> Call disablebuttons()

ここが、このようになっているなら、問題ないはずですが……
  Button1.Enabled = False
  Button2.Enabled = False
   ・
   ・
   ・

もし、そのままになっしまっているなら、
 Private Sub DisableButtons()
の最後に、
 Timer1.Start() などとして、

Timer を置いて、以下のように、Interval 3000 ぐらい(=3 秒)ぐらいで、リセットすればよいはずです。

  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
    Call Reset()
    Timer1.Stop()
  End Sub

'//

>ボタンにカーソルが触れると色が変わるようにしたいのですが、

  Private Sub Button1_MouseHover(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseHover
    Button1.BackColor = Color.Yellow
  End Sub

  Private Sub Button1_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.MouseLeave
    Button1.BackColor = Color.WhiteSmoke
  End Sub

'//
前回のご質問:

>VBレスキューのサイトを紹介して下さった方。覗いてみたのですが、VB2008の対応掲示板はない

大別すると、VB6 と .Net 掲示板に分かれていますから、VB 2005 用の所でお聞きになれます。
    • good
    • 0
この回答へのお礼

初心者故に、文字のアドバイスも有難いのですが、一応自分で調べて分からなかった事をお聞きしているため、コードを提示して頂けると一体何をすればいいのかわかりやすくて毎回本当に助かっています。ありがとうございます。


同じクラスを取っている友人もそちらの紹介して下さったサイトを活用させて頂くそうです。重ねてありがとうございました。しかしこちら(OKWAVE)の方が皆様とてもお早い回答をして下さっているためこちらを優先に使わせて頂こうと思います。ありがとうございました!また機会がございましたら、宜しくお願いいたします。

お礼日時:2010/05/18 16:18

「EXCELで電卓を作る」サンプルがこれに近い考え方かもしれません。



こういう類は配列 A(9)かA(3、3)を作ると
判定もできるしクリアの記載もより簡潔かと思います。

すべて見ているわけでないので想定ですが、
やってもらいたいことがうまくいかないときは
「定義名称が間違っている」か「全く予期しない動き」が多いです。
>必ず9つのボタンのうち一つだけ窪み
最初の起動時もリセットさせてますか。
「1~9」としたいのに実際は「0~8」になっているとか。

ステップ実行を試してください。
    • good
    • 0

処理をちゃんと見てないけど



現状のは「Xが3つ並んでたら」「Oが3つ並んでたら」
という処理になってるのかな?
もしそうならその後に「配置済が全部で9なら」というのを加えたら良いんじゃないのかな。


あと、1つだけ戻らないやつって、最後に押されたやつじゃない?
どうやってcallしてるのか知らないけどボタン押下じゃなくてclickや押上(離す)の時に呼ばないとうまく処理できないかもね
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!