📄 sjform.cs
字号:
this.NamePlayer4,
this.NamePlayer3,
this.NamePlayer2,
this.LevOwnerShow,
this.LevOwnerTitle,
this.BankerShow,
this.BankerTitle,
this.BottomShow,
this.CurrentTypeShow,
this.CurrentTypeTitle,
this.CurrentLevShow,
this.CurrentLevTitle,
this.OutShow4,
this.OutShow3,
this.OutShow2,
this.OutShow1,
this.Player4,
this.Player2,
this.Player3,
this.ButOut,
this.Player1,
this.ButExit,
this.ButBegin});
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.MaximizeBox = false;
this.MaximumSize = new System.Drawing.Size(650, 570);
this.MinimumSize = new System.Drawing.Size(650, 570);
this.Name = "SJForm";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "升级";
this.Load += new System.EventHandler(this.SJForm_Load);
this.ResumeLayout(false);
}
#endregion
private void SJForm_Load(object sender, System.EventArgs e)
{
//初始化参数
Banker = 0 ;
ALev = 2 ;
BLev = 2 ;
CurrentLev = 2 ;
CreateCard() ;
}
private void ButExit_Click(object sender, System.EventArgs e)
{
//退出游戏
this.Close();
}
private void ButBegin_Click(object sender, System.EventArgs e)
{
//开始游戏
//初始相关参数
InitializeConf();
//显示相关信息
StatusShow();
//洗牌
ShuffleCard();
//开始游戏
GameTime.Start();
}
private void ButOut_Click(object sender, System.EventArgs e)
{
int i,tmp;
//获取选中牌组
PlayerOut1.Clear();
for(i=0;i<PlayerCard1.Count;i++)
{
tmp = (int)PlayerCard1[i] ;
if(Card[tmp].Pic.Top == 0)
{
PlayerOut1.Add(tmp);
}
}
tmp = 0 ;
if(ButOut.Text == "扣 牌" )
{
//响应“扣牌”按钮
BottomCard.Clear();
if(PlayerOut1.Count != 6 )
{
MessageBox.Show("请选择六张底牌");
}
else
{
for(i=0;i<PlayerCard1.Count;i++)
{
tmp = (int)PlayerCard1[i] ;
if(Card[tmp].Pic.Top == 0)
{
PlayerCard1.RemoveAt(i);
i--;
}
}
for(i=0;i<6;i++)
{
BottomCard.Add((int)PlayerOut1[i]);
HideImages(Card[(int)PlayerOut1[i]].Pic);
Card[(int)PlayerOut1[i]].Pic.Parent = BottomShow ;
Card[(int)PlayerOut1[i]].Pic.Left = (BottomCard.Count-1)*15 ;
Card[(int)PlayerOut1[i]].Pic.Top = 0 ;
}
SortPower(ref PlayerCard1);
ButOut.Text = "出 牌";
tmp = 1 ;
}
}
if((tmp == 0 )&&(ButOut.Text == "出 牌" ))
{
//响应“出牌”按钮
if(RuleCard())
{
//出牌
for(i=0;i<PlayerOut1.Count;i++)
{
Card[(int)PlayerOut1[i]].Pic.Parent = OutShow1 ;
Card[(int)PlayerOut1[i]].Pic.Left = i * 15 ;
Card[(int)PlayerOut1[i]].Pic.Top = 0 ;
}
for(i=0;i<PlayerCard1.Count;i++)
{
tmp = (int)PlayerCard1[i] ;
if(Card[tmp].Pic.Top == 0)
{
PlayerCard1.RemoveAt(i);
i--;
}
}
if(OutSeq[3] == 1)
{
//判断此轮大小
Judge();
}
GameTime.Start();
ButOut.Visible = false;
}
else
{
//不能出牌
MessageBox.Show("不符合规则,请向身边资深升级人事咨询规则!");
for(i=0;i<PlayerOut1.Count;i++)
{
Card[(int)PlayerOut1[i]].Pic.Top = 20 ;
}
}
}
}
private void Card_Click(object sender, System.EventArgs e)
{
//响应图片点击事件
int start,last,len,lev,type ;
string S ;
PictureBox TmpCard = (PictureBox)sender ;
if(GameStatus == 0 )
{ //叫主
S = TmpCard.Name ;
start = S.IndexOf("_")+1 ;
last = S.LastIndexOf("_") ;
len = last - start ;
lev = int.Parse(S.Substring(start,len));
type = int.Parse(S.Substring(last+1,1));
if((CurrentLev == lev)&&(CurrentType == 0))
{
if(Banker == 0) { Banker = 1 ; }
LevOwnerShow.Text = "玩家";
CurrentType = type ;
PowerValue();
StatusShow();
}
}
else
{
if(TmpCard.Top == 0)
{ TmpCard.Top = 20 ; }
else
{ TmpCard.Top = 0 ; }
}
}
private void GameTime_Tick(object sender, System.EventArgs e)
{
//轮流出牌
int i,tmp;
if(OutCard.Count <= 48)
{
tmp = Banker ;
if(tmp==0) { tmp = 1 ;}
for(i=0;i<4;i++)
{
OutSeq[i] = tmp+i ;
if(OutSeq[i] > 4) { OutSeq[i] = OutSeq[i] - 4 ;}
}
for(i=0;i<4;i++)
{
if(GameTime.Enabled == false )
{
break;
}
switch (OutSeq[i])
{
case 1 :
//玩家1控制
Me(Player1);
//游戏者控制
break;
case 2 :
//玩家2控制
Robot(Player2);
break;
case 3 :
//玩家3控制
Robot(Player3);
break;
case 4 :
//玩家4控制
Robot(Player4);
break;
}
}
}
else
{
//判断胜负
GameTime.Stop();
Winner();
//进入下一级
if((ALev >= 14)||(BLev >= 14))
{
if(ALev >= 14) { MessageBox.Show("恭喜!你蠃了"); }
if(BLev >= 14) { MessageBox.Show("哈哈!你输了"); }
}
else
{
//System.EventArgs e = new System.EventArgs();
ButBegin_Click(ButBegin,e);
}
}
}
private void ShowImages(PictureBox ShowPic,int ShowNum,int ShowType)
{
//显示相应牌图
string imagesfile = "" ;
imagesfile = @"images\PUKE\"+ShowNum.ToString()+"_"+ShowType.ToString()+".jpg";
Bitmap MyImage = new Bitmap(AppDomain.CurrentDomain.SetupInformation.ApplicationBase+imagesfile);
ShowPic.Image = (Image) MyImage ;
ShowPic.Enabled = true ;
}
private void HideImages(PictureBox ShowPic)
{
//隐藏相应牌图
string imagesfile = "" ;
imagesfile = @"images\PUKE\background.jpg";
Bitmap MyImage = new Bitmap(AppDomain.CurrentDomain.SetupInformation.ApplicationBase+imagesfile);
ShowPic.Image = (Image) MyImage ;
ShowPic.Enabled = false ;
}
private void SelectBottom(ref ArrayList TmpCard)
{
//选择待扣底牌
//选择6张小牌扣底
Panel TmpPanel = (Panel)Card[(int)TmpCard[0]].Pic.Parent ;
int i,Num,count;
Num = 3 ;
count = 0;
BottomCard.Clear();
while (count < 6)
{
for(i=0;i<TmpCard.Count;i++)
{
if(count >= 6) { break ; }
if(Card[(int)TmpCard[i]].Power < Num)
{
BottomCard.Add((int)TmpCard[i]);
HideImages(Card[(int)TmpCard[i]].Pic);
Card[(int)TmpCard[i]].Pic.Parent = BottomShow ;
Card[(int)TmpCard[i]].Pic.Left = (count-1)*15 ;
Card[(int)TmpCard[i]].Pic.Top = 0 ;
TmpCard.RemoveAt(i);
count++;
}
}
Num++;
}
//重排现在牌组
for(i=0;i<TmpCard.Count;i++)
{
Card[(int)TmpCard[i]].Pic.Visible = false ;
Card[(int)TmpCard[i]].Pic.Parent = OutShow1;
Card[(int)TmpCard[i]].Pic.Left = 0;
}
for(i=0;i<TmpCard.Count;i++)
{
Card[(int)TmpCard[i]].Pic.Parent = TmpPanel;
if(TmpPanel.Width < 150)
{
Card[(int)TmpCard[i]].Pic.Left = 10 ;
Card[(int)TmpCard[i]].Pic.Top = TmpPanel.Controls.Count * 15;
}
else
{
Card[(int)TmpCard[i]].Pic.Left = (TmpPanel.Width - Card[(int)TmpCard[i]].Pic.Width) - TmpPanel.Controls.Count*15 ;
Card[(int)TmpCard[i]].Pic.Top = 0;
}
Card[(int)TmpCard[i]].Pic.Visible = true ;
}
ButOut.Text = "扣 牌";
GameStatus = 1 ;
}
private void SortType(ref ArrayList TmpCard)
{
//按类型排序
//使用冒泡算法对牌组进行排序
GameTime.Stop();
int i,j,count,type1,num1,type2,num2,tmp;
int[] Min = new int[100];
count = TmpCard.Count ;
for(i=0;i<count;i++)
{
Min[i] = (int)TmpCard[i] ;
Card[Min[i]].Pic.Visible = false ;
Card[Min[i]].Pic.Parent = OutShow1;
Card[Min[i]].Pic.Left = 0 ;
}
for(i=0;i<count;i++)
{
for(j=i+1;j<count;j++)
{
type1 = Card[Min[i]].Type ;
num1 = Card[Min[i]].Num ;
if(num1 == 0)
{ num1 = 15;
type1 = type1 + 5 ;
}
if(num1 == 1) { num1 = 14;}
type2 = Card[Min[j]].Type ;
num2 = Card[Min[j]].Num ;
if(num2 == 0)
{ num2 = 15;
type2 = type2 + 5 ;
}
if(num2 == 1) { num2 = 14;}
if((type1>type2)||((type1==type2)&&(num1>num2)))
{
tmp = Min[i] ;
Min[i] = Min[j] ;
Min[j] = tmp ;
}
}
}
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 ;
}
GameTime.Start();
}
private void SortPower(ref ArrayList TmpCard)
{
//按大小排序
//使用冒泡算法对牌组进行排序
int i,j,count,type1,num1,type2,num2,tmp,power1,power2;
int[] Min = new int[100];
count = TmpCard.Count ;
for(i=0;i<count;i++)
{
Min[i] = (int)TmpCard[i] ;
Card[Min[i]].Pic.Visible = false ;
Card[Min[i]].Pic.Parent = OutShow1;
Card[Min[i]].Pic.Left = 0 ;
}
for(i=0;i<count;i++)
{
for(j=i+1;j<count;j++)
{
type1 = Card[Min[i]].Type ;
num1 = Card[Min[i]].Num ;
power1 = Card[Min[i]].Power ;
if(num1 == 0)
{
num1 = 15;
type1 = type1 + 5 ;
}
if(num1 == 1) { num1 = 14;}
type2 = Card[Min[j]].Type ;
num2 = Card[Min[j]].Num ;
power2 = Card[Min[j]].Power ;
if(num2 == 0)
{
num2 = 15;
type2 = type2 + 5 ;
}
if(num2 == 1) { num2 = 14;}
if(power2 > 14 )
{
if(power1>power2)
{
tmp = Min[i] ;
Min[i] = Min[j] ;
Min[j] = tmp ;
}
}
else
{
if((type1>type2)||((type1==type2)&&(num1>num2))||(power1>14))
{
tmp = Min[i] ;
Min[i] = Min[j] ;
Min[j] = tmp ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -