tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトル三目並べの引き分けの時
記事No10109
投稿日: 2010/05/18(Tue) 11:20
投稿者ayasa
こんにちは。現在ボタン9つで三目並べを製作中で、なんとか3つ同じマークが揃うとXの勝ち、Oの勝ち、というメッセージボックスを出すコードはできました。しかし9つとも同じマークが3つ揃わなかった場合に”引き分け”とメッセージボックスを表示させたいのですがどうすればいいでしょう?

参考までに一部のコードですが
If Button1.Text = "X" And Button2.Text = "X" And Button3.Text = "X" Then
            MessageBox.Show("You are the winner with X!")
            Call disablebuttons()
        ElseIf Button1.Text = "X" And Button5.Text = "X" And Button9.Text = "X" Then
            MessageBox.Show("You are the winner with X!")
……続く

このように細かく指定しているため、もしも同じ方法で引き分けを設定すると何十通りもコードを書かなくてはいかなくなり、困っています。どうぞご返答、よろしくお願いいたします。

[ツリー表示へ]
タイトルRe: 三目並べの引き分けの時
記事No10110
投稿日: 2010/05/18(Tue) 12:21
投稿者keisuke
アバウトに、、

升目(Button)がいっぱいになったときに
再度判定させて、それ以外なら引き分けでよいのでは?
書かれたコードはボタンが押されたたびに判定されると想定できます。

[ツリー表示へ]
タイトルRe^2: 三目並べの引き分けの時
記事No10112
投稿日: 2010/05/18(Tue) 16:12
投稿者ayasa
> 升目(Button)がいっぱいになったときに

いっぱいになったと指定するにはIF FUNCTIONを使うのでしょうか。
何を使えば指定できるのかわかりません。

[ツリー表示へ]
タイトルRe^3: 三目並べの引き分けの時
記事No10113
投稿日: 2010/05/18(Tue) 16:28
投稿者keisuke
では、現在はどの様にはんていさせているのでしょうか??
これは、解りません、あれは解りませんでは全部作れっていているような
気がしますが、、

[ツリー表示へ]
タイトルRe^3: 三目並べの引き分けの時
記事No10116
投稿日: 2010/05/19(Wed) 00:46
投稿者ayasa
決して作れ、と言っているわけではなく、どのようなFunctionを使えばいいのか(例えば先ほど提示したのは、IF Function)、それとも全てをボタンを選択するという場合はやはり1からButton1.textと指定していくのでしょうか、と聞きたかっただけなのですが…。
何やらお気に触るような返信をしてしまったようで申し訳ありません。
ビジュアルベーシックを学んで未だ数ヶ月と日が浅い人間には、少々レベルの高いアドバイスだったのだと思います。どうもご返答ありがとうございました。

[ツリー表示へ]
タイトルRe^3: 三目並べの引き分けの時
記事No10117
投稿日: 2010/05/19(Wed) 15:36
投稿者
> いっぱいになったと指定するにはIF FUNCTIONを使うのでしょうか。
> 何を使えば指定できるのかわかりません。

横から失礼します。

引き分け=最後まで決着がつかない=升目がいっぱいになる
とするならば、これは
最後の升目(9番目。Button9という意味ではなく)が埋まり、それでも
決着がつかなかった時 と考えられませんか?

また、勝敗判定ではその時点で最後に押された升目が関係しているところだけ
判定するようにすればスマートに処理できると思いますよ。

[ツリー表示へ]
タイトルRe^4: 三目並べの引き分けの時
記事No10119
投稿日: 2010/05/20(Thu) 02:48
投稿者ayasa
> 最後の升目(9番目。Button9という意味ではなく)が埋まり、それでも
> 決着がつかなかった時 と考えられませんか?

9番目の手を設定したら表示されるようになりました!
混乱していたので、本当に助かりました。また何か質問等でてきた時はよろしくお願いいたします。

[ツリー表示へ]