我如何将一个对象从我的main传递到我的类
本文关键字:我的 main 一个对象 | 更新日期: 2023-09-27 18:12:08
我是一名正在做课外项目的学生,我的教授让我编写一个处理类的程序。
我创建了一个名为"Piece"的类,代码如下:namespace GG
{
class Piece
{
public int rank;
public int player;
}
}
我在主程序(Form)中实例化了它,如下所示:
namespace GG
{
public partial class frmPGame : Form
{
public frmPGame()
{
InitializeComponent();
}
Piece[,] gameBoard = new Piece[9, 8];
public void clearGameBoard()
{
for (int y = 0; y < 8; y++)
{
for (int x = 0; x < 9; x++)
{
gameBoard[x, y] = new Piece();
gameBoard[x, y].rank = -1;
gameBoard[x, y].player = 0;
}
}
}
}
}
无论如何,表单有图片,并且,根据我创建的2D数组内的内容,图片可以改变。然而,我也在我的主程序中做了一些数学运算,这使得它变得混乱和冗长。我想问一下,我是否可以,以某种方式,传递gameBoard对象到另一个类,连同它的内容。
基本上现在的程序流程是:
- <
- 创建对象/gh>
- 在Main中使用对象 做数学
- 更改表单图片
如果可能的话,我想把它改成:
- <
- 创建对象/gh>
- 在数学课上做数学
- 从数学类返回/传递对象到Main
- 更改表单图片
我知道这看起来像我把东西复杂化了,但是我的教授告诉我main唯一要做的就是渲染图片。这个类应该处理与数学相关的东西。
请给我一些建议好吗?我在"mathClass"中实例化"Piece"类吗?我将提出两个变体。记住,数组是引用类型。如果你把其中一个传递给一个方法,这个方法可以直接修改它。
第一次变异:在这里,游戏板并没有被"描述"为一个完整的物体。它是一个数组,其中一些(静态)实用程序方法放在GameBoardMath
类中。
namespace GG
{
public partial class frmPGame : Form
{
public frmPGame()
{
GameBoardMath.ClearGameBoard(gameBoard); // Clear the game board
InitializeComponent();
}
Piece[,] gameBoard = new Piece[9, 8];
}
public class GameBoardMath
{
public static void ClearGameBoard(Piece[,] gameBoard)
{
int lenX = gameBoard.GetLength(0);
int lenY = gameBoard.GetLength(1);
for (int y = 0; y < lenY; y++)
{
for (int x = 0; x < lenX; x++)
{
gameBoard[x, y] = new Piece();
gameBoard[x, y].rank = -1;
gameBoard[x, y].player = 0;
}
}
}
}
}
第二个变体:这里我们认为GameBoard
是一个"full"类。
public class GameBoard
{
public readonly Piece[,] Board;
public GameBoard(int x, int y)
{
Board = new Piece[x, y];
ClearGameBoard();
}
public void ClearGameBoard()
{
int lenX = Board.GetLength(0);
int lenY = Board.GetLength(1);
for (int y = 0; y < lenY; y++)
{
for (int x = 0; x < lenX; x++)
{
Board[x, y] = new Piece();
Board[x, y].rank = -1;
Board[x, y].player = 0;
}
}
}
}
使用它,在您的Form
:
GameBoard gameBoard = new GameBoard(9, 8);
创建一个GameBoard类,在构造函数或一些Initialize方法中创建棋子。然后,您可以在主表单中遍历这些部分并绘制图片。
查看Dragger Game在CodePlex上的实现