您的位置:首页 > 其它

面向对象剪刀石头布小游戏的制作

2015-01-17 16:55 316 查看
分析

石头剪刀布游戏其中的对象人,电脑,判断输赢的中间裁判

人含有的属性和方法,人需要知道出拳的结果,出拳的方法(需要一个参数从前台接收出拳),电脑需要知道出拳结果,出拳方法(随机生成)

然后把两边的出拳结果(使用数字)传递给裁判,裁判进行判断输赢,由于结果有平、输、赢三种,所以我们可以把裁判判断输赢方法的返回值类型设置为枚举



玩家类:namespace 面向对象石头剪刀布游戏

{
   public class person

    {

       //出拳结果

       public string fistResult

       {

           get;

           set;

       }

       /// <summary>

       /// 出拳方法

       /// </summary>

       /// <param name="s"></param>

       /// <returns></returns>

       public int  Resu(string s)

       {

           int result = -1;

           switch (s)

            {

               case "石头":

                   result=1;

              break;

              

               case "剪刀":

                   result=2;

              break;

               case "布":

                 result=3;

              break;

            }

           this.fistResult = s;

           return result;

       }

    }

}

电脑类:

   public class Computer

    {

        public string fistResult

        {

            get;

            set;

        }

        public int ShowFist()

        {

            Random ran= new Random();

            int res= ran.Next(1, 4); //去下限无上限

            

            switch (res)

            {

                case 1:

                    fistResult = "石头";

                    break;

                case 2:

                    fistResult = "剪刀";

            
4000
        break;

                case 3:

                    fistResult = "布";

                    break;

            }

            return res;

        }

    }

}

裁判类:

namespace 面向对象石头剪刀布游戏

{

    public enum userState

    {

        Playwin,

        Ulose,

        OK

    }

   public  class CaiPan

    {

    public static userState IsPlayWin(int plays,int comps)//返回值有三中状态 平,赢,输,所以尽量使枚举

       {

           if (plays == comps)

           {

               return userState.OK;

           }

           else if (plays - comps == -1 || plays - comps == 2)

           {

               return userState.Playwin;

           }

           else

           {

               return userState.Ulose;

           }

          

       }

    }

}

前台调用代码:

  private void btn石头_Click(object sender, EventArgs e)

        {

            Button btn = ( Button)sender;//判断事件源

            NewMethod(btn.Text);

        }

        private void NewMethod(string fist)

        {

            person p = new person();

            int pfist = p.Resu(fist);

            Computer com = new Computer();

            int comfist = com.ShowFist();

            label5.Text = com.fistResult;

            lblU.Text = p.fistResult;

            userState user = CaiPan.IsPlayWin(pfist, comfist);

            if (user == userState.Playwin)

            {

                lblResult.Text = "YouWin!";

            }

            else if (user == userState.Ulose)

            {

                lblResult.Text = "Youlose!";

            }

            else

            {

                lblResult.Text = "平手!";

            }

        }

最终效果:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: