- 題名: VBでクロスワード
- 日時: 2010/02/02 21:35:57
- ID: 26369
- この記事の返信元:
- (なし)
- この記事への返信:
- [26371] Re[1]: VBでクロスワード2010/02/02 22:56:30
- ツリーを表示
■No26369に返信(JINGさんの記事) > Private btnMoji(71) As Button 'ア〜ンのボタン > Private btnMasu(25) As Button '5*5のマス目 > 71個と25個の配列を作っているのですが 違います。上記は btnMoji(0)〜btnMoji(71)までの72個と、 btnMasu(0)〜btnMasu(25)までの26個の宣言を意味します。 > 他に簡単な配列の記述はありますでしょうか? デザイナでボタンを生成するのではなく、 プログラムコードで生成してみては如何でしょう。 Private Buttons As List(Of Button) Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load Buttons = New List(Of Button)() Me.SuspendLayout() For c As Integer = Asc("ア") To Asc("ン") Dim btn As New Button() btn.Text = Chr(c) AddHandler btn.Click, AddressOf Buttons_Click Buttons.Add(btn) FlowLayoutPanel1.Controls.Add(btn) Next Me.ResumeLayout() End Sub Private Sub Buttons_Click(ByVal sender As Object, ByVal e As EventArgs) MsgBox(DirectCast(sender, Button).Text) End Sub ただ、これだと 83 個のボタンになってしまうので、 「ヰ」や「ッ」などを除いた 71 個とするならば、 このような方法もあります。 Const KATAKANA As String = "アイウエオ〜略〜ワヲン" For Each c As Char In KATAKANA Dim btn As New Button() btn.Text = c AddHandler btn.Click, AddressOf Buttons_Click Buttons.Add(btn) FlowLayoutPanel1.Controls.Add(btn) Next
分類:[.NET]
初めまして。JINGと申します。
Vista VB.NET 2005で http://www.gamedesign.jp/flash/kanafla/kanafla.html
こちらのようなクロスワードを作ろうと考えているのですが、
Private btnMoji(71) As Button 'ア〜ンのボタン
Private btnMasu(25) As Button '5*5のマス目
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
btnMoji(0) = btnA
btnMoji(1) = btnI
btnMoji(2) = btnU
btnMoji(3) = btnE
・
・
・
btnMoji(70) = btnN
btnMasu(0) = btn1
btnMasu(1) = btn2
btnMasu(2) = btn3
btnMasu(3) = btn4
・
・
・
btnMasu(24) = btn25
End Sub
For〜Nextで複数のボタンに一度に命令を与えようと上記のように71個と25個の配列を作っているのですが、
ブログラムとしてあまりに不恰好な気がします。他に簡単な配列の記述はありますでしょうか?
それと、マスで使用中の文字を使用不可(Enabled = False)にする記述が、対象が配列同士になるとうまく書けません。
プログラムというよりもIf文、アルゴリズムの領域の問題かと思いますが、進展がなくなって久しいので、こちらに投稿した次第です。
よろしくお願いします。