|
■No88049 (y3 さん) に返信 > 絵柄は5種類で > それ用のpictureboxを9個作り、それに7、jac、ベル、スイカ、チェリー、jac,ベル、スイカ、チェリーの順番で入れました
絵柄は5種類なのに、それ用の PictureBox が9個有るのはなぜですか。 この「9個」は、次の「9個の PictureBox でB分割にして」の9個と関係があるのでしょうか。
というか、あれですかね。コードで画像を読む方法がわからなかったから PictureBox をおいて、Image プロパティに設定した、って所ですかね?
それで、No88056 の「うまく動かない」は、ベルが3つ並んだが150加算されない、ってことですかね?
絵柄用の PictureBox は5つで良いです。絵柄を示すためのオブジェクトなので、絵柄を示すことだけに集中します。 表示の順番を示すのは別のオブジェクトに任せます。
Dim junjo = ( 0, 1, 2, 3, 4, 1, 2, 3, 4 )
これで、junjo は9個あり、0からそれぞれ 7、jac、ベル、スイカ、チェリー、jac,ベル、スイカ、チェリー の画像へのインデックスになります。
> Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick > PictureBox1.Image = egara(idx Mod egara.Length).image > PictureBox2.Image = egara((idx + 1) Mod egara.Length).image > PictureBox3.Image = egara((idx + 2) Mod egara.Length).image > idx = idx + 1 > End Sub
この辺は、
PictureBox1.Image = egara(junjo(idx Mod junjo.Length).Image
などになります。
idx のスコープが不明ですが、おそらくインスタンスなのでしょう。 では、判定の所でも使います。
> If hontai(0).image = hontai(3).image And hontai(3).image = hontai(6).image Then > Label2.Text = CDec(Label2.Text) + 150 > ElseIf hontai(1).image Is hontai(4).image And hontai(4) Is hontai(7).image Then > Label2.Text = CDec(Label2.Text) + 150 > ElseIf hontai(2).image Is hontai(5).image And hontai(5) Is hontai(8).image Then > Label2.Text = CDec(Label2.Text) + 150 > ElseIf hontai(2).image Is hontai(4).image And hontai(4) Is hontai(6).image Then > Label2.Text = CDec(Label2.Text) + 150 > End If
ElseIf でつないでいますが、本当に良いのですか? まぁ、「のようなもの」だからいいのか。 まず、インデックスを取り出します。
Dim LeftUp = junjo(idx Mod junjo.Length) Dim CenterUp = junjo(idx2 Mod junjo.Length) Dim RightUp = junjo(idx3 Mod junjo.Length)
これらは「egara へのインデックス」なので、同じ数字なら同じ絵柄を指していることになります。 Integer 型なので、素直に比較できます。
If LeftUp = CenterUp AndAlso CenterUp = RightUp Then tensu += 150 Endif Label2.Text = tensu.ToString
1つのオブジェクトに複数の目的を持たせるような設計は避けます。 「Object」の意味は「目的」です。複数の目的を同時に達成するのは難しいでしょ? オブジェクトの方向を向いているだけではなく、オブジェクトの目的を考え、その目的を達成する方法を考えます。 この、「目的を達成する方法を考える」が「志向(ある目的に向けて気持ちを向けること)」です。 Object Oriented は「オブジェクト指向(ある方向を向いていること)」と訳されていますが、誤訳です。 オブジェクトに目的を持たせるために、名前を正しくつけます。 PictureBox1 ではなく、pctLeftUp など、どこに表示されているのか、などがわかるようにします。
|