初めまして。
現在unity、C#で7並べを作っています。
動的にカードを生成し、シャッフルして配り、そしてそれを手札として並べた時、並べることはできるのですが、描画順が数字の大きいカードが一番上にきてしまいます。そこで、プレイヤー毎に配ったカードを大きい順に並び替えてから並べようとしたのですがどうも上手くいきません。
カードを配るメソッドを抜き出してソースを書かせていただきます。
//カードの枚数
private const int CardNumber_X = 13;
private const int CardNumber_Y = 4;
//プレイヤー
private List<Player> mGamePlayer = new List<Player>();
//手札を保持させる
Cards[,] mPlayerCard = new Cards[CardNumber_X, CardNumber_Y];
//
//カードを配る
private void PhaseDeal()
{
//プレイヤーを初期化
int playerIndex = 0;
//カードを配る
for (int i = 0; i < CardNumber_X; ++i)
{
for (int j = 0; j < CardNumber_Y; ++j)
{
mGamePlayer [playerIndex].SetCard (mPlayerCard[i, j]);
playerIndex++;
playerIndex %= PlayerNum;
}
}
//プレイヤー毎に手札を、数字の大きい順に並び変える。
for (int l = 0; l < mGamePlayer.Count; ++l) {
switch (l) {
case 0:
for (int y = 0; y < CardNumber_Y; ++y) {
for (int x = 0; x < CardNumber_X; ++x) {
for (int j = x - 1; j > x; --j) {
if (mPlayerCard [x - 1, y].GetNumber () < mPlayerCard [x, y].GetNumber ()) {
Cards d = mPlayerCard [x - 1, y];
mPlayerCard [x - 1, y] = mPlayerCard [x, y];
mPlayerCard [x, y] = d;
}
}
}
}
break;
case 1:
for (int y = 0; y < CardNumber_Y; ++y) {
for (int x = 0; x < CardNumber_X; ++x) {
for (int j = x - 1; j > x; --j) {
if (mPlayerCard [x - 1, y].GetNumber () < mPlayerCard [x, y].GetNumber ()) {
Cards d = mPlayerCard [x - 1, y];
mPlayerCard [x - 1, y] = mPlayerCard [x, y];
mPlayerCard [x, y] = d;
}
}
}
}
break;
//プレイヤー毎に手札を並べる
public void LineUpCard()
{
switch (mPlayerIndex)
{
case 0:
for (int i = 0; i < mCard.Count; ++i)
{
mCard [i].GetComponent<RectTransform> ().localPosition = new Vector3 (-354 + i * 23f, -240, 0f);
}
break;
case 1:
for (int i = 0; i < mCard.Count; ++i)
{
mCard [i].GetComponent<RectTransform> ().localPosition = new Vector3 (354 + i * -23f, 251, 0f);
}
break;
}
}
質問するのも初めてで、わかりにくいと思います。すみません…。
何卒よろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/18 15:32