大一用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].Locat
  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值