2017-09-04 58 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