需要帮助为C#Connect Four Game

时间:2018-04-22 22:09:23

标签: c# methods arguments

我正在试图弄清楚如何设置我的胜利条件(当玩家将四个筹码排列为水平,垂直或对角线的相同颜色时)。遇到胜利条件时,将显示获胜消息,将1添加到玩家获胜和玩家损失变量,将文本添加到列表框,然后清除棋盘。 当用户使用以下代码按下开始按钮时,我设置了电路板:

        btnStartGame.Enabled = false;
        btnStartGame.Visible = false;
        btnExitGame.Enabled = true;
        btnExitGame.Visible = true;

        //This for loop creates the buttons used for the gameplay
        for (int i = 0; i < gameButtons.Length; i++)
        {
            int index = i;
            this.gameButtons[i] = new Button();
            int x = 50 + (i % 7) * 50;
            int y = 50 + (i / 7) * 50;

            this.gameButtons[i].Location = new System.Drawing.Point(x, y);
            this.gameButtons[i].Name = "btn" + (index + 1);
            this.gameButtons[i].Size = new System.Drawing.Size(50, 50);
            this.gameButtons[i].TabIndex = i;
            this.gameButtons[i].UseVisualStyleBackColor = true;
            this.gameButtons[i].Visible = true;

            gameButtons[i].Click += (sender1, ex) => this.PlaceChip(sender1, index);
            this.Controls.Add(gameButtons[i]);

从那里主游戏使用以下代码将“丢弃”筹码放入列中:

private void PlaceChip(object sender, int index)
    {
        var pressedButton = (Button)sender;

        if (pressedButton.BackColor == Color.BlanchedAlmond)
        {                
            var newBackColor = black ? Color.Red : Color.Black;                
            var buttonToChangeIndex = index;                
            while (buttonToChangeIndex + 7 < gameButtons.Count() &&
                   gameButtons[buttonToChangeIndex + 7].BackColor == Color.BlanchedAlmond)
            {
                buttonToChangeIndex += 7; 
            }             
            gameButtons[buttonToChangeIndex].BackColor = newBackColor;
            black = !black;
        }
    }

目前我的Win Condition代码如下所示,我只是不确定我需要如何正确设置(假设我在某处犯了错误)或者我如何调用它并在我调用它时正确设置参数。

private void WinCondition(int a, int b, int c, int d)
    {
        if (gameButtons[a].BackColor == gameButtons[b].BackColor && gameButtons[a].BackColor == gameButtons[c].BackColor && gameButtons[a].BackColor == gameButtons[d].BackColor)
        {
            gamesPlayed += 1;
            do
            {
                if (gameButtons[a].BackColor == Color.Red)
                {
                    MessageBox.Show("Player 1 Wins!");
                    player1wins += 1;
                    player2loss += 1;
                    lstScoreBoard.Items.Add("Player One");
                    //add to file
                    ResetBoard();

                }
                else
                {
                    MessageBox.Show("Player 2 Wins!");
                    player2wins += 1;
                    player1loss += 1;
                    lstScoreBoard.Items.Add("Player Two");
                    ResetBoard();  
                }
                if(gamesPlayed == 5)
                {
                    MessageBox.Show("Maximum number of games have been played!\nWin board will now be reset!");
                    gamesPlayed = 0;
                    player1wins = 0;
                    player2wins = 0;
                    player1loss = 0;
                    player2loss = 0;

                }
            } while (gamesPlayed > 5);
        }
    }

如果有更好的方法来设置这个胜利条件(关于参数等),我愿意接受它!我对如何正确设置感到茫然!

如果我对我所需要的描述没有意义,请随意提出,我会尽力澄清!

0 个答案:

没有答案