2017-09-04 61 views
1

我正在创建一个项目,其中随机图像显示,当我点击一个按钮,图像(骰子)的总数将不得不被猜出。我已经有了随机图像生成和跟踪卷的人数。然而;我不知道如何使骰子(图片)具有一定的价值。就像骰子5显示的那样,其值为4.该人在guessBx中猜出猜测并点击guessBtn,如果他们是正确的,它将弹出。从C#中的图像获取值

这里是我的代码截至目前:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 

namespace PetalsAroundTheRose 
{ 
public partial class Form1 : Form 
{ 
public Form1() 
{ 
InitializeComponent(); 
    } 
    int a = 0; 
    int diceRoll; 
    int diceImage; 
    int diceValue; 

    private void btnRoll_Click_1(object sender, EventArgs e) 
    { 
     Random random = new Random(); 
     picBx1.Image = imageList1.Images[random.Next(1, 6)]; 
     picBx2.Image = imageList1.Images[random.Next(1, 6)]; 
     picBx3.Image = imageList1.Images[random.Next(1, 6)]; 
     picBx4.Image = imageList1.Images[random.Next(1, 6)]; 

     a++; 
     txtBxRolls.Text = a.ToString(); 

     //each dice seperate 
     //dice 1 
     diceRoll = 1; 
     diceImage = imageList1.Images[(1)]; 
     diceValue = 0; 

     //dice 2 
     diceRoll = 1; 
     diceImage = imageList1.Images[(2)]; 
     diceValue = 0; 

     //dice 3 
     diceRoll = 1; 
     diceImage = imageList1.Images[(3)]; 
     diceValue = 2; 

     //dice 4 
     diceRoll = 1; 
     diceImage = imageList1.Images[(4)]; 
     diceValue = 0; 

     //dice 5 
     diceRoll = 1; 
     diceImage = imageList1.Images[(5)]; 
     diceValue = 4; 
    } 

    private void guessBx_TextChanged_1(object sender, EventArgs e) 
    { 
} 
} 
} 

在我的设计,我有btnRoll滚动骰子。 guessBx进入的猜测,btnGuess,txtBxCorrect正确的金额,他们找来的,txtBxResult说,如果他们是正确与否

的图像是在一个ImageList

+0

你能解释一下吗?图像是骰子两侧的图像吗?你想检查输入的图像和数字是否相同? –

+0

是的,每个图像都是死亡的一面。在图像被“滚动”之后,能够检查所显示图像的值是否正确。类似的花瓣是玫瑰游戏。 – CRogers

+0

从(1-7)中选取一个随机数,它会告诉你模具的滚动值,用它作为ImageList的索引,取决于它们是如何列出的 – Plutonix

回答

0

首先,我创建一个类有这两个属性

public class Dice 
{ 
    public int Indexer { get; set; } 
    public string PhotoPath { get; set; } 

    public Dice(int indexer, string photoPath) 
    { 
     Indexer = indexer; 
     PhotoPath = photoPath; 
    } 
} 

之后,我把我的表格图片框,然后我创建了两个方法 第一个:

public void SetUp() 
    {   
     for (int i = 1; i <= 6; i++) 
     { 
      temp = random.Next(1, 6); 
      dice = new Die(temp, "C:\\Users\\giorg\\Desktop\\dice\\dice" + temp + ".PNG"); 
      dices.Add(dice); // list<Dice> dices = new list<Dice>(); 
     } 
    } 

,第二个:

public void RollDices() 
    { 
     //this is not necessary but if you want to keep a sum of dices keep 
     //it 
     var count = 0; 
     foreach (var dice in dices) 
     { 
      count += dice.Indexer; 
     } 
     //pictureboxes 2-7 are guess boxes 
     if(textBox2.Text.Equals(dices[0].Indexer.ToString())) 
      pictureBox1.Image = Image.FromFile(dices[0].PhotoPath); 

     if (textBox3.Text.Equals(dices[1].Indexer.ToString())) 
      pictureBox2.Image = Image.FromFile(dices[1].PhotoPath); 

     if (textBox4.Text.Equals(dices[2].Indexer.ToString())) 
      pictureBox3.Image = Image.FromFile(dices[2].PhotoPath); 

     if (textBox5.Text.Equals(dices[3].Indexer.ToString())) 
      pictureBox4.Image = Image.FromFile(dices[3].PhotoPath); 

     if (textBox6.Text.Equals(dices[4].Indexer.ToString())) 
      pictureBox5.Image = Image.FromFile(dices[4].PhotoPath); 

     if (textBox7.Text.Equals(dices[5].Indexer.ToString())) 
      pictureBox6.Image = Image.FromFile(dices[5].PhotoPath);  
    } 

将这两种方法来你的按钮单击事件,你都OK ... 通知我,如果你确定这种方法。

+0

由于图像不在我的电脑上,因此它们在图像列表中,我不能为这个新的图像添加... (imageList1.Images)?? – CRogers

+0

为什么你不使用有价值的类骰子(在我的示例中是索引器)和photopath,然后将“骰子”添加到列表<>中而不是使用imageList?是否有任何理由? – ggeorge