【发布时间】:2015-12-02 20:30:24
【问题描述】:
我的任务是为我的最终项目用 C# 创建 BlackJack。 C# 对我来说相当陌生,所以我无法将图像分配给我的卡片。现在我有一个卡片类:
public class Card
{
private string face;
private string suit;
public Card(string cardFace, string cardSuit)
{
face = cardFace;
suit = cardSuit;
}
public override string ToString()
{
return face + " of " + suit;
}
}
我有甲板课:
public class Deck
{
private Card[] deck;
private int currentCard;
private const int NUMBER_OF_CARDS = 52;
private Random ranNum;
public Deck()
{
string[] faces = { "Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
string[] suits = { "Hearts", "Clubs", "Diamonds", "Spades" };
deck = new Card[NUMBER_OF_CARDS];
currentCard = 0;
ranNum = new Random();
for (int count = 0; count < deck.Length; count++)
deck[count] = new Card(faces[count % 13], suits[count / 13]);
}
public void Shuffle()
{
currentCard = 0;
for (int first = 0; first < deck.Length; first++)
{
int second = ranNum.Next(NUMBER_OF_CARDS);
Card temp = deck[first];
deck[first] = deck[second];
deck[second] = temp;
}
}
public Card DealCard()
{
if (currentCard < deck.Length)
return deck[currentCard++];
else
return null;
}
}
最后,我有一个简单的 Windows 窗体,它有两个按钮,可以简单地发牌并用显示当前发牌字符串的标签来洗牌:
public partial class Form1 : Form
{
Deck deck = new Deck();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
}
private void buttonDeal_Click(object sender, EventArgs e)
{
Card card = deck.DealCard();
labelOutput.Text = card.ToString();
}
private void buttonShuffle_Click(object sender, EventArgs e)
{
deck.Shuffle();
}
}
现在,我只需要一些方法将图像分配给我的卡片,但我不确定如何......任何帮助将不胜感激。
编辑:这是我在 Card 课程中一直在尝试的内容。
public static Image FromFile()
{
fileName = face + "_" + "of" + "_" +suit+".png";
Image image = Image.FromFile(fileName);
return image;
}
我有一个错误说资源没有文件名的定义。
我已将所有图像作为资源添加到项目中,并使用类似于“Eight_of_Clubs”的约定命名所有文件。
编辑:我已经在我的 Windows 表单中更改了这个:
private void buttonDeal_Click(object sender, EventArgs e)
{
Card card = deck.DealCard();
string fileName = card.getFace() + "_" + "of" + "_" + card.getSuit() + ".png";
Image image = Image.FromFile(fileName);
pictureBox1.Image = image;
labelOutput.Text = card.ToString();
}
但是当我运行程序并单击交易按钮时,我得到了错误: File does not exist exception
这是错误的,因为该项目的资源加载了一个名为 King_of_Spades.png 的文件
【问题讨论】:
-
确实有一个类叫做
Image。您是否在 Google 上搜索过 C# windows forms images 或类似的东西?数以百万计的结果......为什么还要问? -
因为我需要根据绘制的卡片生成图像。是的,我知道如何手动将图像添加到图片框,但这没有用。
-
当你说生成时,你是真的想自己构建图像,还是想从文件中提取它?
-
这正是我要推荐的。然后您可以使用
Image.FromFile()拉取图像。 -
我一直在尝试,但一直遇到问题。我会进行编辑并告诉你我在哪里。
标签: c# image playing-cards