【发布时间】:2020-11-27 10:43:49
【问题描述】:
嘿,所以我正在编写评估代码,并且很快就要到期了,我编写了一段代码,假设可以将我持有的卡片的价值相加,我正在使用统一,我已经将所有精灵放在一个一定的顺序(我把所有的 A 先放,然后是 2 等等)所以这样当我数它时,我只需除以 4(这是我老师告诉我的方法。所以它确实计数但不正确, 有时它倒数,我不知道它实际上是如何计数的,谁能指出它有什么问题。这是整个项目的链接。https://drive.google.com/file/d/1Karttf7_zmNlASE4bjKVjRAuinMrLMdw/view?usp=sharing
这里是代码,如果你只是想看看它,虽然我只是到柜台部分,但它没有完成。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class GameManager : MonoBehaviour
{
[SerializeField]
int[] Cards = new int[52];
[SerializeField]
GameObject[] PlayerCards;
[SerializeField]
GameObject[] DealerCards;
[SerializeField]
Sprite[] CardSprite;
[SerializeField]
Text HeldValue;
int temp, Card1, Card2, dealt, PlayerDealt, DealerDealt, CardValue, DealCardValue;
void Start()
{
shuffle();
RestartGame();
Dealcards();
CardValue = 0;
DealCardValue = 0;
}
void RestartGame()
{
for (int i = 0; i < PlayerCards.Length; i++)
{
PlayerCards[i].SetActive(false);
DealerCards[i].SetActive(false);
}
}
void shuffle()
{
dealt = 0;
for (int i = 0; i < 52; i++)
{
Cards[i] = i + 1;
}
for (int i = 0; i < 100; i++)
{
Card1 = Random.Range(0, 51);
Card2 = Random.Range(0, 51);
temp = Cards[Card1];
Cards[Card1] = Cards[Card2];
Cards[Card2] = temp;
}
}
void Dealcards()
{
PlayerCards[0].SetActive(true);
PlayerCards[0].GetComponent<Image>().sprite = CardSprite[Cards[0]];
CardValue += CalcCardValue(0);
PlayerCards[1].SetActive(true);
PlayerCards[1].GetComponent<Image>().sprite = CardSprite[Cards[1]];
CardValue += CalcCardValue(1);
DealerCards[0].SetActive(true);
DealerCards[0].GetComponent<Image>().sprite = CardSprite[Cards[2]];
DealCardValue += CalcCardValue(2);
DealerCards[1].SetActive(true);
DealerCards[1].GetComponent<Image>().sprite = CardSprite[Cards[3]];
DealCardValue += CalcCardValue(3);
HeldValue.text = CardValue.ToString();
dealt += 4;
PlayerDealt = 2;
DealerDealt = 2;
}
public void Hit()
{
PlayerCards[PlayerDealt].SetActive(true);
PlayerCards[PlayerDealt].GetComponent<Image>().sprite = CardSprite[Cards[dealt]];
CardValue += CalcCardValue(dealt);
PlayerDealt += 1;
dealt += 1;
HeldValue.text = CardValue.ToString();
}
int CalcCardValue(int i)
{
return Mathf.CeilToInt(Cards[i] / 4);
}
}
【问题讨论】:
-
嗨,我强烈建议您删除整个项目的链接。如果这是一个评估,那么它可能会被同学找到并采取,这会给你带来分享/窃取工作的麻烦(即使它是你自己的)
-
@TheGrandJ 我试图找到一个解决方案,甚至我的老师也不知道发生了什么,他不想再帮助我了。
-
“数错”是什么意思?
-
@PatrickArtner streamable.com/vx487m