質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

0回答

730閲覧

VB.net 漢数字変換

退会済みユーザー

退会済みユーザー

総合スコア0

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2023/01/21 04:10

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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2023/01/21 05:56

これ数値と文字列を同じものとして扱ってますが、コンパイルできますか?
退会済みユーザー

退会済みユーザー

2023/01/21 06:35

初心者ですみません。 コンパイルするとはなんでしょうか。 デバッグは正常にできます。 (漢数字に変換はできませんが、エラーメッセージはでません。)
退会済みユーザー

退会済みユーザー

2023/01/21 06:37

意味は調べたのですがよくわかりません。 コンパイルとは、特定のプログラミング言語を用いて記述されたコンピュータープログラムを他の言語 (普通はコンピューターが実行できるバイナリ言語) を用いて記述された同じプログラムに形を変えることである。
sazi

2023/01/21 06:59

漢数字を配列定数で保持しておいて、数字を添え字にするだけの方がシンプルですね。
退会済みユーザー

退会済みユーザー

2023/01/21 07:48

それはselect caseを使ってできますか?
KOZ6.0

2023/01/21 10:08

Dim a = 漢数字変換("1") とすると、変数 a には ”一" が入りますが何が問題なのでしょうか?
退会済みユーザー

退会済みユーザー

2023/01/21 10:36

それはprivate functionの下に定義するということでしょうか。 やってみましたが、漢数字変換されませんでした。 一応勉強として、ByvalまたはByrefとselect caseは使ってみたいのですが、どうでしょうか。
KOZ6.0

2023/01/21 11:43

うーん、そのレベルですか・・・ ある程度の知識が無いと、掲示板でやりとりできるものではありません。 「Visual Basic 初級講座 [改訂版]」 https://www.umayadia.com/VBStandard2/VBStandard2Toc.htm あたりで勉強してみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問