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

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

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

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

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

Q&A

解決済

1回答

1707閲覧

vb.net 乱数で出した数値と同じ値を設定している画像を表示

leaper

総合スコア4

.NET Framework

.NET Framework は、Microsoft Windowsのオペレーティングシステムのために開発されたソフトウェア開発環境/実行環境です。多くのプログラミング言語をサポートしています。

VB.NET

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

0グッド

0クリップ

投稿2021/04/20 02:35

編集2021/04/20 05:06

閲覧頂きありがとうございます。
VB.NET初心者です。
今回自主製作でvb.netを用いてソシャゲによくあるガチャに似たものを作ろうと考えています。今考えているのはガチャ画面があり、単発ガチャと10連ガチャを選択できる画面があります。そこでボタンを押してどちらかの画面に移動します。ボタンを押すとカプセルが出てきてそこから乱数で出した数値によってSSRやRが出たりする感じで考えています。
今わからない部分は、

・1-100を出す乱数があり、乱数を出してからその数値と同じ値に設定している画像を表示する。
例 1だとSSRのAというキャラクター 90だとRのBというキャラクターの画像を出力する

・ボタンを1回押すとLabel1にキャラクター名を表示、二回目を押すとLabel2に次の乱数で出したキャラクター名を表示する。

勉強中なので他にもいい方法があればご教示いただけますと幸いです。宜しくお願いいたします。

VB.NET

1Public Class Form3 2 Dim rand As New System.Random() 3 Dim cnt As Integer 4 Dim m As Integer 5 Dim i1 As Integer 6 Dim SSR As String() = {"SSR ゼウス", "SSR ヴァルキリー", "SSR パンドラ"} 7 Dim SR As String() = {"SR サキュバス", "SR スフィンクス", "SR マナ"} 8 Dim N As String() = {"N スライム", "N スライムベス", "N ももんじゃ"} 9 Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click 10 Label1.Text = "" '初期化ボタン 11 Me.Button1.Enabled = True 12 cnt = 0 13 End Sub 14 15 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 16 17 i1 = 0 18 m = rand.Next(0, 3) 19 i1 = rand.Next(0, 100) 20 If cnt <> 9 Then '最初の1~9連目はNからSSRを乱数で出力 SSR 3% SR 7% N 90% 21 For i = 0 To 100 22 If i = i1 And (i >= 0 And i < 3) Then 23 Label1.Text = Label1.Text + SSR(m) & vbCrLf '今現在は配列SSR,SR,Nに登録してあるモンスターの名前を出力 24 ElseIf i = i1 And (i >= 3 And i < 10) Then 25 Label1.Text = Label1.Text + SR(m) & vbCrLf 26 ElseIf i = i1 And (i >= 10 And i < 100) Then 27 Label1.Text = Label1.Text + N(m) & vbCrLf 28 End If 29 Next i 30 End If 31 If cnt = 9 Then '最後の10連目はSR以上確定 SSR 3% SR 97% 32 i1 = 0 33 m = rand.Next(0, 3) 34 i1 = rand.Next(0, 100) 35 For i = 0 To 100 36 If i = i1 And (i >= 0 And i < 3) Then 37 Label1.Text = Label1.Text + SSR(m) & vbCrLf 38 ElseIf i = i1 Then 39 Label1.Text = Label1.Text + SR(m) & vbCrLf 40 End If 41 Next i 42 Me.Button1.Enabled = False 43 End If 44 cnt = cnt + 1 45 End Sub 46 47 Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load 48 Label1.Text = "" 49 Me.Button1.Enabled = True 50 cnt = 0 51 End Sub 52 53 Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click 54 Me.Close() '閉じる 55 End Sub 56 57End Class

今後種類を増やしますが、今のところこの配列から乱数でキャラクター名を出力しています。
乱数でSSRのゼウスが選ばれたときにどこかからゼウスの画像を持ってきて表示したいと考えています。配列を使えばできそうと考えましたが、どのようにSSR(0)が選ばれたときに該当画像を出力するかわかりませんでした。

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

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

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

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

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

YAmaGNZ

2021/04/20 02:56

表示する内容を配列で用意すればいいのではないでしょうか。
dodox86

2021/04/20 03:01

ご質問の内容では具体的に何が分からないのかが伝わらないようです。(「分からない」ことと言うより「やりたい」ことの羅列です)具体的にどういうコードを書いたらそれが実現できるのか、と言う質問でしょうか。もしそうであると、それはほぼ丸投げです。 [質問するときのヒント] https://teratail.com/help/question-tips
leaper

2021/04/20 04:28

申し訳ございません。コードなどいくつか情報を追加いたしました。
退会済みユーザー

退会済みユーザー

2021/04/20 04:42 編集

・ソースは画像ではなく、コードの挿入でテキストで記入してください。 ・宣言されてない変数が使われていますが、メンバ変数でしょうか?変数の宣言部も含めてください。コピペでコンパイルが通る状態だと回答者がローカルで再現しやすいです。 ・変数名が何に使われているか大変判りづらく読み手の負担が大きいので、もう少し判り易い変数名を付けた方がよいと思われます。(Randomクラスのオブジェクトならrand, randomとか)
YAmaGNZ

2021/04/20 04:40

1~100の配列に全部入れればどうですか?
leaper

2021/04/20 05:09

radian様 コードの挿入や必要ない変数を削除や分かりやすい名前に変更いたしました。 YAmaGNZ様 初心者質問で恐縮ですが、配列に文字や数字以外の画像を入れることは可能なのでしょうか?例えば {画像1, 画像2, 画像3}など出来るのでしょうか?
YAmaGNZ

2021/04/20 05:42

単体ではどうやって保持しているのですか? その保持している型の配列にすればいいかと思います。
leaper

2021/04/20 13:03

YAmaGNZ様 他の方に回答いただき作ることが出来ました。アドバイス頂きありがとうございました。
guest

回答1

0

ベストアンサー

キャラ名と一緒に画像ファイルのパスかファイル名も持たせたクラスを作ればいいんじゃないでしょうか。
例えば、

vbnet

1 Public Class Chara 2 Public Property Name As String 3 Public Property ImageFile As String 4 End Class 5 6 Private _ListSSR As New List(Of Chara) From 7 { 8 New Chara() With {.Name = "SSR1", .ImageFile = "SSR1.png"}, 9 New Chara() With {.Name = "SSR2", .ImageFile = "SSR2.png"}, 10 New Chara() With {.Name = "SSR3", .ImageFile = "SSR3.png"} 11 }

みたいな。

インデックス0のSSRを持ってくる例だと

vbnet

1 Const ImageFolder = "c:\path\to\image\" 2 Dim chara = _ListSSR(0) 3 Label1.Text = chara.Name 4 PictureBox1.Image = New Bitmap(System.IO.Path.Combine(ImageFolder, chara.ImageFile))

という感じで出来ます。
Charaにレアリティを持たせれば、Chara全部のListを一つ作って、そこからR、SR、SSRのListに振り分けるとかも出来ます。

投稿2021/04/20 06:04

編集2021/04/20 06:10
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

leaper

2021/04/20 13:03

返信遅れて申し訳ありません。無事作りたかったものを作ることが出来ました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問