我如何...子菜单无法正常工作 [英] How do I...submenus not working right
问题描述
私有 无效 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 callednnPlayersGame
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 ofnumberOfPlayers
the code will follow different paths:
0 False path 1 False path 2 True path 3 True pathSo 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屋!