我正试着在班里设置一个柜台,但没有用.也不确定随机部分是否正常工作



我是c#的新手,尤其是类。我试着掷多个骰子,骰子的顶部是玩家的骰子,底部是电脑的骰子。我设置了一个计数器来计算每个掷骰子的次数并告诉用户。到目前为止,它给了我0。

此外,掷骰子是随机的,但我不确定它们是否完全随机。

任何帮助都会很棒。非常感谢。

    namespace Week_6._3
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
            private void label1_Click(object sender, EventArgs e)
            {
            }
            public void Squares(int x, int y)
            {
                int width = this.pictureBox1.Width;
                int sizeDice = width/ 7;
                Graphics paper = pictureBox1.CreateGraphics();
                SolidBrush brushWhite = new SolidBrush(Color.White);
                Pen penBlack = new Pen(Color.Black);
                paper.FillRectangle(brushWhite, x, y, sizeDice, sizeDice);
                paper.DrawRectangle(penBlack, x, y, sizeDice, sizeDice);
            }
            public void Circles(int x, int y, int counter)
            {
                SolidBrush blackbrush = new SolidBrush(Color.Black);
                Graphics paper = pictureBox1.CreateGraphics();
                int width = this.pictureBox1.Width;
                int length = this.pictureBox1.Height;
                int sizeDice = width / 7;
                int sizeCircle = sizeDice/7;
                int firstRowCircles =  sizeCircle;
                int secondRowCircles = sizeCircle * 3;
                int thirdRowCircles = sizeCircle * 5;
                Random  random = new Random();
                int num = random.Next(1,6);
                if (num == 1)
                {
                    counter = counter + 1;
                    paper.FillEllipse(blackbrush, x + secondRowCircles, y + secondRowCircles, sizeCircle, sizeCircle);
                }
                else if (num == 2)
                {
                    counter = counter + 2;
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y +   firstRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + thirdRowCircles, sizeCircle, sizeCircle);
                }
                else if (num == 3)
                {
                    counter = counter + 3;
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y + firstRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + secondRowCircles, y + secondRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + thirdRowCircles, sizeCircle, sizeCircle);
                }
                else if (num == 4)
                {
                    counter = counter + 4;
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y + firstRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y + thirdRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + firstRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + thirdRowCircles, sizeCircle, sizeCircle);
                }
                else if (num == 5)
                {
                    counter = counter + 5;
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y + firstRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y + thirdRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + firstRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + thirdRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + secondRowCircles, y + secondRowCircles, sizeCircle, sizeCircle);
                }
                else if (num == 6)
                {
                    counter = counter + 6;
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y + firstRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y + secondRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + firstRowCircles, y + thirdRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + firstRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + secondRowCircles, sizeCircle, sizeCircle);
                    paper.FillEllipse(blackbrush, x + thirdRowCircles, y + thirdRowCircles, sizeCircle, sizeCircle);
                }
            }
            private void buttonRollDice_Click(object sender, EventArgs e)
            {
                int width = this.pictureBox1.Width;
                int length = this.pictureBox1.Height;
                int widthShift = width / 7;
                int middleWidth = widthShift * 3;
                int rightWidth = widthShift * 5;
                int allTopDiceLength = length / 8;
                int allBottomDiceLength = allTopDiceLength + (length / 2);
                int playerCounter = 0;
                int computerCounter = 0;
                //Top Left Square
                Squares(widthShift, allTopDiceLength);
                Circles(widthShift, allTopDiceLength, playerCounter);
                //Bottom Left Square
                Squares(widthShift, allBottomDiceLength);
                Circles(widthShift, allBottomDiceLength, computerCounter);
                //Top Middle Square
                Squares(middleWidth, allTopDiceLength);
                Circles(middleWidth, allTopDiceLength, playerCounter);
                //Bottom Middle Square
                Squares(middleWidth, allBottomDiceLength);
                Circles(middleWidth, allBottomDiceLength, computerCounter);
                //Top Right Square
                Squares(rightWidth, allTopDiceLength);
                Circles(rightWidth, allTopDiceLength, playerCounter);
                //Bottom Middle Square
                Squares(rightWidth, allBottomDiceLength);
                Circles(rightWidth, allBottomDiceLength, computerCounter);
                labelPlayerRolls.Text = Convert.ToString(playerCounter);
            }
        }
    }

代码实际上正在更新函数参数,因此您不会在调用方方法/函数中看到更新的值,因为它是由值而不是引用传递的。

您有几个选项可以解决此问题。

选项1:

您可以修改circle方法定义以具有返回值。

public int Circles(int x, int y, int counter)
{
     ...
     return counter
}

选项2:

counter作为引用参数传递。

public void Circles(int x, int y, ref int counter)
{
     ...         
}

选项3:

定义实例变量并根据需要更新值(无需传递参数,直接使用实例变量)。

public partial class Form1 : Form
{
      public Form1()
      {
          InitializeComponent();
      }
      private int counter;
      ....
      public void Circles(int x, int y)
      {
           ...         
      }
}

最新更新