imageList1.Images[0]这样调用每次都返回一个新的图像的,所以你上面那些调用是两个不同的对象了;应该先设置好Image i1,image i2...这些图片属性后再添加到imageList1当中 imageList1.Images.Add或者你压根不要imageList1定义一个类 public class 扑克牌 { public Bitmap surface; //牌的图片 public int point; //点数 public ...... //其他属性 }使用IList<扑克牌> 扑克牌集=new List<扑克牌>();
int id = (int)pic.Tag;
我是这样写的:
imageList1.Images[0].Tag = 1;
label12.Text = (String)imageList1.Images[0].Tag;
但是label12.Text上不显示内容哎
你确定你给Tag赋值了?
你确定你给Tag赋值了?
imageList1.Images[0].Tag = 1;我是这样赋的值。也不知道对不对
public class 扑克牌
{
public Bitmap surface; //牌的图片
public int point; //点数
public ...... //其他属性
}使用IList<扑克牌> 扑克牌集=new List<扑克牌>();
不是很懂。我试了下,在pictureBox控件里设置它的Tag属性很好用。
但是一放到imageList里面就不行了(imageList1.Images.Add(pictureBox1.image))。就出那个错误。
还有定义的这个类是要写到program.cs文件里面么
还有定义的这个类是要写到program.cs文件里面么为什么要守着imagelist不放呢,添加扑克牌进集合 就是 扑克牌集.Add(new 扑克牌);
刚刚接触窗体,我用控制台是这样写的
cards.Add(new Card("黑桃",cardnum1));
现在定义的那个扑克牌类有public Bitmap surface
现在cards.Add(new Card(?));?号里面怎么写。
cards.Add(new Card(new Bitmap("图片路径"),"黑桃",cardnum1)); 类似这样
或者在资源列表
哦。那这些代码要写在哪里。我写在From1.cs,然后设计页面就出错了。
代码不多可以发上来
看看是否有能力帮你转换成winform的,只是试一试,能力有限啊!
namespace _21点游戏_控制台版_
{
public class Card {
public int num;
public string color;
public string cardnum;
public Card(int num,string color,string cardnum) {
this.color = color;
this.num = num;
this.cardnum = cardnum;
}
}
public class CardList {
List<Card> cards = new List<Card>();
public void List() {
int x;
string cardnum1;
for (x = 1; x <=10; x++)
{
cardnum1=Convert.ToString(x);
cards.Add(new Card( x,"黑桃",cardnum1));
cards.Add(new Card(x, "梅花", cardnum1));
cards.Add(new Card(x, "红桃", cardnum1));
cards.Add(new Card(x, "方块", cardnum1));
}
cards.Add(new Card(10, "黑桃", "J"));
cards.Add(new Card(10, "梅花", "J"));
cards.Add(new Card(10, "红桃", "J"));
cards.Add(new Card(10, "方块", "J"));
cards.Add(new Card(10, "黑桃", "Q"));
cards.Add(new Card(10, "梅花", "Q"));
cards.Add(new Card(10, "红桃", "Q"));
cards.Add(new Card(10, "方块", "Q"));
cards.Add(new Card(10, "黑桃", "K"));
cards.Add(new Card(10, "梅花", "K"));
cards.Add(new Card(10, "红桃", "K"));
cards.Add(new Card(10, "方块", "K"));
}
public void ResetCard() {
int x;
Card TapCard = new Card(1,"花色","X");
Random ran = new Random();
for (int i = 0; i < 500; i++) {
x = ran.Next(0, 52);
TapCard = cards[0];
cards[0] = cards[x];
cards[x] = TapCard;
}
}
public Card PutCard() {
Card Tap= new Card(1, "花色", "X");
Tap= cards[0];
cards.RemoveAt(0);
return Tap;
}
}
public class Game
{
List<Card> PlayerList = new List<Card>();
List<Card> PCList = new List<Card>();
CardList card1 = new CardList();
public void GameStart()
{
place1://重新开始游戏
int PlayerCount, PcCount;
int PlayerMoney=1000, PcMoney=1000;
string key1,key2,key3;//key1为游戏开始的判定,key2为摸牌判定,key3为赌金完的判定
int tap;//每局的赌金
place:while (true)
{//游戏最起初开始循环
if (PlayerMoney <= 0) {
Console.WriteLine("你已经输掉了所有赌金,是否重新开始游戏(y开始,n放弃)");
key3 = Console.ReadLine();
if (key3 == "y") {
goto place1;
}
if (key3 == "n") {
Console.WriteLine("游戏结束");
break;
}
}
if (PcMoney <= 0)
{
Console.WriteLine("恭喜你已经赢取了所有赌金,是否重新开始游戏(y开始,n放弃)");
key3 = Console.ReadLine();
if (key3 == "y")
{
goto place1;
}
if (key3 == "n")
{
Console.WriteLine("游戏结束");
break;
}
}
Console.WriteLine("玩家目前赌金:" + PlayerMoney);
Console.WriteLine("庄家目前赌金:" + PcMoney);
Console.WriteLine();
Console.Write("输入y继续游戏,输入n结束游戏");
key1 = Console.ReadLine();
if (key1 == "y")
{//游戏开始判定
PlayerCount = 0;
PcCount = 0;
Console.Write("请下注:");
tap = Convert.ToInt32(Console.ReadLine());
card1.List();
card1.ResetCard();
PlayerList.Add(card1.PutCard());//发牌
PCList.Add(card1.PutCard());
PlayerList.Add(card1.PutCard());
PCList.Add(card1.PutCard());
Console.WriteLine("你的手牌:");
foreach (Card m in PlayerList)
{
if (m.cardnum == "1") {
Console.Write("您拿到了" + m.color + m.cardnum + ",请输入您选择的点数1或者11:");
m.num = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine(m.color + " " + m.cardnum + "点数" + m.num);
PlayerCount += m.num;
}
Console.WriteLine("你的点数之和:" + PlayerCount);
Console.WriteLine();
Console.WriteLine("庄家手牌:(第一张为暗牌)");
Console.WriteLine(PCList[1].color + " " + PCList[1].cardnum + "点数" + PCList[1].num);
PcCount = PCList[0].num + PCList[1].num;
while (true)
{//第一次摸牌的循环
Console.Write("是否继续摸牌(y继续,n放弃)");
key2 = Console.ReadLine();
if (key2 == "y")
{
PlayerCount = 0;
PlayerList.Add(card1.PutCard());
Console.WriteLine("你的手牌:");
foreach (Card m in PlayerList)
{
if (m.cardnum == "1")
{
Console.Write("您拿到了" + m.color + m.cardnum + ",请输入您选择的点数1或者11:");
m.num = Convert.ToInt32(Console.ReadLine());
}
Console.WriteLine(m.color + " " + m.cardnum + "点数" + m.num);
PlayerCount += m.num;
}
Console.WriteLine("你的点数之和:" + PlayerCount);
if (PlayerCount > 21)
{
Console.WriteLine("爆牌,输掉了此场");
PlayerMoney -= tap;
PcMoney += tap;
PlayerList.Clear();
PCList.Clear();
break;
}
}
if (key2 == "n")
{
int x = 2;
while (true)
{//庄家摸牌的循环
if (PcCount <= 16)
{
PCList.Add(card1.PutCard());
PcCount += PCList[x].num;
x++;
}
else
{
Console.WriteLine("庄家手牌:");
foreach (Card m in PCList)
{
Console.WriteLine(m.color + " " + m.cardnum + "点数" + m.num);
}
Console.WriteLine("庄家点数之和:" + PcCount);
if (PcCount > 21)
{
Console.WriteLine("庄家爆牌,你赢了!");
PlayerMoney += tap;
PcMoney -= tap;
}
if (PcCount <= 21 && PcCount > PlayerCount)
{
Console.WriteLine("庄家点数之和大于你,你输了!");
PlayerMoney -= tap;
PcMoney += tap;
}
if (PcCount <= 21 && PlayerCount > PcCount)
{
Console.WriteLine("你的点数之和大于庄家,你赢了!");
PlayerMoney += tap;
PcMoney -= tap;
}
if (PcCount <= 21 && PcCount == PlayerCount)
{
Console.WriteLine("庄家点数之和你相同,平局!");
}
PlayerList.Clear();
PCList.Clear();
goto place;
}
}
}
}
}
if (key1 == "n") {
Console.WriteLine("游戏结束");
break;
}
} } }
class Program
{
static void Main(string[] args)
{
Game game1 = new Game();
game1.GameStart();
}
}
}
10~K为10点。
2:构造洗牌与发牌的方法。
3:庄家暗一张,明一张。玩家可见自己所有牌。(初始每人发两张牌)
4:黑杰克:若庄家有10和A的时候,此时为黑杰克。
如果玩家有黑杰克,庄家没有黑杰克,玩家就能赢得2倍的赌金(1赔2)。如果庄家的明牌有一张A,则玩家可以考虑买不买保险,金额是赌筹的一半。如果庄家是blackjack,那么玩家拿回保险金并且直接获胜;如果庄家没有blackjack则玩家输掉保险继续游戏。
5:庄家若不足16点,就继续不牌,直至16点为止。
6:若庄家与玩家点数均小于等于21点且玩家大于庄家,玩家赢。玩家大于21点,庄家不摸牌即赢。1. 定义一个扑克牌类card。包括花色,牌面点数。
2. 定义CardList类,使用泛型来定义一整副扑克牌,52张。在CardList类里添加洗牌ResetCard方法,添加发牌PutCard方法。
3. 定义玩家Player类,使用泛型来定义玩家手中扑克牌。
4. 定义庄家PC类,使用泛型来定义庄家手中扑克牌。
5. 定义游戏Game类,创建GameStart方法(用于一开始的发牌),创建Gaming方法(将各种规则添加)。
6. 在Main方法中开始游戏,结束游戏。自己写的
public class
{
public image img{get;set;}
public int number{get;set;}
public 花色 style {get;set;}
}
TAG肯定可以的
不行。imageList.image[0].Tag=1.这样赋不了值。始终都是NULL
但是pictureBox这样就可以。可能imageList控件的问题。
[email protected]
我研究研究。谢谢你。辛苦了