我正在嘗試寫一個紙牌游戲,我有這個問題。
我有一個List<int> address1Player;包含一組帶引數的卡片。
我需要從這張表中提取每張卡的引數。
例如,List<int> address1Player包含 id 為 1、2、3 的卡片。我需要找出卡片的顏色List<int> address1Player。顏色存盤在int.
顏色獲取引數看起來像這樣
public int PropertyColor(int address){
return allProperties[address].GetComponent<Plot>().GetColor();
}
我如何確保最終得到一個包含每張卡片顏色的陣列?
uj5u.com熱心網友回復:
AList<int>僅包含整數串列 - 在您的情況下,ID。您想要存盤顏色的資料結構(表面上,還有一些關于卡片的其他值),所以 aList不是您想要的集合。首先,讓我們考慮一下我們的集合將保存的資料結構,然后我們將回到集合。
我們游戲中的卡片至少有兩個屬性:ID 和基于整數的顏色。在 C# 中,我們撰寫類或結構來將屬性的邏輯包分組到一個物件中。它看起來(很簡單)是這樣的:
public struct KorsunsCard
{
public int Id;
public int CardColor
}
現在,我們有一個“卡片”物件,它具有我們可以檢查和設定的屬性,如下所示:
KorsunsCard greenCard = new KorsunsCard() { Id = 1, CardColor = 6 };
greenCard.CardColor = 5; // change the color to "5"
if (greenCard.Id == 2) { /* ... do some stuff ... */ }
然后,我們可以讓方法只回傳整個卡片:
public KorsunsCard GetCardWithID(int Id)
{
KorsunsCard returnCard = // ...
// ... get a card ...
return returnCard;
}
現在,關于這些集合。選擇要使用的資料結構是 C# 的核心。集合是物件的“組”——在我們的例子中,KorsunsCards。每個集合都可以很好地完成不同的事情 - Lists 可以通過“索引”(而不是 Id)訪問卡片,遍歷整個串列,對自己進行排序等。Dictionarys 用于通過鍵查找卡片,而當它們可以遍歷整個字典,它們通常并不適用于此,因此語法涉及更多。不難,只是不像List. 您可能還需要一個HashSet, 一個只能有一個唯一專案的集合 - 但沒有排序,就像字典一樣。
我不能建議最好的解決方案,因為這取決于你的游戲規則(你的牌組總是有相同數量的牌嗎?每種牌只有一張?用戶是否從可用牌池中構建自己的牌組? ?)。
讓我們從一些卡片開始:
KorsunsCard ace = new KorsunsCard() { Id = 1, Color = 1 };
KorsunsCard deuce = new KorsunsCard() { Id = 2, Color = 2 };
KorsunsCard trey = new KorsunsCard() { Id = 3, Color = 3 };
如果你想要 a List,你可以宣告它并向它添加一些值,如下所示:
List<KorsunsCard> myDeck = new List<KorsunsCard>();
myDeck.Add(ace);
myDeck.Add(deuce);
myDeck.Add(trey)
int deuceColor = deuce.Color; // deuce's color
return myDeck[0]; // ace, but be aware the list can be shuffled/sorted!
foreach (KorsunsCard kc in myDeck) // iterate on the whole deck
{
kc.Color = 4; // set the entire decks color to 4 , one at a time
}
泛型集合型別Dictionary,HashSet,Queue,Stack都可能有關你的游戲,這取決于你如何通常與甲板和游戲規則互動。希望我已經給了你足夠的資訊List,你可以去閱讀這些其他集合型別并使用它們。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/365049.html
下一篇:unity3d將物件移動到觸摸點
