我正在製作象棋遊戲,並且要移動棋子我需要變量board
,它位於Form1
類中。我想知道是否在我的基類中調用board
變量,所以我可以在引用我的基類的其他類中使用它。從1類抓取變量,並在沒有繼承的情況下在另一個類中使用它們c#
這是代碼看起來是(我只包括關鍵零部件不是一切)
public partial class Form1 : Form
{
public string[,] board = new string[8, 8];
}
class Pieces
{
//I want there to be a variable here that will always contain the exact data as the board variable
//I also have other variables that are in the Form1 class that I need in here
}
class Rook : Pieces
{
//This is just a small sample of how I set up the moves but its in a for loop
if (board[x + i, y] == null && !board[x + i, y].Contains("King"))
pieceMove.AddLast(placementBoard[x + i, y]);
}
這是我想的,但我想知道是否有一種不同的方法
public partial class Form1 : Form
{
public string[,] board = new string[8, 8];
Rook[] whiteRook = new Rook[10];//I made an array of rooks so when a pawn gets to the opposite side of the board it can turn into a rook
public Form1()
{
InitializeComponent();
Rook[0] whiteRook = new Rook();
whiteRook.board = board;//Everytime a piece moves I will call this with every piece to update it
}
}
class Pieces
{
public string[,] board = new string[8,8];
}
class Rook : Pieces
{
//This is just a small sample of how I set up the moves but its in a for loop
if (board[x + i, y] == null && !board[x + i, y].Contains("King"))
pieceMove.AddLast(placementBoard[x + i, y]);
}
首先嚐試創建PIECES類的FORM1的朋友類,這樣您可以訪問form1的所有變量。但董事會是公開的,所以我會假設你只需要一個董事會的實例,爲什麼不把它做成靜態的。但是,如果你不想這樣做,那麼你可以做的是創建一個接收form1對象的件類中的函數,並且由於董事會是公開的,它將通過該對象容易地在該函數中可用。除此之外,BradleyDOTNET表示你應該考慮改變你的對象模型。 –
我對編程相當陌生,所以我真的不明白靜態是什麼或者如何有效地使用類,我知道這是一個壞習慣,但我一直在避免在該程序中使用類,我真的只是硬編碼所有這些動作和'Form1'類的所有內容,但是我把板子變量公開,試着看看我是否可以從pieces類訪問它,並且不會被要求刪除它。現在我把它作爲'public static string [,] board = new string [8,8];並且我複製了白嘴鴉的動作並將它放入白嘴鴉班,並且它現在不想移動 –
我現在修好了,所以現在白嘴鴉動起來了,這是因爲if語句中的空引用異常 –