📄 sjform.cs
字号:
}
}
}
}
for(i=0;i<count;i++)
{
Card[Min[i]].Pic.Parent = Player1;
Card[Min[i]].Pic.Left = (Player1.Width - Card[Min[i]].Pic.Width) - i*15 ;
Card[Min[i]].Pic.Visible = true ;
}
}
private void InitializeConf()
{
//初始相关参数
DealNum = 0 ;
GameStatus = 0 ;
CurrentType = 0 ;
CurrentSuccess = 0 ;
PlayerCard1.Clear() ;
PlayerCard2.Clear() ;
PlayerCard3.Clear() ;
PlayerCard4.Clear() ;
BottomCard.Clear() ;
OutCard.Clear() ;
LevOwnerShow.Text = "无";
SuccessShow.Text = "0" ;
}
private void StatusShow()
{
//游戏状态显示
CurrentLevShow.Text = CurrentLev.ToString();
if(CurrentLev == 11 ) { CurrentLevShow.Text = "J" ; }
if(CurrentLev == 12 ) { CurrentLevShow.Text = "Q" ; }
if(CurrentLev == 13 ) { CurrentLevShow.Text = "K" ; }
if(CurrentLev == 1 ) { CurrentLevShow.Text = "A" ; }
if(CurrentType == 0 ) { CurrentTypeShow.Text = "无"; }
if(CurrentType == 1 ) { CurrentTypeShow.Text = "黑桃"; }
if(CurrentType == 2 ) { CurrentTypeShow.Text = "红桃"; }
if(CurrentType == 3 ) { CurrentTypeShow.Text = "梅花"; }
if(CurrentType == 4 ) { CurrentTypeShow.Text = "方片"; }
if(Banker == 0 ) { BankerShow.Text = "无"; }
if(Banker == 1 ) { BankerShow.Text = "玩家"; }
if(Banker == 2 ) { BankerShow.Text = "瞎打"; }
if(Banker == 3 ) { BankerShow.Text = "胡打"; }
if(Banker == 4 ) { BankerShow.Text = "乱打"; }
}
private void CreateCard()
{
//创建牌组
int ID,i,j ;
string imagesfile ;
ID = 0 ;
for(i=0;i<=13;i++)
for(j=1;j<=4;j++)
{
if((i==0)&&(j>2)) { continue; }
//创建图片对象
imagesfile = @"images\PUKE\background.jpg";
PictureBox MyPic = new PictureBox() ;
Bitmap MyImage = new Bitmap(AppDomain.CurrentDomain.SetupInformation.ApplicationBase+imagesfile);
MyPic.Visible = false;
MyPic.Parent = OutShow1;
MyPic.Left = 0 ;
MyPic.Top = 0 ;
MyPic.Name = "Card_"+i.ToString()+"_"+j.ToString() ;
MyPic.SizeMode = PictureBoxSizeMode.StretchImage ;
MyPic.ClientSize = new Size(70,100);
MyPic.Image = (Image) MyImage ;
MyPic.Click += new System.EventHandler(this.Card_Click);
MyPic.Enabled = false ;
Card[ID].Num = i ;
Card[ID].Type = j ;
Card[ID].Pic = MyPic ;
Card[ID].Power = 0;
ID++;
}
}
private void ShuffleCard()
{
//洗牌
Squeezer TmpCard ;
int NumTmp,i;
Random NumRand = new Random();
for(i=0;i<54;i++)
{
//隐藏
Card[i].Pic.Visible = false;
Card[i].Pic.Parent = OutShow1 ;
Card[i].Pic.Left = 0 ;
Card[i].Pic.Top = 0 ;
Card[i].Power = Card[i].Num ;
HideImages(Card[i].Pic);
//交换
NumTmp = NumRand.Next(0,53) ;
TmpCard = Card[i] ;
Card[i] = Card[NumTmp] ;
Card[NumTmp] = TmpCard ;
//隐藏
Card[i].Pic.Visible = false;
Card[i].Pic.Parent = OutShow1 ;
Card[i].Pic.Left = 0 ;
Card[i].Pic.Top = 0 ;
Card[i].Power = Card[i].Num ;
HideImages(Card[i].Pic);
}
//初始相关参数
InitializeConf();
//确定庄家
}
private bool RuleCard()
{
//判断出牌规则
return true;
}
private void PowerValue()
{
//为牌组赋值
int i;
for(i=0;i<=53;i++)
{
Card[i].Power = Card[i].Num ;
//设定A的大小
if(Card[i].Num == 1 ) { Card[i].Power = 14 ; }
//设定主花色的大小
if(Card[i].Type == CurrentType) { Card[i].Power = Card[i].Power + 13 ;}
//设定级主
if(Card[i].Num == CurrentLev) { Card[i].Power = 28 ;}
//设定主级主
if(((Card[i].Type == CurrentType))&&(Card[i].Num == CurrentLev)) { Card[i].Power = 29 ;}
//设定大小王
if(Card[i].Num == 0) { Card[i].Power = 29 + Card[i].Type;}
}
}
private void Me(Panel Player)
{
//游戏者控制
int i;
if(GameStatus == 0)
{
//抓牌
if(DealNum < 48)
{
ShowImages(Card[DealNum].Pic,Card[DealNum].Num,Card[DealNum].Type);
Card[DealNum].Pic.Parent = Player;
if(Player.Width < 150)
{
Card[DealNum].Pic.Left = 10 ;
Card[DealNum].Pic.Top = Player.Controls.Count * 15;
}
else
{
Card[DealNum].Pic.Left = (Player.Width - Card[DealNum].Pic.Width) - Player.Controls.Count*15 ;
Card[DealNum].Pic.Top = 20;
}
PlayerCard1.Add(DealNum);
//SortType(ref PlayerCard1);
SortPower(ref PlayerCard1);
Card[DealNum].Pic.Visible = true ;
DealNum++;
}
else
{
if(CurrentType == 0)
{
//没有人叫主
GameTime.Stop();
MessageBox.Show("无人叫主,重新发牌!");
System.EventArgs e = new System.EventArgs();
ButBegin_Click(ButBegin,e);
GameTime.Start();
}
else
{
GameTime.Stop();
if(Banker == 1)
{
//将底牌分给庄家
for(i=0;i<6;i++)
{
ShowImages(Card[DealNum].Pic,Card[DealNum].Num,Card[DealNum].Type);
Card[DealNum].Pic.Parent = Player;
if(Player.Width < 150)
{
Card[DealNum].Pic.Left = 10 ;
Card[DealNum].Pic.Top = Player.Controls.Count * 15;
}
else
{
Card[DealNum].Pic.Left = (Player.Width - Card[DealNum].Pic.Width) - Player.Controls.Count*15 ;
Card[DealNum].Pic.Top = 20;
}
PlayerCard1.Add(DealNum);
Card[DealNum].Pic.Visible = true ;
DealNum++;
}
//扣底
DealNum--;
SortPower(ref PlayerCard1);
ButOut.Visible = true ;
ButOut.Text = "扣 牌";
GameStatus = 1 ;
}
}
}
}
else
{
//出牌
GameTime.Stop();
ButOut.Visible = true ;
}
}
private void Robot(Panel Player)
{
//机器人程序
if(GameStatus == 0)
{
//抓牌
RobotGraspCard(Player);
}
if(GameStatus == 1)
{
//出牌
RobotOutCard(Player);
}
}
private void RobotGraspCard(Panel Player)
{
//电脑抓牌
int i,j,num1,type1,num2,type2,typecount;
ArrayList PlayerCard = new ArrayList();
if(Player.Name == "Player2") { PlayerCard = PlayerCard2; }
if(Player.Name == "Player3") { PlayerCard = PlayerCard3; }
if(Player.Name == "Player4") { PlayerCard = PlayerCard4; }
if(DealNum < 48)
{
Card[DealNum].Pic.Parent = Player;
if(Player.Width < 150)
{
Card[DealNum].Pic.Left = 10 ;
Card[DealNum].Pic.Top = Player.Controls.Count * 15;
}
else
{
Card[DealNum].Pic.Left = (Player.Width - Card[DealNum].Pic.Width) - Player.Controls.Count*15 ;
Card[DealNum].Pic.Top = 0;
}
Card[DealNum].Pic.Visible = true ;
//if(Player.Name == "Player2") { PlayerCard2.Add(DealNum); }
//if(Player.Name == "Player3") { PlayerCard3.Add(DealNum); }
//if(Player.Name == "Player4") { PlayerCard4.Add(DealNum); }
PlayerCard.Add(DealNum);
DealNum++;
//检测是否叫主
if(CurrentType == 0)
{
for(i=0;i<PlayerCard.Count;i++)
{
num1 = Card[(int)PlayerCard[i]].Num ;
type1 = Card[(int)PlayerCard[i]].Type;
if(num1 == 1) { num1 = 14 ; }
typecount = 0;
if(num1 == CurrentLev)
{
//检测同花色数量
for(j=0;j<PlayerCard.Count;j++)
{
num2 = Card[(int)PlayerCard[j]].Num ;
type2 = Card[(int)PlayerCard[j]].Type;
if(num2 == 1) { num2 = 14 ; }
if((num2 == 0)||(type2== type1)||(num2 == num1))
{
typecount++;
}
}
}
if(typecount >= 4)
{
if(Banker == 0)
{
if(Player.Name == "Player2") { Banker = 2 ; }
if(Player.Name == "Player3") { Banker = 3 ; }
if(Player.Name == "Player4") { Banker = 4 ; }
}
if(Player.Name == "Player2") { LevOwnerShow.Text = "瞎打"; }
if(Player.Name == "Player3") { LevOwnerShow.Text = "胡打"; }
if(Player.Name == "Player4") { LevOwnerShow.Text = "乱打"; }
CurrentType = type1 ;
PowerValue();
StatusShow();
break;
}
}
}
}
else
{
if(CurrentType == 0)
{
//没有人叫主
GameTime.Stop();
MessageBox.Show("无人叫主,重新发牌!");
System.EventArgs e = new System.EventArgs();
ButBegin_Click(ButBegin,e);
GameTime.Start();
}
else
{
if(Banker == int.Parse(Player.Name.Substring(6,1)))
{
//将底牌分给庄家
for(i=0;i<6;i++)
{
Card[DealNum].Pic.Parent = Player;
if(Player.Width < 150)
{
Card[DealNum].Pic.Left = 10 ;
Card[DealNum].Pic.Top = Player.Controls.Count * 15;
}
else
{
Card[DealNum].Pic.Left = (Player.Width - Card[DealNum].Pic.Width) - Player.Controls.Count*15 ;
Card[DealNum].Pic.Top = 0;
}
Card[DealNum].Pic.Visible = true ;
//if(Player.Name == "Player2") { PlayerCard2.Add(DealNum); }
//if(Player.Name == "Player3") { PlayerCard3.Add(DealNum); }
//if(Player.Name == "Player4") { PlayerCard4.Add(DealNum); }
PlayerCard.Add(DealNum);
DealNum++;
}
//扣底
DealNum--;
//if(Player.Name == "Player2") { SelectBottom(ref PlayerCard2); }
//if(Player.Name == "Player3") { SelectBottom(ref PlayerCard3); }
//if(Player.Name == "Player4") { SelectBottom(ref PlayerCard4); }
SelectBottom(ref PlayerCard);
ButOut.Text = "出 牌";
}
}
}
}
private void RobotOutCard(Panel Player)
{
//电脑出牌
ArrayList PlayerCard = new ArrayList();
if(Player.Name == "Player2") { PlayerCard = PlayerCard2; }
if(Player.Name == "Player3") { PlayerCard = PlayerCard3; }
if(Player.Name == "Player4") { PlayerCard = PlayerCard4; }
}
private void Judge()
{
//判断本轮出牌大小
}
private void Winner()
{
//判断胜负
switch (Banker)
{
case 1:
case 3:
if(CurrentSuccess >= 40)
{
//蠃了
if(CurrentSuccess >= 80) { BLev = BLev + 1 ; }
Banker++;
}
else
{
//输了
if(CurrentSuccess == 0 )
{ ALev = ALev + 2 ; }
else
{ ALev++ ; }
Banker = Banker + 2 ;
if(Banker > 4 ) { Banker = Banker - 4 ; }
}
CurrentLev = ALev ;
break;
case 2:
case 4:
if(CurrentSuccess >= 40)
{
//蠃了
if(CurrentSuccess >= 80) { ALev = ALev + 1 ; }
Banker++;
}
else
{
//输了
if(CurrentSuccess == 0 )
{ BLev = BLev + 2 ; }
else
{ BLev++ ; }
Banker = Banker + 2 ;
if(Banker > 4 ) { Banker = Banker - 4 ; }
}
CurrentLev = BLev ;
break;
}
if(CurrentLev == 14) { CurrentLev = 1 ; }
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -