VB.netで15パズルを作成しています。
初心者です。
ここで数字を漢数字に変換するコードを書きたいのですが、上手くいきません。
エラーメッセージは出ません。
長いのですが、一番下に漢数字変換のコード(作成中)を書いています。
文字数の関係上、似たようなコードは省略しているところがあります。
よろしくお願いします。
ソースコード
Public Class Form1
Dim コマ並び() As Integer = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 実行後はコマをホールド解除() メッセージ表示.Text = "何回で揃えられるかな?" ' 乱数を使い配列:コマ並びにランダム配置 数値セット(コマ並び) ' 配列:コマ並びから各コマに代入 コマ01.Text = コマ並び(1) : コマ02.Text = コマ並び(2) : コマ03.Text = コマ並び(3) コマ04.Text = コマ並び(4) : コマ05.Text = コマ並び(5) : コマ06.Text = コマ並び(6) コマ07.Text = コマ並び(7) : コマ08.Text = コマ並び(8) : コマ09.Text = コマ並び(9) コマ10.Text = コマ並び(10) : コマ11.Text = コマ並び(11) : コマ12.Text = コマ並び(12) コマ13.Text = コマ並び(13) : コマ14.Text = コマ並び(14) : コマ15.Text = コマ並び(15) コマ16.Text = コマ並び(16) '各コマのBackColorをすべて白 コマ01.BackColor = Color.White : コマ02.BackColor = Color.White
コマ03....
省略
'コマ16を黒にする If コマ01.Text = "16" Then : コマ01.BackColor = Color.Black : End If if.... 省略 End Sub Private Sub コマ01_Click(sender As Object, e As EventArgs) Handles コマ01.Click '右が黒コマ 判定処理(コマ01.Text, コマ02.Text, コマ01.BackColor, コマ02.BackColor) '下が黒コマ 判定処理(コマ01.Text, コマ05.Text, コマ01.BackColor, コマ05.BackColor) End Sub Private Sub コマ02_Click(sender As Object, e As EventArgs) Handles コマ02.Click '左が黒コマ 判定処理(コマ02.Text, コマ01.Text, コマ02.BackColor, コマ01.BackColor) '右が黒コマ 判定処理(コマ02.Text, コマ03.Text, コマ02.BackColor, コマ03.BackColor) '下が黒コマ 判定処理(コマ02.Text, コマ06.Text, コマ02.BackColor, コマ06.BackColor) End Sub Private Sub コマ03_Click(sender As Object, e As EventArgs) Handles コマ03.Click ....... 省略 If コマ01.Text = "1" And コマ02.Text = "2" And コマ03.Text = "3" And コマ04.Text = "4" And コマ05.Text = "5" And コマ06.Text = "6" And コマ07.Text = "7" And コマ08.Text = "8" And コマ09.Text = "9" And コマ10.Text = "10" And コマ11.Text = "11" And コマ12.Text = "12" And コマ13.Text = "13" And コマ14.Text = "14" And コマ15.Text = "15" And コマ16.Text = "16" Then メッセージ表示.ForeColor = Color.Red メッセージ表示.Text = "すべてのコマが揃いました" 実行前と完成後はコマをホールド() ElseIf コマ01.Text = "1" And コマ02.Text = "2" And コマ03.Text = "3" And コマ04.Text = "4" And コマ05.Text = "5" And コマ06.Text = "6" And コマ07.Text = "7" And コマ08.Text = "8" And コマ09.Text = "9" And コマ10.Text = "10" And コマ11.Text = "11" And コマ12.Text = "12" And コマ13.Text = "13" And コマ14.Text = "15" And コマ15.Text = "14" And コマ16.Text = "16" Then メッセージ表示.ForeColor = Color.Red メッセージ表示.Text = "解けない並びです" Else メッセージ表示.Text = "" End If End Sub Private Sub 数値セット(ByRef コマ並び() As Integer) Dim コマ並び2(16) As Integer Dim コマカウント(16) As Integer Dim 合計数 As Integer Dim 余り As Integer Dim 行目 As Integer = 0 Dim 奇偶 As Integer = 1 Dim カウント As Integer = 0 Dim コマ退避 As Integer Dim i, j As Integer Do While 奇偶 = 1 合計数 = 0 ' ******* 乱数処理で数を並べる ****** Randomize() For k = 1 To 1000 For i = 1 To 16 j = Math.Floor(16 * Rnd()) + 1 コマ退避 = コマ並び(i) コマ並び(i) = コマ並び(j) コマ並び(j) = コマ退避 Next For i = 16 To 1 Step -1 j = Math.Floor(16 * Rnd()) + 1 コマ退避 = コマ並び(i) コマ並び(i) = コマ並び(j) コマ並び(j) = コマ退避 Next Next ' ******* 16が何行目にあるか求める ****** For i = 1 To 16 If コマ並び(i) = 16 Then ' 番目 = i If 0 = i Mod 4 Then 行目 = Int((i + 1) / 4) Else 行目 = Int((i) / 4) + 1 End If End If Next i ' ******* 16を除いて左に詰める ****** For i = 1 To 16 コマ並び2(i) = コマ並び(i) Next For i = 1 To 16 If コマ並び2(i) = 16 Then If i = 16 Then コマ並び2(i) = コマ並び2(i) Else コマ並び2(i) = コマ並び2(i + 1) End If For j = i To 15 コマ並び2(j) = コマ並び2(j + 1) Next j コマ並び2(16) = 0 Exit For End If Next i ' ******* 右に小さい数のカウント ****** For i = 1 To 15 For j = i + 1 To 15 If コマ並び2(i) > コマ並び2(j) Then カウント = カウント + 1 Else カウント = カウント + 0 End If Next j コマカウント(i) = カウント カウント = 0 Next i ' ******* 合計計算 ****** For i = 1 To 15 合計数 = 合計数 + コマカウント(i) Next i 余り = (合計数 + 行目) Mod 2 If 余り = 0 Then 奇偶 = 0 ' ** 偶数 ** Else 奇偶 = 1 ' ** 奇数 ** End If Loop End Sub Private Sub 判定処理(ByRef コマ白 As String, ByRef コマ黒 As String, ByRef コマ色B As System.Object, ByRef コマ色W As System.Object) If コマ黒 = "16" Then コマ黒 = コマ白 コマ白 = "16" コマ色B = Color.Black コマ色W = Color.White System.Media.SystemSounds.Exclamation.Play() End If End Sub Private Sub 実行前と完成後はコマをホールド() コマ01.Enabled = False : コマ02.Enabled = False : コマ03.Enabled = False : コマ04.Enabled = False コマ05.Enabled = False : コマ06.Enabled = False : コマ07.Enabled = False : コマ08.Enabled = False コマ09.Enabled = False : コマ10.Enabled = False : コマ11.Enabled = False : コマ12.Enabled = False コマ13.Enabled = False : コマ14.Enabled = False : コマ15.Enabled = False : コマ16.Enabled = False End Sub Private Sub 実行後はコマをホールド解除() コマ01.Enabled = True : コマ02.Enabled = True : コマ03.Enabled = True : コマ04.Enabled = True コマ05.Enabled = True : コマ06.Enabled = True : コマ07.Enabled = True : コマ08.Enabled = True コマ09.Enabled = True : コマ10.Enabled = True : コマ11.Enabled = True : コマ12.Enabled = True コマ13.Enabled = True : コマ14.Enabled = True : コマ15.Enabled = True : コマ16.Enabled = True End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles 終了.Click End End Sub Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 実行前と完成後はコマをホールド() End Sub
Private Function 漢数字変換(ByVal 算用数字 As String) As String
Select Case 算用数字
Case 1
Return "一"
Case 2
Return "二"
Case 3
Return "三"
Case 4
Return "四"
Case 5
Return "五"
Case 6
Return "六"
Case 7
Return "七"
Case 8
Return "八"
Case 9
Return "九"
Case 10
Return "十"
Case 11
Return "十一"
Case 12
Return "十二"
Case 13
Return "十三"
Case 14
Return "十四"
Case 15
Return "十五"
Case Else
Return "十六"
End Select End Function
End Class
あなたの回答
tips
プレビュー