老虎机游戏c#image值

时间:2016-03-04 16:28:42

标签: c# arrays

我正在做一个老虎机游戏,它很简单,基本上它会将图片中的图像滚动成随机图像。使用此代码

PictureBox[] PictureboxArray = new PictureBox[5];

使用此行代码

分配5个图片箱
PictureboxArray[0] = pbxK;
            PictureboxArray[1] = pbxQueen;
            PictureboxArray[2] = pbxKing;
            PictureboxArray[3] = pbxJoker;
            PictureboxArray[4] = pbxAce;

图像按照

分配
Image[] Rollimage = new Image[5];
            Rollimage[0] = Properties.Resources.K;
            Rollimage[1] = Properties.Resources.Queen;
            Rollimage[2] = Properties.Resources.King;
            Rollimage[3] = Properties.Resources.Joker;
            Rollimage[4] = Properties.Resources.Ace;

并且图片框的初始图像被分配为

            pbxK.Image = Rollimage[0];
            pbxQueen.Image = Rollimage[1];
            pbxKing.Image = Rollimage[2];
            pbxJoker.Image = Rollimage[3];
            pbxAce.Image = Rollimage[4]; 

图像滚动的实际代码如下

for (int i = 0; i <= 4; i++)
            {
                if (PictureboxArray[i].Enabled == true)
                {

                    Roll[i] = Rnd.Next(0, 4);
                }
                PictureboxImage(PictureboxArray[i], Roll[i]); 
            }

rnd是一个新的随机

Random Rnd = new Random();

滚入int以保存卷的索引

int[] Roll = new int[5];

一切正常,图片每隔一秒就滚动不同的图像,正如我预先定义的那样,现在我想做的就是分配这个

 int[] PictureValues = new int[]{100, 225, 550, 775, 1000};

到图像

Image[] Rollimage = new Image[5];

意味着Properties.Resources.K;的第一个滚动图像的实际值为100 等等,有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

所以..如果我正确理解你的问题,一旦选择了图像,你需要一种方法来反转它以将它与一个值相关联。一种方法可能如下:

注意:看来每个显示的图片框都被命名为king / joker等。所以如果你正在查看'老虎机'的前面,你会看到5个名为pbxk,pbxQueen,pbxKing,pbxJoker的盒子。 ,pbxAce但它们不一定显示与其名称相关联的图像..

int total = 0;
for(int i=0;i<Rollimage.Length;i++)
{
    if(pbxk.Image.Equals(Rollimage[i]))
    {
        total += PictureValues[i];
    }
    if(pbxQueen...)
    {
        //Do the same thing for each pbx
    }
}

我唯一不是百分之百的是比较方法。此外,您可以使用图片框的ImageLocation属性在分配图像时存储图像的路径,然后将其与文件名进行比较,以确定显示的图像。

如何比较图片的示例:Stack Overflow Image Compare

鉴于该示例,您可能希望尝试==使用当前的Image数组..如果这不起作用,您可能需要定义要比较的位图数组。对我来说似乎浪费了记忆,但它应该有用。

<强> 修改

以下代码正确地合并了图像的值。我只是用两个资源组合了一个带有2个图片框,一个控制按钮和一个标签的快速示例程序。这应该展示执行所需的所有技术。

public partial class Form1 : Form
{
    PictureBox[] PictureboxArray = new PictureBox[2];
    Image[] Rollimage = new Image[2];
    int[] pictureValues = new int[2];
    public Form1()
    {
        InitializeComponent();
        pictureValues[0] = 100;
        pictureValues[1] = 200;

        Rollimage[0] = Properties.Resources.TitleBar;
        Rollimage[1] = Properties.Resources.Untitled;

        PictureboxArray[0] = this.pictureBox1;
        PictureboxArray[1] = this.pictureBox2;
        PictureboxArray[1].Image = Rollimage[0];
        PictureboxArray[0].Image = Rollimage[0];
    }

    private void button1_Click(object sender, EventArgs e)
    {
        int total = 0;
        for(int i = 0;i<Rollimage.Length;i++)
        {
            foreach(var box in PictureboxArray)
            {
                if(box.Image == Rollimage[i])
                {
                    total += pictureValues[i];
                }
            }
        }
        label1.Text = total.ToString();
    }
}