魔兽世界

第一步:先创建三个窗体,第一个登录界面,第二个是注册界面,第三个是欢迎界面

第一个登录窗体:

 

创建第二个注册窗体:

 

 

创建第三个欢迎界面窗体:

 

 

 

 

下面让我们来看一下关键代码,让代码带我们遨游代码的海洋:

双击空白的区域用来写代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public  UserInfo[] users= new  UserInfo[10];    //创建长度为0的数组
        private  void  FrmLogin_Load( object  sender, EventArgs e)      //双击窗体
        {
            //01.给数组的前3个位置赋值
            InitDataToArray(); 
           
        }
 
        private  void  InitDataToArray()     //为数组赋初值的方法
        {
            UserInfo user1= new  UserInfo();      //赋值第一种方法
            user1.Uid = 1;
            user1.Uemail =  "1" ;
            user1.Upwd =  "1" ;
            //让游离的  user1对象    归属于  users数组
            users[0] = user1;
 
            users[1] =  new  UserInfo();        //赋值的第二种方法
            users[1].Uid = 2;
            users[1].Uemail =  "2" ;
            users[1].Upwd =  "2" ;
 
           
        }

  双击登录界面来书写代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
private  void  btnLogin_Click( object  sender, EventArgs e)      //双击登陆按钮
        {
            //1.0     一个标记,代表登录结果
            bool  flag =  false ;
            //1.1     如何判定用户录入的 邮箱和  密码是正确的
            string  email = txtEmail.Text;
            string  pwd = txtPwd.Text;
            //1.2     循环遍历数组,依次取出每一项   item
            foreach  (UserInfo item  in  users)
            {
                 //1.3  每一个item代表一个UserInfo对象
                if  (item!= null )
                {
                    if  (item.Uemail.Equals(email)&&item.Upwd.Equals(pwd))
                    {
                        //证明   邮箱   和密码   都是匹配的
                        flag =  true ;
                    }
                }
            }
            //    1.4  除了循环,判定flag是真还是假
            if  (flag== true )
            {
                //进入主窗体
                FrmMain frm= new  FrmMain();
                frm.email = txtEmail.Text;
                frm.Show();
            }
            else
            {
                MessageBox.Show( "登录失败" );
            }

  我们要为没有账号的用户注册账号

1
2
3
4
5
6
7
8
9
10
private  void  llbRegist_LinkClicked( object  sender,LinkLabelLinkClickedEventArgs e)    // 双击注册按钮
        {
            //01. 自身隐藏
            //this 代表的当前窗体对象  
            this .Hide();
            //02.让注册显示
            FrmRegister frm= new  FrmRegister();
            frm.login =  this ;
            frm.Show();
        }

  双击注册界面,书写代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
//定义窗体对象保存logininfo窗体传过来的值
public  FrmLogin fl;
//点击注册触发的事件
private  void  btnregin_Click( object  sender, EventArgs e)    //双击注册战网
{
     
     if  (ProvingInfo() ==  true )
     {
         //获取文本框中对应的值
         string  name = txtname.Text;
         string  email = txtemail.Text;
         string  cid = txtcid.Text;
         string  password = txtpassword.Text;
         LoginInfo info =  new  LoginInfo();
        info.Name = name;
         info.Id = cid;
         info.Email = email;
        info.Password = password;
         MessageBox.Show( "注册成功!" );
         for  ( int  i = 0; i < LoginInfo.array.Length; i++)
         {
             if  (LoginInfo.array[i] ==  null )
             {
                 LoginInfo.array[i] = info;
                 break ;
             }
         }
 
     }
}
//验证填写信息
public  bool  ProvingInfo()
{
      if (txtname.Text.Trim().Equals( string .Empty))
      {
          MessageBox.Show( "请填写姓名" );
          this .txtname.Focus();
          return  false ;
      }
      else  if (txtcid.Text.Trim().Equals( string  .Empty))
      {
          MessageBox.Show( "请填身份证号码" );
          this .txtcid.Focus();
          return  false ;
      
      }
      else  if  (txtemail.Text.Trim().Equals( string .Empty))
      {
          MessageBox.Show( "请填身份证号码" );
          this .txtemail.Focus();
          return  false ;
 
      }
      else  if  (txtpassword.Text.Trim().Equals( string .Empty))
      {
          MessageBox.Show( "请填写密码" );
          this .txtpassword.Focus();
          return  false ;
 
      }
      else  if  (txtone.Text.Trim().Equals( string .Empty))
      {
          MessageBox.Show( "请确认邮箱输入" );
          this .txtone.Focus();
          return  false ;
 
      }
      else  if  (txtokone.Text.Trim().Equals( string .Empty))
      {
          MessageBox.Show( "请确认密码输入" );
          this .txtokone.Focus();
          return  false ;
 
      }
      else  if  (!txtemail.Text.Equals(txtone.Text))
      {
          MessageBox.Show( "两次输入的邮箱不一致" );
          return  false ;
      }
      else  if (!txtpassword.Text.Equals(txtokone.Text))
      {
       MessageBox.Show( "两次输入的密码不一致" );
       return  false ;
      }
      else
     {
         return  true ;
      }
    

  双击第三个欢迎界面,书写代码,让他显示   “欢迎***”。

1
2
3
4
5
6
7
8
//定义变量保存窗体传过来的值
        public  string  loginame;
        //Load事件
        private  void  FrmMain_Load( object  sender, EventArgs e)   //双击窗体
        {
            //给label控件赋值
            lblloginname.Text =  "欢迎"  + loginame +  "来到魔兽世界" ;
        }

  

转载于:https://www.cnblogs.com/zsping/p/5333834.html

问题描述 魔兽世界的西面是红魔军的司令部,东面是蓝魔军的司令部。两个司令部之间是依次排列的若干城市,城市从西向东依次编号为1,2,3 …. N ( N <= 20 )。红魔军的司令部算作编号为0的城市,蓝魔军的司令部算作编号为N+1的城市。司令部有生命元,用于制造武士。 两军的司令部都会制造武士。武士一共有 dragon 、ninja、iceman、lion、wolf 五种。每种武士都有编号、生命值、攻击力这三种属性。 双方的武士编号都是从1开始计算。红方制造出来的第 n 个武士,编号就是n。同样,蓝方制造出来的第 n 个武士,编号也是n。 武士在刚降生的时候有一个初始的生命值,生命值在战斗中会发生变化,如果生命值减少到0(生命值变为负数时应当做变为0处理),则武士死亡(消失)。 有的武士可以拥有武器。武器有三种,sword, bomb,和arrow,编号分别为0,1,2。 武士降生后就朝对方司令部走,在经过的城市如果遇到敌人(同一时刻每个城市最多只可能有1个蓝武士和一个红武士),就会发生战斗。每次战斗只有一方发起主动进攻一次。被攻击者生命值会减去进攻者的攻击力值和进攻者手中sword的攻击力值。被进攻者若没死,就会发起反击,被反击者的生命值要减去反击者攻击力值的一半(去尾取整)和反击者手中sword的攻击力值。反击可能致敌人于死地。 如果武士在战斗中杀死敌人(不论是主动进攻杀死还是反击杀死),则其司令部会立即向其发送8个生命元作为奖励,使其生命值增加8。当然前提是司令部得有8个生命元。如果司令部的生命元不足以奖励所有的武士,则优先奖励距离敌方司令部近的武士。 如果某武士在某城市的战斗中杀死了敌人,则该武士的司令部立即取得该城市中所有的生命元。注意,司令部总是先完成全部奖励工作,然后才开始从各个打了胜仗的城市回收生命元。对于因司令部生命元不足而领不到奖励的武士,司令部也不会在取得战利品生命元后为其补发奖励。 如果一次战斗的结果是双方都幸存(平局),则双方都不能拿走发生战斗的城市的生命元。 城市可以插旗子,一开始所有城市都没有旗子。在插红旗的城市,以及编号为奇数的无旗城市,由红武士主动发起进攻。在插蓝旗的城市,以及编号为偶数的无旗城市,由蓝武士主动发起进攻。 当某个城市有连续两场战斗都是同一方的武士杀死敌人(两场战斗之间如果有若干个战斗时刻并没有发生战斗,则这两场战斗仍然算是连续的;但如果中间有平局的战斗,就不算连续了) ,那么该城市就会插上胜方的旗帜,若原来插着败方的旗帜,则败方旗帜落下。旗帜一旦插上,就一直插着,直到被敌人更换。一个城市最多只能插一面旗帜,旗帜没被敌人更换前,也不会再次插同颜色的旗。 各种武器有其特点: sword武器的初始攻击力为拥有它的武士的攻击力的20%(去尾取整)。但是sword每经过一次战斗(不论是主动攻击还是反击),就会变钝,攻击力变为本次战斗前的80% (去尾取整)。sword攻击力变为0时,视为武士失去了sword。如果武士降生时得到了一个初始攻击力为0的sword,则视为武士没有sword. arrow有一个攻击力值R。如果下一步要走到的城市有敌人,那么拥有arrow的武士就会放箭攻击下一个城市的敌人(不能攻击对方司令部里的敌人)而不被还击。arrow使敌人的生命值减少R,若减至小于等于0,则敌人被杀死。arrow使用3次后即被耗尽,武士失去arrow。两个相邻的武士可能同时放箭把对方射死。 拥有bomb的武士,在战斗开始前如果判断自己将被杀死(不论主动攻击敌人,或者被敌人主动攻击都可能导致自己被杀死,而且假设武士可以知道敌人的攻击力和生命值),那么就会使用bomb和敌人同归于尽。武士不预测对方是否会使用bomb。 武士使用bomb和敌人同归于尽的情况下,不算是一场战斗,双方都不能拿走城市的生命元,也不影响城市的旗帜。 不同的武士有不同的特点。 dragon可以拥有一件武器。编号为n的dragon降生时即获得编号为 n%3 的武器。dragon还有“士气”这个属性,是个浮点数,其值为它降生后其司令部剩余生命元的数量除以造dragon所需的生命元数量。dragon 在一次在它主动进攻的战斗结束后,如果还没有战死,而且士气值大于0.8,就会欢呼。dragon每取得一次战斗的胜利(敌人被杀死),士气就会增加0.2,每经历一次未能获胜的战斗,士气值就会减少0.2。士气增减发生在欢呼之前。 ninjia可以拥有两件武器。编号为n的ninjia降生时即获得编号为 n%3 和 (n+1)%3的武器。ninja 挨打了也从不反击敌人。 iceman有一件武器。编号为n的iceman降生时即获得编号为 n%3 的武器。iceman 每前进两步,在第2步完成的时候,生命值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值