我如何...子菜单无法正常工作 [英] How do I...submenus not working right

查看:69
本文介绍了我如何...子菜单无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在井字游戏中工作.我有一个文件菜单,如果我们选择播放器一和播放器二,它应该从我们那里接受输入;当我们选择播放器一和计算机时,它应该从我们和其他帧中获取一个输入.电脑.但是这样做并不能帮上忙.........


 私有 无效 playerOneToolStripMenuItem_Click(对象发​​件人,EventArgs e)
       {
           //  twoPlayersPlayGame(); 
           playerOneToolStripMenuItem.Checked =  true ;
       }

       私有 无效 playerTwoToolStripMenuItem_Click(对象发​​件人,EventArgs e)
       {
           twoPlayersPlayGame();
       }

       私有 无效 computerToolStripMenuItem_Click(对象发​​件人,EventArgs e)
       {
           withComputer();
       }


       私有 布尔 twoPlayersPlayGame()
       {
           playerOneToolStripMenuItem.Checked =  true ;
           playerTwoToolStripMenuItem.Checked =  true ;
           computerToolStripMenuItem.Checked =  false ;
           返回 ;
       }

       私有 布尔 withComputer()
       {
           playerOneToolStripMenuItem.Checked =  true ;
           playerTwoToolStripMenuItem.Checked =  false ;
           computerToolStripMenuItem.Checked =  true ;
          //  computerPlayer = true; 
           返回 ;
       } 





 私有 无效 Button_click(对象发​​件人,EventArgs e)
       {
           按钮b =(按钮)发送器;
           如果(twoPlayersPlayGame())
          {
               如果(twoPlayersPlayGame()&& playerTurn ==  true )
               {
                   b.Text = " ;
                   playerTurn =  false ;
                   b.Enabled =  false ;
                  computerPlayer =  true ;
               }
               其他
               {
                   b.Text = " ;
                   playerTurn =  true ;
                   b.Enabled =  false ;
               }
               clicksCount ++;
               checkWinner();
          }
           如果(withComputer())
          {

               如果(!playerTurn&& computerPlayer)
               {
                   computerMove();
                   p2TextBox2.Text = " ;
               }
           }

       } 

解决方案

方法中的设置值与方法返回的值不相同:
如果您有一个名为nnPlayersGame的方法,并且您编写了代码来调用它:

 如果(nnPlayersGame())
   {
   // 真实路径
   ...
   }
其他
   {
   // 错误的路径
   ...
   } 

,那么代码是遵循"True path"还是"False path"仅取决于方法的return语句中指定的值:

 公共 布尔 nnPlayersGame()
   {
   返回 numberOfPlayers >   1 ;
   } 


根据numberOfPlayers的值,代码将遵循不同的路径:

 0错误的路径
1条错误路径
2真实路径
3真实路径

因此,您需要使您的方法返回正确的值,或者检查它们设置的值,而不是再次调用它们:

 私有 无效 Button_click(对象发​​件人,EventArgs e)
       {
           按钮b =(按钮)发送器;
           如果(twoPlayersPlayGame())
          {
               如果(playerTwoToolStripMenuItem.Checked& playerTurn ==  true )
               {
                   b.Text = " ;
                   playerTurn =  false ;
                   b.Enabled =  false ;
                  computerPlayer =  true ;
               }
               其他
               {
                   b.Text = " ;
                   playerTurn =  true ;
                   b.Enabled =  false ;
               }
               clicksCount ++;
               checkWinner();
          }
           如果(computerToolStripMenuItem.Checked)
          {

               如果(!playerTurn&& computerPlayer)
               {
                   computerMove();
                   p2TextBox2.Text = " ;
               }
           }
       } 

应该可以使您更进一步.


i ham working on tic tac toe.i have a file menu in which if we select player one and player two it should take input from us and when we select player one and computer it should take one input from us and other fram the computer. but it is not doing that can anyon help.........


private void playerOneToolStripMenuItem_Click(object sender, EventArgs e)
       {
           //twoPlayersPlayGame();
           playerOneToolStripMenuItem.Checked = true;
       }

       private void playerTwoToolStripMenuItem_Click(object sender, EventArgs e)
       {
           twoPlayersPlayGame();
       }

       private void computerToolStripMenuItem_Click(object sender, EventArgs e)
       {
           withComputer();
       }


       private bool twoPlayersPlayGame()
       {
           playerOneToolStripMenuItem.Checked = true;
           playerTwoToolStripMenuItem.Checked = true;
           computerToolStripMenuItem.Checked = false;
           return true;
       }

       private bool withComputer()
       {
           playerOneToolStripMenuItem.Checked = true;
           playerTwoToolStripMenuItem.Checked = false;
           computerToolStripMenuItem.Checked = true;
          // computerPlayer = true;
           return true;
       }





private void Button_click(object sender, EventArgs e)
       {
           Button b = (Button)sender;
           if (twoPlayersPlayGame())
          {
               if (twoPlayersPlayGame() && playerTurn == true)
               {
                   b.Text = "X";
                   playerTurn = false;
                   b.Enabled = false;
                  computerPlayer = true;
               }
               else
               {
                   b.Text = "O";
                   playerTurn = true;
                   b.Enabled = false;
               }
               clicksCount++;
               checkWinner();
          }
           if (withComputer())
          {

               if (!playerTurn && computerPlayer)
               {
                   computerMove();
                   p2TextBox2.Text = "Computer";
               }
           }

       }

解决方案

Setting values within a method and the value returned from the method are not the same:
if you have a method called nnPlayersGame and you write code to call it:

if (nnPlayersGame())
   {
   // True path
   ...
   }
else
   {
   // False path
   ...
   }

then whether the code follows the "True path" or the "False path" depends only on the value specified in the return statement of the method:

public bool nnPlayersGame()
   {
   return numberOfPlayers > 1;
   }


Depending on the value of numberOfPlayers the code will follow different paths:

0     False path
1     False path
2     True path
3     True path

So you need to make your methods return the correct value, or check the values that they set instead of calling them again:

private void Button_click(object sender, EventArgs e)
       {
           Button b = (Button)sender;
           if (twoPlayersPlayGame())
          {
               if (playerTwoToolStripMenuItem.Checked && playerTurn == true)
               {
                   b.Text = "X";
                   playerTurn = false;
                   b.Enabled = false;
                  computerPlayer = true;
               }
               else
               {
                   b.Text = "O";
                   playerTurn = true;
                   b.Enabled = false;
               }
               clicksCount++;
               checkWinner();
          }
           if (computerToolStripMenuItem.Checked)
          {

               if (!playerTurn && computerPlayer)
               {
                   computerMove();
                   p2TextBox2.Text = "Computer";
               }
           }
       }

Should get you a little further.


这篇关于我如何...子菜单无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆