void Choice() { do { bool isLoop = true; do { switch (GetBestChoice(resultInfo.dealerIdx)) { case ChoiceKind.Hit: GetCardPlayer(); isLoop = (!player.GetCurrentHand.IsStopChoice && PreferHit(resultInfo.dealerIdx)); break; case ChoiceKind.Stand: isLoop = false; break; case ChoiceKind.DoubleDown: player.DoubleDown(); GetCardPlayer(); isLoop = false; break; case ChoiceKind.Split: AI_PlayerHand secondHand = player.Split(player.GetCurrentHand.IsDoubleAce); GetCardPlayer(); AI_Card secondCard = deck.Pop(); player.AddCCNumber(secondCard.cardCountingScore); secondHand.Push(secondCard, false); break; case ChoiceKind.Surrender: player.GetCurrentHand.AmountOfBetting = 0; player.GetCurrentHand.IsSurrender = true; isLoop = false; break; case ChoiceKind.NotDetermined: isLoop = false; break; } } while (isLoop && !player.GetCurrentHand.IsStopChoice); } while(player.UpdateAndCheckAllPossibleHand()); }
public virtual AI_Card Pop() { AI_Card popCard = cards[cards.Count - 1]; cards.RemoveAt(cards.Count - 1); return(popCard); }
void GetCardPlayer() { AI_Card newCard = deck.Pop(); player.AddCCNumber(newCard.cardCountingScore); player.GetCard(newCard); }
public void Discard(AI_Card card) { //if (discards.Contains(card)) //{ // Debug.Log("이미 카드가 존재한다 in Push() of Deck"); //} discards.Add(card); }
public AI_Card Pop() { int randIdx = Random.Range(0, cards.Count); AI_Card returnCard = cards[randIdx]; cards.RemoveAt(randIdx); return(returnCard); }
//____________________________________카드 처리 관련____________________________ public void GetCard(AI_Card card) { bool isFirstHand = false; // 카드 추가전에 계산되기 때문에 // 조건 수치를 2->1로 줄인다(origin=IsFirstHand) if (cards.Count <= 1) { isFirstHand = true; } Push(card, isFirstHand); }
public void GetCard(AI_Card card) { AI_PlayerHand hand = GetCurrentHand; bool isFirstHand = false; // 카드 추가전에 계산되기 때문에 // 조건 수치를 2->1로 줄인다(origin=IsFirstHand) if (hands.Count == 1 && hands[0].GetCardCount <= 1) { isFirstHand = true; } hand.Push(card, isFirstHand); // (in)카드 하이라이트 + }
void GetCardDealer(bool isHold = false) { AI_Card newCard = deck.Pop(); // Get Card // if (isHold) { holeCardCountingNumber = newCard.cardCountingScore; } else { player.AddCCNumber(newCard.cardCountingScore); } dealer.GetCard(newCard); }
void InitCard() { for (int j = 0; j < numOfDeck; ++j) { int cardNum = 0; // 변경용 조건문이 대입문보다 앞에 있기때문에 0부터 시작 for (int i = 0; i < 52; ++i) { GameObject newObj = (GameObject)Instantiate(card, Vector3.zero, Quaternion.identity); AI_Card newCard = newObj.AddComponent <AI_Card>(); if (i % 4 == 0 && cardNum < 10) { ++cardNum; } newCard.Init(cardNum); cards.Add(newCard); } } }
public AI_PlayerHand Split(bool isAce) { AI_Card card = GetCurrentHand.Pop(); float bet = GetCurrentHand.AmountOfBetting; AI_PlayerHand splitHand = AddHand(); if (isAce) { GetCurrentHand.SetSplitAce(); splitHand.SetSplitAce(); } // 그 핸드에 정보 전달 splitHand.Push(card, false); splitHand.Betting(); return(splitHand); }
public virtual void Push(AI_Card card, bool isFirstHand) { cards.Add(card); CheckValue(isFirstHand); }
public void Push(AI_Card card) { cards.Add(card); }
void Choice() { ChoiceKind curChoice = ChoiceKind.NotDetermined; do { if (IsFirstChoiceNotDetermined()) { ReadOnlyCollection <ChoiceKind> possibleOptions = GetPossibleOptions(); curChoice = possibleOptions[Random.Range(0, possibleOptions.Count)]; resultInfo.firstChoice = curChoice; } else { curChoice = GetBestChoice(resultInfo.dealerIdx); } while (true) { bool loop = true; switch (curChoice) { case ChoiceKind.Hit: GetCardPlayer(); loop = (!player.GetCurrentHand.IsStopChoice && PreferHit(resultInfo.dealerIdx)); break; case ChoiceKind.Stand: loop = false; break; case ChoiceKind.DoubleDown: player.DoubleDown(); int preCount = player.CCNumber; int preValue = (int)player.GetCurrentHand.value; bool isPreSoft = player.GetCurrentHand.IsSoft; GetCardPlayer(); if (preValue >= 12 && isPreSoft == false) { if (player.GetCurrentHand.value == HAND_VALUE.BURST_PLAYER) { DB_Manager.Instance.AddBurstInfo(preCount, preValue); } else { DB_Manager.Instance.AddNotBurstInfo(preCount, preValue); } } loop = false; break; case ChoiceKind.Split: AI_PlayerHand secondHand = null; AI_Card secondCard = deck.Pop(); player.AddCCNumber(secondCard.cardCountingScore); secondHand = player.Split(player.GetCurrentHand.IsDoubleAce); GetCardPlayer(); secondHand.Push(secondCard, false); curChoice = GetBestChoice(resultInfo.dealerIdx); loop = (curChoice != ChoiceKind.Stand); break; case ChoiceKind.Surrender: player.GetCurrentHand.AmountOfBetting = 0; player.GetCurrentHand.IsSurrender = true; loop = false; break; case ChoiceKind.NotDetermined: Debug.LogError("Stand is base choice, so whatever else should be determined in this stage"); loop = false; break; } if (loop == false) { break; } } } while (player.UpdateAndCheckAllPossibleHand()); }
public override void Push(AI_Card card, bool isFirstHand) { base.Push(card, isFirstHand); // 부모설정, 오프셋위치, 리스트push, 값 업데이트 UpdateChoices(isFirstHand); // 가능 초이스 업데이트 }