基本信息
源码名称:纸牌游戏21点 源码下载
源码大小:5.87M
文件格式:.rar
开发语言:C#
更新时间:2014-05-09
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):78630559
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
一个不错的学习例子,希望可以帮到正在研究做游戏的朋友们,注意哦,是C#开发的.
一个不错的学习例子,希望可以帮到正在研究做游戏的朋友们,注意哦,是C#开发的.
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
private void 新游戏ToolStripMenuItem_Click(object sender, EventArgs e) //新游戏,将游戏中所有的数据清空或归位;
{
index = 0; count = 0;
maskedTextBox1.ReadOnly = false;
a = 0; b = 0; c = 0; d = 0; f = 0; g = 0; h = 0; o = 0; ii = 1; ss = 0; aa = 0; diannao = 0; q1 = 0; qq = 0; duoyu = 0; xiazhu = 0; zongshu = 0;
pictureBox1.Hide(); pictureBox2.Hide(); pictureBox3.Hide(); pictureBox4.Hide();
pictureBox5.Hide(); pictureBox6.Hide(); pictureBox7.Hide(); pictureBox8.Hide(); pictureBox15.Hide();
pictureBox9.Hide(); pictureBox10.Hide(); pictureBox11.Hide(); pictureBox12.Hide();
pictureBox13.Hide(); pictureBox14.Hide(); button4.Enabled = false;
button8.Enabled = false; button7.Enabled = false; button6.Enabled = false; button9.Enabled = true;
button1.Enabled = true; button2.Enabled = true; button3.Enabled = true; button9.Enabled = true;
button5.Enabled = true; maskedTextBox1.Enabled = true; label13.Text = "";
maskedTextBox1.Text = ""; label7.Text = "0"; label4.Text = "1000"; label11.Text = ""; label14.Text = "";
}
private void button4_Click(object sender, EventArgs e) //开局,与新游戏唯一的不同就是label4没有清空!!
{
index = 0; count = 0;
label18.Text = ""; label6.Text = "0"; label14.Text = "0";
a = 0; b = 0; c = 0; d = 0; f = 0; g = 0; h = 0; o = 0; ii = 1; ss = 0; aa = 0; diannao = 0; qq = 0; xiazhu = 0; zongshu = 0; duoyu = 0;
pictureBox1.Hide(); pictureBox2.Hide(); pictureBox3.Hide(); pictureBox4.Hide();
pictureBox5.Hide(); pictureBox6.Hide(); pictureBox7.Hide(); pictureBox8.Hide(); pictureBox15.Hide();
pictureBox9.Hide(); pictureBox10.Hide(); pictureBox11.Hide(); pictureBox12.Hide();
pictureBox13.Hide(); pictureBox14.Hide(); button4.Enabled = false;
button8.Enabled = false; button7.Enabled = false; button6.Enabled = false; button9.Enabled = true;
button1.Enabled = true; button2.Enabled = true; button3.Enabled = true; button9.Enabled = true;
button5.Enabled = true; maskedTextBox1.Enabled = true; label13.Text = "";
maskedTextBox1.Text = ""; label7.Text = "0"; label11.Text = ""; q1 = 0;
}
private void Form1_Load(object sender, EventArgs e) //游戏执行时因为没有用到pictureBox,所以将所有的pictureBox隐藏;
{
pictureBox1.Hide(); pictureBox2.Hide(); pictureBox3.Hide(); pictureBox4.Hide(); pictureBox13.Hide();
pictureBox5.Hide(); pictureBox6.Hide(); pictureBox7.Hide(); pictureBox8.Hide(); pictureBox14.Hide(); pictureBox15.Hide();
pictureBox9.Hide(); pictureBox10.Hide(); pictureBox11.Hide(); pictureBox12.Hide(); maskedTextBox1.ReadOnly = true;
}
double zijin = 0, zongjin, zongshu = 0, shiqu, diannao, xiazhu, duoyu;
Random randon = new Random(); //随机数定义
int a, b, c, d, f, g, h, o, l, m, n, y, z, v; //为每一个pictureBox的牌面的点数的定义
int ss, aa, qq = 0, ii = 1, q1 = 0;
double d1, d2, d3, d4, d5, d6, d7; //这个是电脑牌面数值的定义;
double w1, w2, w3, w4, w5, w6, w7; //这个是玩家牌面的定义;
private void 帮助框ToolStripMenuItem_Click(object sender, EventArgs e) //打开帮助面板,为新的窗体;
{
Form2 a = new Form2();
a.Show();
}
public void an_Click(object sender, EventArgs e) //游戏正式开始时,要下注,这个为下注的Button的设定代码;(100、200、500)
{
string bot = ((Button)sender).Text;
int lab7 = int.Parse(bot);
q1 = q1 lab7;
if (q1 >= Convert.ToInt32(label4.Text))
{
q1 = Convert.ToInt32(label4.Text);
button1.Enabled = false; button2.Enabled = false; button3.Enabled = false;
button5.Enabled = false;
}
label7.Text = q1.ToString();
button6.Enabled = true;
button7.Enabled = false;
button4.Enabled = false;
if (duoyu == 1)
xiazhu = 0;
duoyu = 0;
}
public void jiapai_Click(object sender, EventArgs e) //Button6,发牌
{
if (double.Parse(label4.Text) < double.Parse(label7.Text)) //如果玩家下注大于现有资金的最大值,便将现有资金全数作为下注金额;
label7.Text = label4.Text;
pictureBox1.Show();pictureBox2.Show(); //四个PictureBox,1、2是庄家的前面两张牌,8、9是玩家的前面两张牌;
pictureBox8.Show();pictureBox9.Show();
switch (ii) //ii是作为进入玩家加牌的数值定义,因为玩家是一张一张牌来增加的。
{
case 1: //ii的默认值为1;
{
pictureBox1.Image = Image.FromFile("tupian\\53.jpg"); //电脑台面上的第一张牌,为背面,无用
a = randon.Next(52);//随机选出第一张牌,为电脑台面上的第二张牌,因为是第一张随机选出的牌,所以不用判断是否与其它的牌重复
pictureBox2.Image = Image.FromFile("tupian\\" a.ToString() ".jpg"); //电脑台面上的第二张牌,同时也是作为基础牌面要计算数值的第一张牌;
d1 = a % 13 1; //将所得的牌转换成1~13的数字
if (d1 > 10) //判断是否为11、12、13这三个数字,如果是,就将它转换为10;
d1 = 10;
b = randon.Next(52);//这里往下就是玩家的第一张牌,与之相应的是在文件夹中名字为0~51的图片;
while (b == a) //当玩家的这个随机得到的牌与庄家得到的第一张随机的牌相同时,则重新生成一个随机数,让它与前面的牌的点数不一样;
{
b = randon.Next(52);
}
w1 = b % 13 1; //计算出随机得到的数所在的牌的点数
if (w1 > 10) //当得到的点数>10的时候,即11、12、13,将它们变成10(作为21点游戏的规则而设定的)
w1 = 10;
zongshu = w1; //zongshu是玩家所得的点数相加之和的定义
pictureBox8.Image = Image.FromFile("tupian\\" b.ToString() ".jpg"); //将玩家随机得到的第一张牌显示出来
c = randon.Next(52);//这里往下为玩家的第二张牌,一直往下相似的代码均为此效果;
while (c == a || c == b)
{
c = randon.Next(52);
}
w2 = c % 13 1;
if (w2 > 10)
w2 = 10;
zongshu = w2;
pictureBox9.Image = Image.FromFile("tupian\\" c.ToString() ".jpg");
if (w1 == 1 && w2 != 1) //这里是判断BlackJack的地方,只有当玩家的开始得到的两张牌为一张A与一张大于等于10的牌时,玩家即为得到了BlackJack;
{
if (w1 w2 == 11) //BlackJack的胜利条件是一张A和一张10点的牌,所以相加为11;
{
//MessageBox.Show("恭喜你取得了BlackJack!!");
index = 0;
count = 0;
timer1.Enabled = true;
yin = 30000;
m1 = 30031;
timer2.Enabled = true;
button6.Enabled = false; //这里相应的按钮效果
button7.Enabled = false;
button8.Enabled = false;
button4.Enabled = true;
zijin = 1.5 * double.Parse(label7.Text); //将下注金额与现有金额化为数值,并将下注金额的1.5倍加入原有的金额中
zongjin = double.Parse(label4.Text);
zongjin = zijin;
label4.Text = zongjin.ToString();
goto aaa; //因为得到了BlackJack,所以用Goto语句强行结束这个Switch语句
}
else if (w1 w2 != 11) //这里自然是没能取得BlackJack的判断语句,由于这个语句的进入条件是w1为A,所以将w1看做11;
zongshu = 10;
aa = 1;
}
else if (w2 == 1 && w1 != 1) //与上面相反,这里是w2的条件为A时进入的判断,其余同上
{
if (w2 w1 == 11)
{
//MessageBox.Show("恭喜你取得了BlackJack!!");
index = 0;
count = 0;
timer1.Enabled = true;
yin = 30000;
m1 = 30031;
timer2.Enabled = true;
button6.Enabled = false;
button7.Enabled = false;
button8.Enabled = false;
button4.Enabled = true;
zijin = 1.5 * double.Parse(label7.Text);
zongjin = double.Parse(label4.Text);
zongjin = zijin;
label4.Text = zongjin.ToString();
goto aaa;
}
else if (w2 w1 != 11)
zongshu = 10;
aa = 1;
}
else if (w1 == 1 && w2 == 1)
{
zongshu = 12;
aa = 1;
}
ii = 13;
} break;
case 13:
{
d = randon.Next(52); //这里是玩家取得第三张牌的地方
while (d == a || d == b || d == c)
{
d = randon.Next(52);
}
w3 = d % 13 1;
if (w3 >= 10)
w3 = 10;
zongshu = w3;
if (w3 == 1)
{
zongshu = 10;
if (zongshu > 21)
zongshu -= 10;
}
pictureBox10.Show();
pictureBox10.Image = Image.FromFile("tupian\\" d.ToString() ".jpg");
if (zongshu > 21) //判断玩家拿到三张牌后是否超过21点
{
if (aa == 1)
{
zongshu -= 10;
aa = 0;
}
if (zongshu > 21)
{
yin = 20000;
m1 = 20035;
timer2.Enabled = true;
label18.Text = "输";
shiqu = double.Parse(label7.Text);
label14.Text = shiqu.ToString();
zongjin = double.Parse(label4.Text);
zongjin -= shiqu;
label4.Text = zongjin.ToString();
qq = 1;
goto asa;
}
}
ii = 14;
} break;
case 14:
{
f = randon.Next(52); //这里是玩家取得四张牌的地方;
while (f == a || f == b || f == c || f == d)
{
f = randon.Next(52);
}
w4 = f % 13 1; //这个是判断玩家取得4张牌后是否超过21点
if (w4 >= 10)
w4 = 10;
zongshu = w4;
if (w4 == 1)
{
zongshu = 10;
if (zongshu > 21)
zongshu -= 10;
}
pictureBox11.Show();
pictureBox11.Image = Image.FromFile("tupian\\" f.ToString() ".jpg");
if (zongshu > 21)
{
if (aa == 1)
{
zongshu -= 10;
aa = 0;
}
if (zongshu > 21)
{
yin = 20000;
m1 = 20035;
timer2.Enabled = true;
label18.Text = "输";
shiqu = double.Parse(label7.Text);
label14.Text = shiqu.ToString();
zongjin = double.Parse(label4.Text);
zongjin -= shiqu;
label4.Text = zongjin.ToString();
qq = 1;
goto asa;
}
}
ii = 15;
} break;
case 15:
{
g = randon.Next(52); //这里是玩家取得5张牌的地方;
while (g == a || g == b || g == c || g == d || g == f)
{
g = randon.Next(52);
}
w5 = g % 13 1; //这个是判断玩家取得5张牌后是否超过21点
if (w5 >= 10)
w5 = 10;
zongshu = w5;
if (w5 == 1)
{
zongshu = 10;
if (zongshu > 21)
zongshu -= 10;
}
pictureBox12.Show();
pictureBox12.Image = Image.FromFile("tupian\\" g.ToString() ".jpg");
if (zongshu > 21)
{
if (aa == 1)
{
zongshu -= 10;
aa = 0;
}
if (zongshu > 21)
{
yin = 20000;
m1 = 20035;
timer2.Enabled = true;
label18.Text = "输";
shiqu = double.Parse(label7.Text);
label14.Text = shiqu.ToString();
zongjin = double.Parse(label4.Text);
zongjin -= shiqu;
label4.Text = zongjin.ToString();
qq = 1;
goto asa;
}
}
ii = 16;
} break;
case 16:
{
h = randon.Next(52); //这里是玩家取得6张牌的地方;
while (h == a || h == b || c == h || h == d || h == f || h == g)
{
h = randon.Next(52);
}
w6 = h % 13 1; //这个是判断玩家取得6张牌后是否超过21点
if (w6 >= 10)
w6 = 10;
zongshu = w6;
if (w6 == 1)
{
zongshu = 10;
if (zongshu > 21)
zongshu -= 10;
}
pictureBox13.Show();
pictureBox13.Image = Image.FromFile("tupian\\" h.ToString() ".jpg");
if (zongshu > 21)
{
if (aa == 1)
{
zongshu -= 10;
aa = 0;
}
if (zongshu > 21)
{
yin = 20000;
m1 = 20035;
timer2.Enabled = true;
label18.Text = "输";
shiqu = double.Parse(label7.Text);
label14.Text = shiqu.ToString();
zongjin = double.Parse(label4.Text);
zongjin -= shiqu;
label4.Text = zongjin.ToString();
qq = 1;
goto asa;
}
}
ii = 17;
} break;
case 17:
{
o = randon.Next(52); //这里是玩家取得7张牌的地方
while (o == a || o == b || o == c || o == d || o == f || o == g || o == h)
{
o = randon.Next(52);
}
w7 = o % 13 1; //这个是判断玩家取得7张牌后是否超过21点
if (w7 >= 10)
w7 = 10;
zongshu = w7;
if (w7 == 1)
{
zongshu = 10;
if (zongshu > 21)
zongshu -= 10;
}
pictureBox14.Show();
pictureBox14.Image = Image.FromFile("tupian\\" o.ToString() ".jpg");
if (zongshu > 21)
{
if (aa == 1)
{
zongshu -= 10;
aa = 0;
}
if (zongshu > 21)
{
yin = 20000;
m1 = 20035;
timer2.Enabled = true;
label18.Text = "输";
shiqu = double.Parse(label7.Text);
label14.Text = shiqu.ToString();
zongjin = double.Parse(label4.Text);
zongjin -= shiqu;
label4.Text = zongjin.ToString();
qq = 1;
goto asa;
}
}
} break;
}
button6.Enabled = false;
button7.Enabled = true;
button8.Enabled = true;
aaa:
button1.Enabled = false;
button2.Enabled = false;
button3.Enabled = false;
button5.Enabled = false;
button9.Enabled = false;
maskedTextBox1 .Enabled = false;
asa:
if (qq == 1)
{
button4.Enabled = true;
button7.Enabled = false;
button8.Enabled = false;
qq = 0;
}
if (label4.Text == "0")
button4.Enabled = false; //当玩家的所有金额为0时,则将洗牌这个按钮隐去不能使用,这样就这能点击新游戏重新开始游戏了
}