大一用C#編寫的鬥地主程序

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

namespace 鬥地主
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public class card
{
public int value;
public Image image;
public bool selected;
}
public ArrayList pai1, pai2, pai3;
card[] cards, card3, card2, card1;
Image ima1;
int time = 53, p1 = 0, p2 = 0, p3 = 0,beishu = 15, b1, b2, b3, dizhu,buchu=0;
Button[] bt, btn;
int[] picnum1, picnum2, picnum3,P1,P2,P3;
string[] str = { "b", "h", "r", "s" };
int[] cardth = new int[54];
PictureBox[] back = new PictureBox[54], pics3, pics2, pics1;
//剛開始的變量確定card的相關屬性
private void Form1_Load(object sender, EventArgs e)
{
P1 = new int[3];
P2 = new int[3];
P3 = new int[3];
pai1 = new ArrayList();
pai2 = new ArrayList();
pai3 = new ArrayList();
btn = new Button[6];
bt = new Button[6];
picnum3 = new int[20];
picnum2 = new int[20];
picnum1 = new int[20];
cards = new card[54];
pics3 = new PictureBox[20];
pics2 = new PictureBox[20];
pics1 = new PictureBox[20];
card3 = new card[20];
card2 = new card[20];
card1 = new card[20];
for (int i = 0; i < 4; i++)
{
for (int j = 0; j < 13; j++)
{
cards[i * 13 + j] = new card();
cards[i * 13 + j].image = Image.FromFile(".\\cards\\" + str[i] + (j + 1).ToString() + ".jpg");
cards[i * 13 + j].value = j + 1;
if (j == 0)
{
cards[i * 13 + j].value = 14;
}
if (j == 1)
{
cards[i * 13 + j].value = 16;
}
}
}
cards[52] = new card();
cards[52].image = Image.FromFile(".\\cards\\bk.jpg");
cards[52].value = 18;
cards[53] = new card();
cards[53].image = Image.FromFile(".\\cards\\lk.jpg");
cards[53].value = 17;
ima1 = Image.FromFile(".\\cards\\back.jpg");
}
//PictureBox,數組生成timer事件啓動,出牌按鈕生成
private void button1_Click(object sender, EventArgs e)
{
button1.Visible = false;
button2.Visible = false;
SoundPlayer sp = new SoundPlayer(".\\歡樂鬥地主背景音樂 - 原聲帶.wav");
sp.PlayLooping();
for (int i = 0; i < 2; i++)
{
for (int j = 0; j < 27; j++)
{
back[i * 27 + j] = new PictureBox();
back[i * 27 + j].Size = new Size(65, 99);
back[i * 27 + j].Location = new Point(280 + j * 25, 200 + i * 35);
back[i * 27 + j].Image = ima1;
back[i * 27 + j].SizeMode = PictureBoxSizeMode.StretchImage;
this.Controls.Add(back[i * 27 + j]);
back[i * 27 + j].BringToFront();
}
}
for (int i = 0; i < 54; i++)
{
cardth[i] = i;
}
Random rd = new Random();
int changeth1, changeth2, reth;
for (int i = 0; i < 200; i++)
{
changeth1 = rd.Next(0, 54);
changeth2 = rd.Next(0, 54);
reth = cardth[changeth1];
cardth[changeth1] = cardth[changeth2];
cardth[changeth2] = reth;
}
for (int i = 0; i < 17; i++)
{
picnum3[i] = cardth[i];
}
for (int i = 17; i < 34; i++)
{
picnum2[i - 17] = cardth[i];
}
for (int i = 34; i < 51; i++)
{
picnum1[i - 34] = cardth[i];
}
int change;
for (int i = 0; i < 17; i++)
{
for (int j = i + 1; j < 17; j++)
{
if (cards[picnum3[i]].value < cards[picnum3[j]].value)
{
change = picnum3[i];
picnum3[i] = picnum3[j];
picnum3[j] = change;
}
}
}
for (int i = 0; i < 17; i++)
{
for (int j = i + 1; j < 17; j++)
{
if (cards[picnum2[i]].value < cards[picnum2[j]].value)
{
change = picnum2[i];
picnum2[i] = picnum2[j];
picnum2[j] = change;
}
}
}
for (int i = 0; i < 17; i++)
{
for (int j = i + 1; j < 17; j++)
{
if (cards[picnum1[i]].value < cards[picnum1[j]].value)
{
change = picnum1[i];
picnum1[i] = picnum1[j];
picnum1[j] = change;
}
}
}
for (int i = 0; i < 20; i++)
{
pics3[i] = new PictureBox();
pics3[i].Location = new Point(188, 51 + i * 25);
pics3[i].Size = new Size(99, 65);
pics3[i].SizeMode = PictureBoxSizeMode.StretchImage;
pics3[i].Click += new EventHandler(pics3_Click);
pics3[i].Tag = i;
Controls.Add(pics3[i]);
}
for (int i = 0; i < 20; i++)
{
pics2[i] = new PictureBox();
pics2[i].Location = new Point(929, 51 + i * 25);
pics2[i].Size = new Size(99, 65);
pics2[i].SizeMode = PictureBoxSizeMode.StretchImage;
pics2[i].Click += new EventHandler(pics2_Click);
pics2[i].Tag = i;
Controls.Add(pics2[i]);
}
for (int i = 0; i < 20; i++)
{
pics1[i] = new PictureBox();
pics1[i].Location = new Point(380 + i * 25, 450);
pics1[i].Size = new Size(65, 99);
pics1[i].SizeMode = PictureBoxSizeMode.StretchImage;
pics1[i].Click += new EventHandler(pics1_Click);
pics1[i].Tag = i;
Controls.Add(pics1[i]);
}
timer1.Enabled = true;
}
//發牌事件
private void timer1_Tick(object sender, EventArgs e)
{
SoundPlayer sp = new SoundPlayer(".\\");
back[time].Visible = false;
if (time % 3 == 0)
{
card1[p1] = cards[picnum1[p1]];
//pics1[p1].Image = card1[p1].image;
pics1[p1].Image = ima1;
pics1[p1].BringToFront();
p1++;
}
if (time % 3 == 1)
{
card3[p2] = cards[picnum3[p2]];
//pics3[p2].Image = card3[p2].image;
pics3[p2].Image = ima1;
pics3[p2].BringToFront();
p2++;
}
if (time % 3 == 2)
{
card2[p3] = cards[picnum2[p3]];
//pics2[p3].Image = card2[p3].image;
pics2[p3].Image = ima1;
pics2[p3].BringToFront();
p3++;
}
time--;
if (time == 2)
{
back[2].Location = new Point(487, 197);
back[1].Location = new Point(487 + 65, 197);
back[0].Location = new Point(487 + 130, 197);
Random rd = new Random();
int who = rd.Next(1, 4);
if (who == 1)
{
//////////////亮牌看牌
liangpai(1);
button1D1.Visible = true;
button1D2.Visible = true;
}
if (who == 2)
{
//////////////亮牌看牌
liangpai(2);
button2D1.Visible = true;
button2D2.Visible = true;
}
if (who == 3)
{
//////////////亮牌看牌
liangpai(3);
for (int i = 0; i < 17; i++)
{
pics3[i].Image = card3[i].image;
}
button3D1.Visible = true;
button3D2.Visible = true;
}
timer1.Enabled = false;
}
}
//叫地主的
private void button3_Click(object sender, EventArgs e)
{
label1.Visible = true;
label1.Text = beishu.ToString() + "倍";
for (int i = 0; i < 6; i++)
{
bt[i] = new Button();
}
bt[0].Size = button1D1.Size;
bt[0].Location = button1D1.Location;
bt[1].Size = button1D2.Size;
bt[1].Location = button1D2.Location;
bt[2].Size = button2D1.Size;
bt[2].Location = button2D1.Location;
bt[3].Size = button2D2.Size;
bt[3].Location = button2D2.Location;
bt[4].Size = button3D1.Size;
bt[4].Location = button3D1.Location;
bt[5].Size = button3D2.Size;
bt[5].Location = button3D2.Location;
for (int i = 0; i < 6; i++)
{
btn[i] = new Button();
btn[i].Location = bt[i].Location;
btn[i].Size = bt[i].Size;
if (i % 2 == 0)
{
btn[i].Text = "出牌";
btn[i].Click += new EventHandler(btn1_Click);
btn[i].Tag = i / 2;
}
else
{
btn[i].Text = "不出";
btn[i].Click += new EventHandler(btn2_Click);
btn[i].Tag = i / 2;
}
Controls.Add(btn[i]);
btn[i].Visible = false;
}
for (int i = 0; i < 6; i++)
{
if (i % 2 == 0)
{
bt[i].Text = "搶地主";
bt[i].Click += new EventHandler(bt1_Click);
}
else
{
bt[i].Text = "不搶";
bt[i].Click += new EventHandler(bt2_Click);
}
bt[i].Name = i.ToString();
Controls.Add(bt[i]);
bt[i].Visible = false;
}
Button but1 = (Button)sender;
if (but1.Name == "button3D1")
{
b3 = 3;
button3D1.Visible = false;
button3D2.Visible = false;
bt[0].Visible = true;
bt[1].Visible = true;
dizhu = 3;
liangpai(1);
}
if (but1.Name == "button2D1")
{
b2 = 3;
button2D1.Visible = false;
button2D2.Visible = false;
bt[4].Visible = true;
bt[5].Visible = true;
dizhu = 2;
//////////////亮牌看牌
liangpai(3);
}
if (but1.Name == "button1D1")
{
b1 = 3;
button1D1.Visible = false;
button1D2.Visible = false;
bt[2].Visible = true;
bt[3].Visible = true;
dizhu = 1;
//////////////亮牌看牌
liangpai(2);
}
if ((b1 == 2 && b2 == 2 && b3 == 3) || (b1 == 2 && b2 == 3 && b3 == 2) || (b1 == 3 && b2 == 2 && b3 == 2))
{
for (int i = 0; i < 6; i++)
{
bt[i].Visible = false;
}
if (dizhu == 1)
{
card1[17] = cards[cardth[51]];
card1[18] = cards[cardth[52]];
card1[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card1[i].value < card1[j].value)
{
cd = card1[i];
card1[i] = card1[j];
card1[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics1[i].Image = card1[i].image;
pics1[i].BringToFront();
}
btn[0].Visible = true;
btn[1].Visible = true;
//////////////亮牌看牌
label2.Text = "地主";
liangpai(1);
}
if (dizhu == 2)
{
card2[17] = cards[cardth[51]];
card2[18] = cards[cardth[52]];
card2[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card2[i].value < card2[j].value)
{
cd = card2[i];
card2[i] = card2[j];
card2[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics2[i].Image = card2[i].image;
pics2[i].BringToFront();
}
btn[2].Visible = true;
btn[3].Visible = true;
liangpai(2);
label3.Text = "地主";
}
if (dizhu == 3)
{
card3[17] = cards[cardth[51]];
card3[18] = cards[cardth[52]];
card3[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card3[i].value < card3[j].value)
{
cd = card3[i];
card3[i] = card3[j];
card3[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics3[i].Image = card3[i].image;
pics3[i].BringToFront();
}
btn[4].Visible = true;
btn[5].Visible = true;
liangpai(3);
label4.Text = "地主";
}
for (int i = 0; i <3; i++)
{
back[i].Image = null;
}
pictureBox1.Image = cards[cardth[51]].image;
pictureBox2.Image = cards[cardth[52]].image;
pictureBox3.Image = cards[cardth[53]].image;
}
}
//亮牌,其他不亮
private void liangpai(int a)
{
if (a==1)
{
for (int i = 0; i < 20; i++)
{
if (card1[i]!=null)
{
pics1[i].Image = card1[i].image;
}
if (card2[i]!=null)
{
pics2[i].Image = ima1;
}
if (card3[i] != null)
{
pics3[i].Image = ima1;
}
}
return;
}
if (a == 2)
{
for (int i = 0; i < 20; i++)
{
if (card1[i] != null)
{
pics1[i].Image = ima1;
}
if (card2[i] != null)
{
pics2[i].Image = card2[i].image;
}
if (card3[i] != null)
{
pics3[i].Image = ima1;
}
}
return;
}
if (a == 3)
{
for (int i = 0; i < 20; i++)
{
if (card1[i] != null)
{
pics1[i].Image = ima1;
}
if (card2[i] != null)
{
pics2[i].Image = ima1;
}
if (card3[i] != null)
{
pics3[i].Image = card3[i].image;
}
}
return;
}
}
//不叫的
private void button4_Click(object sender, EventArgs e)
{
Button but1 = (Button)sender;
if (but1.Name == "button3D2")
{
button3D1.Visible = false;
button3D2.Visible = false;
button1D1.Visible = true;
button1D2.Visible = true;
b3 = 2;
//////////////亮牌看牌
liangpai(1);
}
if (but1.Name == "button2D2")
{
button2D1.Visible = false;
button2D2.Visible = false;
button3D1.Visible = true;
button3D2.Visible = true;
b2 = 2;
//////////////亮牌看牌
liangpai(3);
}
if (but1.Name == "button1D2")
{
button1D1.Visible = false;
button1D2.Visible = false;
button2D1.Visible = true;
button2D2.Visible = true;
b1 = 2;
//////////////亮牌看牌
liangpai(2);
}
}
//搶地主的程序
private void bt1_Click(object sender, EventArgs e)
{
beishu = beishu * 2;
Button but = (Button)sender;

label1.Text = "現在是" + beishu.ToString() + "倍";
if (but.Name == "0" && (b2 == 0 || b2 == 3))
{
bt[2].Visible = true;
bt[3].Visible = true;
bt[0].Visible = false;
bt[1].Visible = false;
dizhu = 1;
b1 = 2;
liangpai(2);
}
if (but.Name == "2" && (b3== 0 || b3 == 3))
{
bt[2].Visible = false;
bt[3].Visible = false;
bt[4].Visible = true;
bt[5].Visible = true;
dizhu = 2;
b2 = 2;
liangpai(3);
}
if (but.Name == "4" && (b1 == 0 || b1 == 3))
{

bt[4].Visible = false;
bt[5].Visible = false;
bt[0].Visible = true;
bt[1].Visible = true;
dizhu = 3;
b3 = 2;
liangpai(1);
}
if (but.Name == "0" && b2 == 2 && b3 == 3)
{
bt[0].Visible = false;
bt[1].Visible = false;
bt[2].Visible = false;
bt[3].Visible = false;
bt[4].Visible = true;
bt[5].Visible = true;
dizhu = 1;
b1 = 2;
liangpai(3);
}
if (but.Name == "2" && b3 == 2 && b1 == 3)
{
bt[2].Visible = false;
bt[3].Visible = false;
bt[4].Visible = false;
bt[5].Visible = false;
bt[0].Visible = true;
bt[1].Visible = true;
dizhu = 2;
b2 = 2;
liangpai(1);
}
if (but.Name == "4" && b1 == 2 && b2 == 3)
{

bt[4].Visible = false;
bt[5].Visible = false;
bt[0].Visible = false;
bt[1].Visible = false;
bt[2].Visible = true;
bt[3].Visible = true;
dizhu = 3;
b3 = 2;
liangpai(3);
}
if (but.Name == "0" && b3 == 2 && b2 == 2)
{
bt[0].Visible = false;
bt[1].Visible = false;
dizhu = 1;
b1 = 2;
}
if (but.Name == "2" && b1 == 2 && b3 == 2)
{
bt[2].Visible = false;
bt[3].Visible = false;
dizhu = 2;
b2 = 2;
}
if (but.Name == "4" && b1 == 2 && b2 == 2)
{
bt[4].Visible = false;
bt[5].Visible = false;
dizhu = 3;
b3 = 2;
}
if (b1 == 2 && b2 == 2 && b3 == 2)
{
for (int i = 0; i < 6; i++)
{
bt[i].Visible = false;
}
if (dizhu == 1)
{
card1[17] = cards[cardth[51]];
card1[18] = cards[cardth[52]];
card1[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card1[i].value < card1[j].value)
{
cd = card1[i];
card1[i] = card1[j];
card1[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics1[i].Image = card1[i].image;
pics1[i].BringToFront();
}
btn[0].Visible = true;
btn[1].Visible = true;
label2.Text = "地主";
liangpai(1);
}
if (dizhu == 2)
{
card2[17] = cards[cardth[51]];
card2[18] = cards[cardth[52]];
card2[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card2[i].value < card2[j].value)
{
cd = card2[i];
card2[i] = card2[j];
card2[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics2[i].Image = card2[i].image;
pics2[i].BringToFront();
}
btn[2].Visible = true;
btn[3].Visible = true;
label3.Text = "地主";
liangpai(2);
}
if (dizhu == 3)
{
card3[17] = cards[cardth[51]];
card3[18] = cards[cardth[52]];
card3[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card3[i].value < card3[j].value)
{
cd = card3[i];
card3[i] = card3[j];
card3[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics3[i].Image = card3[i].image;
pics3[i].BringToFront();
}
btn[4].Visible = true;
btn[5].Visible = true;
label4.Text = "地主";
liangpai(3);
}
for (int i = 0; i < 3; i++)
{
back[i].Image = null;
}
pictureBox1.Image = cards[cardth[51]].image;
pictureBox2.Image = cards[cardth[52]].image;
pictureBox3.Image = cards[cardth[53]].image;
}
}
//不搶的程序
int buqiang = 0;
private void bt2_Click(object sender, EventArgs e)
{
buqiang++;
Button but = (Button)sender;
if (but.Name == "1" &&b2==3)
{
bt[0].Visible = false;
bt[1].Visible = false;
b1 = 2;
}
if (but.Name == "3" && b3 == 3)
{
bt[2].Visible = false;
bt[3].Visible = false;
b2 = 2;
}
if (but.Name == "5" && b1 == 3)
{

bt[4].Visible = false;
bt[5].Visible = false;
b3 = 2;
}
if (but.Name == "1" && (b2 == 0 || b2 == 3))
{
bt[2].Visible = true;
bt[3].Visible = true;
bt[0].Visible = false;
bt[1].Visible = false;
liangpai(2);
b1 = 2;
}
if (but.Name == "3" && (b3 == 0 || b3 == 3))
{
bt[2].Visible = false;
bt[3].Visible = false;
bt[4].Visible = true;
bt[5].Visible = true;
liangpai(3);
b2 = 2;
}
if (but.Name == "5" && (b1 == 0 || b1 == 3))
{

bt[4].Visible = false;
bt[5].Visible = false;
bt[0].Visible = true;
bt[1].Visible = true;
liangpai(1);
b3 = 2;
}
if (but.Name == "1" && b2 == 2 && b3 == 2)
{
bt[0].Visible = false;
bt[1].Visible = false;
bt[2].Visible = false;
bt[3].Visible = false;
bt[4].Visible = true;
bt[5].Visible = true;
liangpai(3);
b1 = 2;
}
if (but.Name == "3" && b3 == 2 && b1 == 2)
{
bt[2].Visible = false;
bt[3].Visible = false;
bt[4].Visible = false;
bt[5].Visible = false;
bt[0].Visible = true;
bt[1].Visible = true;
liangpai(1);
b2 = 2;
}
if (but.Name == "5" && b1 == 2 && b2 == 2)
{

bt[4].Visible = false;
bt[5].Visible = false;
bt[0].Visible = false;
bt[1].Visible = false;
bt[2].Visible = true;
bt[3].Visible = true;
liangpai(2);
b3 = 2;
}
if ((b1==2&&b2==2&&b3==2)||buqiang==2)
{
for (int i = 0; i < 6; i++)
{
bt[i].Visible = false;
}
if (dizhu == 1)
{
card1[17] = cards[cardth[51]];
card1[18] = cards[cardth[52]];
card1[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card1[i].value < card1[j].value)
{
cd = card1[i];
card1[i] = card1[j];
card1[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics1[i].Image = card1[i].image;
pics1[i].BringToFront();
}
btn[0].Visible = true;
btn[1].Visible = true;
label2.Text = "地主";
liangpai(1);
}
if (dizhu == 2)
{
card2[17] = cards[cardth[51]];
card2[18] = cards[cardth[52]];
card2[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card2[i].value < card2[j].value)
{
cd = card2[i];
card2[i] = card2[j];
card2[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics2[i].Image = card2[i].image;
pics2[i].BringToFront();
}
btn[2].Visible = true;
btn[3].Visible = true;
label3.Text = "地主";
liangpai(2);
}
if (dizhu == 3)
{
card3[17] = cards[cardth[51]];
card3[18] = cards[cardth[52]];
card3[19] = cards[cardth[53]];
card cd;
for (int i = 0; i < 20; i++)
{
for (int j = i + 1; j < 20; j++)
{
if (card3[i].value < card3[j].value)
{
cd = card3[i];
card3[i] = card3[j];
card3[j] = cd;
}
}
}
for (int i = 0; i < 20; i++)
{
pics3[i].Image = card3[i].image;
pics3[i].BringToFront();
}
btn[4].Visible = true;
btn[5].Visible = true;
label4.Text = "地主";
liangpai(3);
}
for (int i = 0; i < 3; i++)
{
back[i].Image = null;
}
pictureBox1.Image = cards[cardth[51]].image;
pictureBox2.Image = cards[cardth[52]].image;
pictureBox3.Image = cards[cardth[53]].image;
}
}
//輪到誰出牌的函數:出牌
private void btn1_Click(object sender, EventArgs e)
{

Button button = (Button)sender;
int tag = (int)button.Tag;
chupai(tag);
}
//不出牌
private void btn2_Click(object sender, EventArgs e)
{
Button button = (Button)sender;
int tag = (int)button.Tag;
buchu++;
if (tag == 0)
{
btn[0].Visible = false;
btn[1].Visible = false;
btn[2].Visible = true;
btn[3].Visible = true;
}
if (tag == 1)
{
btn[2].Visible = false;
btn[3].Visible = false;
btn[4].Visible = true;
btn[5].Visible = true;
}
if (tag == 2)
{
btn[4].Visible = false;
btn[5].Visible = false;
btn[0].Visible = true;
btn[1].Visible = true;
}
if (tag==2)
{
liangpai(1);
}
liangpai(tag+2);
}
//出牌函數
private void chupai(int abc)
{
if (abc == 0)
{
for (int i = 0; i < 20; i++)
{
if (card1[i]!=null)
{
if (card1[i].selected)
{
pai1.Add(card1[i]);
}
}
}
if (pai1.Count!=0)
{
cardremove(card1, pics1, 1);
}
if (!chu)
{
pai1.Clear();
return;
}
btn[0].Visible = false;
btn[1].Visible = false;
btn[2].Visible = true;
btn[3].Visible = true;
pai1.Clear();
}
if (abc == 1)
{
for (int i = 0; i < 20; i++)
{
if (card2[i] != null)
{
if (card2[i].selected)
{
pai2.Add(card2[i]);
}
}
}
if (pai2.Count != 0)
{
cardremove(card2, pics2, 2);
}
if (!chu)
{
pai2.Clear();
return;
}
btn[2].Visible = false;
btn[3].Visible = false;
btn[4].Visible = true;
btn[5].Visible = true;
pai2.Clear();
}
if (abc == 2)
{
for (int i = 0; i < 20; i++)
{
if (card3[i] != null)
{
if (card3[i].selected)
{
pai3.Add(card3[i]);
}
}
}
if (pai3.Count != 0)
{
cardremove(card3, pics3, 3);
}
if (!chu)
{
pai3.Clear();
return;
}
btn[4].Visible = false;
btn[5].Visible = false;
btn[0].Visible = true;
btn[1].Visible = true;
pai3.Clear();
}
}
//圖片框敲擊
private void pics1_Click(object sender, EventArgs e)
{
PictureBox picturebox = (PictureBox)sender;
Point pt = picturebox.Location;
int th = (int)picturebox.Tag;
if (!card1[th].selected)
{
picturebox.Location = new Point(pt.X, pt.Y - 25);
card1[th].selected = true;
}
else if (card1[th].selected)
{
picturebox.Location = new Point(pt.X, pt.Y + 25);
card1[th].selected = false;
}
}
private void pics2_Click(object sender, EventArgs e)
{
PictureBox picturebox = (PictureBox)sender;
Point pt = picturebox.Location;
int th = (int)picturebox.Tag;
if (!card2[th].selected)
{
picturebox.Location = new Point(pt.X - 25, pt.Y);
card2[th].selected = true;
}
else if(card2[th].selected)
{
picturebox.Location = new Point(pt.X + 25, pt.Y);
card2[th].selected = false;
}
}
private void pics3_Click(object sender, EventArgs e)
{
PictureBox picturebox = (PictureBox)sender;
Point pt = picturebox.Location;
int th = (int)picturebox.Tag;
if (!card3[th].selected)
{
picturebox.Location = new Point(pt.X + 25, pt.Y);
card3[th].selected = true;
}
else if(card3[th].selected)
{
picturebox.Location = new Point(pt.X - 25, pt.Y);
card3[th].selected = false;
}
}
//去掉出過的牌
bool chu;
private void cardremove(card[] cads,PictureBox[] pic,int th)
{
chu = false;
bool B1 = false, B2 = false, B3 = false, B4 = false, B5 = false, B6 = false, B7 = false, B8 = false, B9 = false, B10 = false, B11 = false,B12=false ;
if (th==1)
{
B1 = danpai(pai1, P1);
B2 = dui(pai1, P1);
B3 = sanbudai(pai1, P1);
B4 = sandaiyi(pai1, P1);
B5 = sandaier(pai1, P1);
B6 = shunzi(pai1, P1);
B7 = liandui(pai1, P1);
B8 = zhadan(pai1, P1);
B9=wangzha(pai1, P1);
B10 = sidaier(pai1, P1);
B11 = feijidaidan(pai1, P1);
B12 = feijidaidui(pai1, P1);
}
if (th==2)
{
B1 = danpai(pai2, P1);
B2 = dui(pai2, P1);
B3 = sanbudai(pai2, P1);
B4 = sandaiyi(pai2, P1);
B5 = sandaier(pai2, P1);
B6 = shunzi(pai2, P1);
B7 = liandui(pai2, P1);
B8 = zhadan(pai2, P1);
B9 = wangzha(pai2, P1);
B10 = sidaier(pai2, P1);
B11 = feijidaidan(pai2, P1);
B12 = feijidaidui(pai2, P1);
}
if (th == 3)
{
B1 = danpai(pai3, P1);
B2 = dui(pai3, P1);
B3 = sanbudai(pai3, P1);
B4 = sandaiyi(pai3, P1);
B5 = sandaier(pai3, P1);
B6 = shunzi(pai3, P1);
B7 = liandui(pai3, P1);
B8 = zhadan(pai3, P1);
B9 = wangzha(pai3, P1);
B10 = sidaier(pai3, P1);
B11 = feijidaidan(pai3, P1);
B12 = feijidaidui(pai3, P1);
}
bool zha = false ;
if (P1[0]==8)
{
if (P2[0]!=8)
{
zha = true;
}
else
{
if (P1[1]>P2[1])
{
zha = true;
}
}
}
if (P1[0]==9)
{
zha=true;
}
int ZM = 0;

if ((B1 || B2 || B3 || B4 || B5 || B6 || B7 || B8 || B9||B10||B11||B12)&&
((P1[0]==P2[0]&&P1[1]>P2[1]&&P1[2]==P2[2])||(buchu==2)||(P2[0]==0&&P2[1]==0&&P2[2]==0)||zha))
{
if (B8||B9)
{
beishu = beishu * 2;
label1.Text = "現在的倍數" + beishu.ToString() ;
}
for (int i = 0; i < 54; i++)
{
back[i].Image = null;
back[i].Visible = false; ;
}
for (int i = 0; i < 13; i++)
{
back[i].Location = new Point(400 + i * 25, 222);
back[i].Visible = true;
}
chu = true;
for (int i = 0; i < 20; i++)
{
if (cads[i] != null)
{
if (cads[i].selected)
{
back[ZM].Image = cads[i].image;
back[ZM].BringToFront();
ZM++;
}
}
}
for (int i = 0; i < 20; i++)
{
if (cads[i] != null)
{
if (cads[i].selected)
{
int k = 0;
for (; k < 20; k++)
{
if (cads[k] == null)
{
break;
}
}
bool bo0 = false;
for (int j = i; j < k - 1; j++)
{
cads[j] = cads[j + 1];
cads[j + 1] = null;
bo0 = true;
}
if (bo0)
{
i--;
}
else
{
cads[k - 1] = null;
}
}
}
}

if (th == 1)
{
for (int j = 0; j < 20; j++)
{
pics1[j].Location = new Point(380 + j * 25, 450);
}
}
if (th == 2)
{
for (int j = 0; j < 20; j++)
{
pics2[j].Location = new Point(929, 51 + j * 25);
}
}
if (th == 3)
{
for (int j = 0; j < 20; j++)
{
pics3[j].Location = new Point(188, 51 + j * 25);
}
}
for (int i = 0; i < 20; i++)
{
if (cads[i] != null)
{
pic[i].Image = cads[i].image;
}
else
{
pic[i].Visible = false;
}
}
P2[0] = P1[0];
P2[1] = P1[1];
P2[2] = P1[2];
buchu = 0;
if (cads[0]==null)
{

if (MessageBox.Show("本局遊戲結束是否進行下局遊戲","提示",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==System.Windows.Forms.DialogResult.Yes)
{
this.Close();
System.Diagnostics.Process.Start(System.Reflection.Assembly.GetExecutingAssembly().Location);
}
else
{
this.Close();
}
}
if (th == 1)
{
liangpai(2);
}
if (th == 2)
{
liangpai(3);
}
if (th == 3)
{
liangpai(1);
}
}
else
{
MessageBox.Show("請選擇正確的牌型","提示",MessageBoxButtons.OK,MessageBoxIcon.Information);
}
//////////////////////////////////////////////////////////


}
//單牌a[0] = 1;a[1] =((card)ary[0]).value;a[2] = 1;
private bool danpai(ArrayList ary, int[] a)
{
bool bo0=false;
if (ary.Count==1)
{
bo0 = true;
a[0] = 1;
a[1] = ((card)ary[0]).value;
a[2] = 1;
}

return bo0;
}
//對a[0] = 2;a[1] = ((card)ary[0]).value;a[2] = 2;
private bool dui(ArrayList ary, int[] a)
{
bool bo0 = false;
if (ary.Count==2)
{
if ((((card)ary[0]).value)==(((card)ary[1]).value))
{
bo0 = true;
a[0] = 2;
a[1] = ((card)ary[0]).value;
a[2] = ary.Count;
}
}
return bo0;
}
//三不帶 a[0] = 3;a[1] = ((card)ary[0]).value;a[2] = 3;
private bool sanbudai(ArrayList ary, int[] a)
{
bool bo0 = false;
if (ary.Count == 3)
{
if (((((card)ary[0]).value) == (((card)ary[1]).value ))&& ((((card)ary[1]).value)==(((card)ary[2]).value)))
{
bo0 = true;
a[0] = 3;
a[1] = ((card)ary[0]).value;
a[2] = 3;
}
}
return bo0;
}
//三帶一a[0] = 4; a[1] = ((card)ary[1]).value;a[2] = 4;
private bool sandaiyi(ArrayList ary, int[] a)
{
bool bo0 = false;
if (ary.Count == 4)
{
if (((((((card)ary[0]).value) == (((card)ary[1]).value)) && ((((card)ary[1]).value) == (((card)ary[2]).value))) && ((((card)ary[0]).value) != (((card)ary[3]).value)))
|| ((((((card)ary[1]).value) == (((card)ary[2]).value ))&& ((((card)ary[2]).value)==(((card)ary[3]).value))) && ((((card)ary[0]).value) != (((card)ary[3]).value))))
{
bo0 = true;
a[0] = 4;
a[1] = ((card)ary[1]).value;
a[2] = ary.Count;
}
}
return bo0;
}
//三代二 a[0] = 5;a[1] = ((card)ary[2]).value;a[2] = 5;
private bool sandaier(ArrayList ary, int[] a)
{
bool bo0 = false;
if (ary.Count == 5)
{
if (((((((card)ary[0]).value) == (((card)ary[1]).value)) && ((((card)ary[1]).value) == (((card)ary[2]).value))) &&
((((card)ary[3]).value) == (((card)ary[4]).value)))
|| ((((((card)ary[2]).value) == (((card)ary[3]).value)) && ((((card)ary[3]).value) == (((card)ary[4]).value))) &&
((((card)ary[0]).value) == (((card)ary[1]).value))))
{
bo0 = true;
a[0] = 5;
a[1] = ((card)ary[2]).value;
a[2] = ary.Count;
}
}
return bo0;
}
//順子a[0] = 6;a[1] = ((card)ary[0]).value;a[2] = ary.Count;
private bool shunzi(ArrayList ary, int[] a)
{
bool bo0 = false;
if (ary.Count>=5)
{
bo0 = true;
for (int i = 0; i < ary.Count - 1; i++)
{
if (((card)ary[i]).value != (((card)ary[i + 1]).value + 1))
{
bo0 = false;
}
}
}
if (bo0)
{
a[0] = 6;
a[1] = ((card)ary[0]).value;
a[2] = ary.Count;
}
return bo0;
}
//連隊 a[0] = 7;a[1] = ((card)ary[0]).value;a[2] = ary.Count;
private bool liandui(ArrayList ary, int[] a)
{
bool bo0 = false;
if (ary.Count>=6)
{

if (ary.Count % 2 == 0)
{
bo0 = true;
for (int i = 0; i < ary.Count-2; i++)
{
if ((((card)ary[0]).value != ((card)ary[1]).value))
{
bo0 = false;
break;
}
if (i % 2 == 0)
{
if ((((card)ary[i]).value)!= (((card)ary[i + 2]).value+1))
{
bo0 = false;
break;
}
}
else
{
if ((((card)ary[i]).value) != (((card)ary[i + 2]).value+1))
{
bo0 = false;
break;
}
}
}
}
if (bo0)
{
a[0] = 7;
a[1] = ((card)ary[0]).value;
a[2] = ary.Count;
}
}
return bo0;
}
//炸彈 a[0] = 8;a[1] = ((card)ary[0]).value;a[2] = 4;
private bool zhadan(ArrayList ary, int[] a)
{
bool bo0 = false;
if (ary.Count==4)
{
if (ary.Count == 4 && ((((card)ary[0]).value) == (((card)ary[1]).value)) && ((((card)ary[1]).value) == (((card)ary[2]).value)) && ((((card)ary[2]).value) == (((card)ary[3]).value)))
{
bo0 = true;
a[0] = 8;
a[1] = ((card)ary[0]).value;
a[2] = ary.Count;
}
}
return bo0;
}
//王炸 a[0] = 9;a[1] = ((card)ary[0]).value;a[2] = 2;
private bool wangzha(ArrayList ary, int[] a)
{
bool bo0 = false;
if (ary.Count==2)
{
if (((card)ary[0]).value == 18 && ((card)ary[1]).value == 17)
{
a[0] = 9;
a[1] = ((card)ary[0]).value;
a[2] = 2;
bo0 = true;
}
}
return bo0;
}
//四帶二a[0] = 10;a[1] = CA[i].value;a[2] = 6;
private bool sidaier(ArrayList ary, int[] a)
{
bool bo0 = false, bo1 = false;

if (ary.Count == 6)
{
card[] CA = new card[6];
for (int i = 0; i < 6; i++)
{
CA[i] = (card)ary[i];
}
for (int i = 0; i < 3; i++)
{
if (CA[i].value == CA[i + 1].value && CA[i + 1].value == CA[i + 2].value && CA[i + 2].value == CA[i + 3].value)
{
a[1] = CA[i].value;
bo1 = true;
}
}
}
if (bo1)
{
a[0] = 10;
a[2] = 6;
bo0 = true;
}
return bo0;
}
//飛機帶2張不一樣的牌a[0] = 11; a[1] = CA[i].value;a[2] = 8;
private bool feijidaidan(ArrayList ary, int[] a)
{
bool bo0 = false, bo1 = false;
if (ary.Count==8)
{
card[] CA = new card[8];
for (int i = 0; i <8; i++)
{
CA[i] = (card)ary[i];
}
for (int i = 0; i < 2; i++)
{
if ((CA[i].value == CA[i + 1].value && CA[i + 1].value == CA[i + 2].value)&&(CA[i+3].value == CA[i + 4].value && CA[i + 4].value == CA[i + 5].value)&&(CA[i+2].value)==(CA[i+3].value+1))
{
bo1 = true;
a[1] = CA[i].value;
}
}
}
if (bo1)
{
bo0 = true;
a[0] = 11;
a[2] = 8;
}
return bo0;
}
//飛機帶4張兩個對a[0] = 12;a[1] = CA[0].value;a[2] = 10;
private bool feijidaidui(ArrayList ary, int[] a)
{
bool bo0 = false, bo1 = false;
if (ary.Count == 10)
{
card[] CA = new card[10];
for (int i = 0; i < 10; i++)
{
CA[i] = (card)ary[i];
}
if ((CA[0].value==CA[1].value)&&(CA[1].value==CA[2].value)&&(CA[3].value==CA[4].value)&&(CA[4].value==CA[5].value)&&(CA[2].value==(CA[3].value+1))&&(CA[6].value==CA[7].value)&&(CA[8].value==CA[9].value))
{
bo1 = true;
a[1] = CA[0].value;
}
if ((CA[2].value == CA[3].value) && (CA[3].value == CA[4].value) && (CA[5].value == CA[6].value) && (CA[6].value == CA[7].value) && (CA[4].value == (CA[5].value + 1)) && (CA[0].value == CA[1].value) && (CA[8].value == CA[9].value))
{
bo1 = true;
a[1] = CA[2].value;
}
if ((CA[4].value == CA[5].value) && (CA[5].value == CA[6].value) && (CA[7].value == CA[8].value) && (CA[8].value == CA[9].value) && (CA[6].value == (CA[7].value + 1)) && (CA[0].value == CA[1].value) && (CA[2].value == CA[3].value))
{
bo1 = true;
a[1] = CA[4].value;
}
if (bo1)
{
bo0 = true;
a[0] = 12;
a[2] = 10;
}

}
return bo0;
}
}
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章