LoginSignup
0
0

More than 3 years have passed since last update.

Solitaire(3)

Last updated at Posted at 2019-09-06
UseInput.cs
void GetMouseClick ()
    {
        if (Input.GetMouseButtonDown(0))
        {
            Vector3 mousePosition = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, -10));
            RaycastHit2D hit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
            if (hit)
            {
                //what has been hit? Deck/Card/EmptySlot...
                if (hit.collider.CompareTag("Deck"))
                {
                    //clicked deck
                    Deck();
                }
                else if (hit.collider.CompareTag("Card"))
                {
                    //clicked card
                    Card();
                }
                else if (hit.collider.CompareTag("Top"))
                {
                    //clicked top
                    Top();        
                }
                else if (hit.collider.CompareTag("Bottom"))
                {
                    //clicked Bottom
                    Bottom();
                }
            }
        }
    }

    void Deck()
    {
        // Deck click actions
        print("Clicked on deck");
    }
    void Card()
    {
        // Card click actions
    }
    void Top()
    {
        // Top click actions
    }
    void Bottom()
    {
        // Bottom click actions
    }
}
UserInput.cs
void Update()
    {
        GetMouseClick();
    }
Solitaire.cs
private int trips;
private int tripsRemainder;
Solitaire.cs
public void SortDeckIntoTrips()
    {
        trips = deck.Count / 3;
        tripsRemainder = deck.Count % 3;
    }
Solitaire
public List<string> tripsOnDisplay = new List<string>();
public List<List<string>> deckTrips = new List<List<string>>();
Solitaire
public void SortDeckIntoTrips()
    {
        trips = deck.Count / 3;
        tripsRemainder = deck.Count % 3;
        deckTrips.Clear();

        int modifier = 0;
        for (int i = 0; i < trips; i++)
        {
            List<string> myTrips = new List<string>();
            for (int j = 0; j < 3; j++)
            {
                myTrips.Add(deck[j + modifier]);
            }
            deckTrips.Add(myTrips);
            modifier = modifier + 3;
        }
        if (tripsRemainder !=0)
        {
            List<string> myRemainders = new List<string>();
            modifier = 0;
            for (int k = 0; k < tripsRemainder; k++)
            {
                myRemainders.Add(deck[deck.Count - tripsRemainder + modifier]);
                modifier++;
            }
            deckTrips.Add(myRemainders);
            trips++;
        }
        deckLocation = 0;
    }
Solitaire.cs
private GameObject deckButton;

private int deckLocation;
Solitaire.cs
public void DealFromDeck()
    {
        if (deckLocation < trips)
        {
            //draw 3 new cards
            tripsOnDisplay.Clear();
            float xoffset = 2.5f; 

            foreach (string card in deckTrips[deckLocation])
            {
                GameObject newTopCard = Instantiate(cardPrefab, new Vector3(deckButton.transform.position.y, deckButton.transform.position.z), Quaternion.identity, deckButton.transform);
                xoffset = xoffset + 0.5f;
                newTopCard.name = card;
                tripsOnDisplay.Add(card);
                newTopCard.GetComponent<Selectable>().faceUp = true;
            }
            deckLocation++;

        }
        else
        {
            //Restack the top deck
            RestackTopDeck();        
        }
    }

    void RestackTopDeck()
    {

    }

public void DealFromDeck()内に

Solitaire.cs
 // add remaining cards to discard pile

            foreach (Transform child in deckButton.transform)
            {
                if (child.CompareTag("Card"))
                {
                    deck.Remove(child.name);
                    discardPile.Add(child.name);
                    Destroy(child.gameObject);
                }
            }
UserInput
private Solitaire solitaire;

void Deck()内に

UserInput
solitaire.DealFromDeck();

public void DealFromDeck()内の
foreach (string card in deckTrips[deckLocation])内の

xoffset = xoffset + 0.5f;の下に

Solitaire
zoffset = zoffset -0.2f;

public void PlayCards()内の
StartCoroutine(SolitaireDeal());の下に

Solitaire
SortDeckIntoTrips();
0
0
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0