Re: [问题] 关于button的使用

楼主: rocson (rocson)   2014-10-01 17:24:22
可以将9个如下命名
[bn1] [bn2] [bn3]
[bn4] [bn5] [bn6]
[bn7] [bn8] [bn9]
然后要判断成功条件时, 请用以下方式判断
判断一
成功条件:如果直排连成一线则胜利
判断方法:(虚拟CODE)
令bn.id=为Click的Button Id
// 找出直行上一格的 button Id
int bn_1st_Id = Convert.ToInt(bn.id) - 3;
if(bn_1st_Id<1) { // 如果本身没有上一格, 则找下下一格
bn_1st_Id+=9;
}
// 找出直行的下一格 button Id
int bn_2nd_Id = Convert.ToInt(bn.id) + 3;
if(bn_2nd_Id>9) { // 如果本身没有下一格,则找上上一格
bn_2nd_Id-=9;
}
string bnSelfFlag=bn.Text;
string bn1stFlag=(Button)FindContorl("bn"+bn_1st_Id.toString()).Text;
string bn2ndFlag=(Button)FindContorl("bn"+bn_2nd_Id.toString()).Text;
if(bnSelfFlag==bn1stFlag==bn2ndFlag)
{
Show(bn.Text + " Win!!");
}
判断二:
成功条件:横排连成一线则胜利
判断方法:
// 找出横排左一格的 button Id
int bn_Left_Id = Convert.ToInt(bn.id);
if((bn_Left_Id % 3)==1) { // 如果本身没有前一格, 则找后后一格
bn_Left_Id+=2;
}
else {
bn_Left_Id -= 1;
}
// 找出横排右一格的 button Id
int bn_Right_Id = Convert.ToInt(bn.id);
if((bn_Right_Id%3)==0) { // 如果本身没有后一格,则找前前一格
bn_Right_Id-=2;
}
else {
bn_Right_Id += 1;
}
string bnSelfFlag=bn.Text;
string bnLeftFlag=(Button)FindContorl("bn"+bn_Left_Id.toString()).Text;
string bnRightFlag=(Button)FindContorl("bn"+bn_Right_Id.toString()).Text;
if(bnSelfFlag==bnLeftFlag==bnRightFlag)
{
Show(bn.Text + " Win!!");
}
判断三:
成功条件:如果斜角有连成线则胜利
判断方法:
// 判断按钮是否在对角线上(数字为单数即是)
if((Convert.ToInt(bn.id) % 2)==1) {
if(Convert.ToInt(bn.id)==5) { // 如果下在正中
if(bn1.Text==bn5.Text==bn9.Text) {
Show(bn.Text + " Win!!");
}
else if(bn3.Text==bn5.Text==bn7.Text) {
Show(bn.Text + " Win!!");
}
}
if((Convert.ToInt(bn.id) % 4)==1) { //左上右下
if(bn1.Text==bn5.Text==bn9.Text) {
Show(bn.Text + " Win!!");
}
}
else { //右上左下
if(bn3.Text==bn5.Text==bn7.Text) {
Show(bn.Text + " Win!!");
}
}
}
大致上逻辑这样写囉..
作者: neo5277 (I am an agent of chaos)   2014-10-01 21:16:00
感谢我后来发现他用foreach 简单好多本来是观念不懂现在可以继续研究 晚几天PO心得

Links booklink

Contact Us: admin [ a t ] ucptt.com