#import "cBlackJack.h"
@implementation cBlackJack
- (id)init
{
self = [super init];
if (self) {
NSString *cardPic[CARDPICTURE_MAX] = { @"♠", @"♦", @"♥", @"♣" };
NSString *cardNum[CARDNUMBER_MAX] = { @"A", @"2", @"3", @"4", @"5", @"6", @"7", @"8", @"9", @"10", @"J", @"Q", @"K" };
for( int x = 0 ; x < CARDNUMBER_MAX ; x++)
{
for( int y = 0 ; y < CARDPICTURE_MAX ; y++)
{
Card[(y*CARDNUMBER_MAX)+x].cardIndex = (y*CARDNUMBER_MAX)+x;
Card[(y*CARDNUMBER_MAX)+x].cardPicture = (char *) cardPic[y];
Card[(y*CARDNUMBER_MAX)+x].cardNumber = (char *) cardNum[x];
Card[(y*CARDNUMBER_MAX)+x].cardSwitch = 0;
}
}
for( int i = 0 ; i < CARD_MAX ; i++ )
{
Card[i].cardPower = (i % 13) + 1;
if(Card[i].cardPower >= 10) Card[i].cardPower = 10;
}
for( int i = 0 ; i < CARD_MAX ; i++ ) tempCardShuffleData[i] = 0;
GameTurn = 0; //CARDBASE_MAX;
GameClear = -1;
CardOpen = -1;
CardPowerChangePlayer = 0;
CardPowerChangeTakeDealer = 0;
PlayerCardSum = 0;
DealerCardSum = 0;
tempPlayerCardSum = 0;
tempDealerCardSum = 0;
PlayerCard = (int *)malloc(sizeof(int)*(CARD_MAX));
DealerCard = (int *)malloc(sizeof(int)*(CARD_MAX));
}
return self;
}
-(void)_GameTurn
{
GameTurn++;
}
-(void)_Loop
{
[self _CardShuffle];
while (GameTurn < CARDFIRST_SET)
{
[self _CardSharePlayer];
[self _GameTurn];
[self _CardShareDealer];
[self _GameTurn];
}
[self _CardPowerChangePlayer];
[self _CardPrintAllPlayer];
[self _CardPrintDealer];
while (CardOpen != 1) {
[self _CardPowerChangePlayer];
NSLog(@"Player Score : %d", PlayerCardSum);
if(PlayerCardSum > DEATHLINE * 2)
{
[self _Result];
break;
}
[self _CardTakePlayer];
[self _CardTakeDealer];
}
}
-(void)_CardShuffle
{
srand((unsigned)time(NULL));
int CardShuffleSwitch[CARD_MAX] = { 0 };
int CardShuffleRandom = 0;
int CardShuffleLoop = 0;
while(CardShuffleLoop < CARD_MAX)
{
CardShuffleRandom = rand()%CARD_MAX;
if(CardShuffleSwitch[CardShuffleRandom] == 0)
{
CardShuffleSwitch[CardShuffleRandom] = 1;
tempCardShuffleData[CardShuffleLoop] = CardShuffleRandom;
CardShuffleLoop++;
}
}
}
-(void)_CardSharePlayer
{
if(Card[tempCardShuffleData[GameTurn]].cardSwitch == 0)
{
PlayerCard[GameTurn] = Card[tempCardShuffleData[GameTurn]].cardIndex;
Card[tempCardShuffleData[GameTurn]].cardSwitch = PLAYER_NUMBER;
}
}
-(void)_CardShareDealer
{
if(Card[tempCardShuffleData[GameTurn]].cardSwitch == 0)
{
DealerCard[GameTurn] = Card[tempCardShuffleData[GameTurn]].cardIndex;
Card[tempCardShuffleData[GameTurn]].cardSwitch = DEALER_NUMBER;
}
}
-(void)_CardPrintPlayer
{
if(Card[tempCardShuffleData[GameTurn]].cardSwitch == PLAYER_NUMBER)
NSLog(@"Player Card[%@%@]", Card[PlayerCard[GameTurn]].cardPicture, Card[PlayerCard[GameTurn]].cardNumber);
}
-(void)_CardPrintAllPlayer
{
for( int i = 0 ; i < CARD_MAX ; i++ )
{
if(Card[tempCardShuffleData[i]].cardSwitch == PLAYER_NUMBER)
NSLog(@"Player Card[%@%@]", Card[PlayerCard[i]].cardPicture, Card[PlayerCard[i]].cardNumber);
}
}
-(void)_CardPrintDealer
{
NSLog(@"Dealer Open Card[%@%@]", Card[DealerCard[DEALEROPENCARD_SET]].cardPicture, Card[DealerCard[DEALEROPENCARD_SET]].cardNumber);
}
-(void)_CardPrintAllDealer
{
for( int i = 0 ; i < CARD_MAX ; i++ )
{
if(Card[tempCardShuffleData[i]].cardSwitch == DEALER_NUMBER)
NSLog(@"Dealer Card[%@%@]", Card[DealerCard[i]].cardPicture, Card[DealerCard[i]].cardNumber);
}
}
-(void)_CardTakePlayer
{
if(CardOpen == -1)
{
NSLog(@"[카드받기(1)] [카드보기(2)] [승리선언(7)] : ");
scanf("%d", &CardTakePlayer);
switch (CardTakePlayer)
{
case 1:
[self _CardSharePlayer];
[self _CardPrintPlayer];
[self _GameTurn];
[self _CardPowerChangePlayer];
break;
case 2:
[self _CardPowerChangePlayer];
NSLog(@"================");
[self _CardPrintAllPlayer];
NSLog(@"================");
[self _CardPrintDealer];
NSLog(@"================");
[self _CardTakePlayer];
break;
case 7:
CardOpen = 1;
break;
default:
[self _CardTakePlayer];
break;
}
}
}
-(void)_CardTakeDealer
{
NSLog(@"딜러가 카드를 받을지 결정 합니다.");
NSLog(@"생각중...");
CardTakeDealer = rand()%2;
[self _CardPowerChangeDealer];
[self _CardSumDealer];
if(DealerCardSum <= DEALERCARDNUMBER_MAX)
{
for( int i = GameTurn ; i < GameTurn + 1 ; i++)
{
DealerCard[i] = Card[tempCardShuffleData[i]].cardIndex;
Card[tempCardShuffleData[i]].cardSwitch = DEALER_NUMBER;
//NSLog(@"%d 번째 카드 - DealerCard[%@%@]", GameTurn+1, Card[DealerCard[i]].cardPicture, Card[DealerCard[i]].cardNumber);
}
NSLog(@"딜러가 카드를 받았습니다.");
[self _GameTurn];
if(CardOpen == 1)
[self _CardTakeDealer];
}
else
NSLog(@"딜러가 카드를 받지 않았습니다.");
if(DealerCardSum > DEALERCARDNUMBER_MAX && CardOpen == 1 && GameClear == -1)
[self _Result];
}
-(void)_CardSumPlayer
{
PlayerCardSum = 0;
for( int i = 0 ; i < GameTurn; i++)
if(Card[tempCardShuffleData[i]].cardSwitch == PLAYER_NUMBER)
PlayerCardSum += Card[tempCardShuffleData[i]].cardPower;
}
-(void)_CardSumDealer
{
DealerCardSum = 0;
for( int i = 0 ; i < GameTurn; i++)
if(Card[tempCardShuffleData[i]].cardSwitch == DEALER_NUMBER)
DealerCardSum += Card[tempCardShuffleData[i]].cardPower;
}
-(void)_CardPowerChangePlayer
{
if(PlayerCardSum <= BLACKJACK)
{
for( int i = 0 ; i < GameTurn; i++)
if(Card[tempCardShuffleData[i]].cardSwitch == PLAYER_NUMBER)
if(Card[tempCardShuffleData[i]].cardPower == 1)
Card[tempCardShuffleData[i]].cardPower = 11;
}
else if (PlayerCardSum > BLACKJACK)
{
for( int i = 0 ; i < GameTurn ; i++)
if(Card[tempCardShuffleData[i]].cardSwitch == PLAYER_NUMBER)
if(Card[tempCardShuffleData[i]].cardPower == 11)
Card[tempCardShuffleData[i]].cardPower = 1;
}
[self _CardSumPlayer];
}
-(void)_CardPowerChangeDealer
{
if(DealerCardSum <= BLACKJACK)
{
for( int i = 0 ; i < GameTurn; i++ )
if(Card[tempCardShuffleData[i]].cardSwitch == DEALER_NUMBER)
if(Card[tempCardShuffleData[i]].cardPower == 1)
Card[tempCardShuffleData[i]].cardPower = 11;
}
else if (DealerCardSum > BLACKJACK)
{
for( int i = 0 ; i < GameTurn ; i++ )
if(Card[tempCardShuffleData[i]].cardSwitch == DEALER_NUMBER)
if(Card[tempCardShuffleData[i]].cardPower == 11)
Card[tempCardShuffleData[i]].cardPower = 1;
}
[self _CardSumDealer];
}
-(void)_Result
{
char *tempJack = "Black Jack!";
int tempCardCountPlayer = 0;
int tempCardCountDealer = 0;
NSLog(@"================");
[self _CardPrintAllPlayer];
NSLog(@"================");
[self _CardPrintAllDealer];
NSLog(@"================");
if((BLACKJACK - PlayerCardSum) < (BLACKJACK - DealerCardSum))
GameClear = 0;
else if((BLACKJACK - PlayerCardSum) > (BLACKJACK - DealerCardSum))
GameClear = 1;
else if((BLACKJACK - PlayerCardSum) == (BLACKJACK - DealerCardSum))
{
for( int i = 0 ; i < GameTurn; i++ )
if(Card[tempCardShuffleData[i]].cardSwitch == PLAYER_NUMBER)
tempCardCountPlayer++;
for( int i = 0 ; i < GameTurn; i++ )
if(Card[tempCardShuffleData[i]].cardSwitch == DEALER_NUMBER)
tempCardCountDealer++;
if(tempCardCountPlayer >= tempCardCountDealer)
GameClear = 0;
else if(tempCardCountPlayer < tempCardCountDealer)
GameClear = 1;
}
if(ABS(BLACKJACK - PlayerCardSum) > ABS(BLACKJACK - DealerCardSum))
GameClear = 0;
else if(ABS(BLACKJACK - PlayerCardSum) < ABS(BLACKJACK - DealerCardSum))
GameClear = 1;
if(PlayerCardSum >= DEATHLINE)
{
for( int i = 0 ; i < GameTurn; i++ )
if(Card[tempCardShuffleData[i]].cardSwitch == PLAYER_NUMBER)
tempCardCountPlayer++;
for( int i = 0 ; i < GameTurn; i++ )
if(Card[tempCardShuffleData[i]].cardSwitch == DEALER_NUMBER)
tempCardCountDealer++;
if(tempCardCountPlayer < tempCardCountDealer)
GameClear = 0;
else if(tempCardCountPlayer >= tempCardCountDealer)
GameClear = 1;
}
if(PlayerCardSum == BLACKJACK)
NSLog(@"%s Player Win", tempJack);
// else
// NSLog(@"Player Score : %d", PlayerCardSum);
if(DealerCardSum == BLACKJACK)
NSLog(@"%s Dealer Win", tempJack);
// else
// NSLog(@"Dealer Score : %d", DealerCardSum);
switch (GameClear) {
case 0:
NSLog(@"Win!");
break;
case 1:
NSLog(@"Lose!");
break;
default:
break;
}
}
- (void)dealloc
{
[super dealloc];
}
@end
'C.O.M.P.U.T.E.R > O.b.j.e.c.t.i.v.e.-.C' 카테고리의 다른 글
[0] |Objective-C| 블랙잭 프로그램 .h 파일 (1/2) (0) | 2011.08.28 |
---|---|
[0] |Objective-C| 숫자야구게임 프로그램 .m 파일 (2/2) (0) | 2011.08.28 |
[0] |Objective-C| 숫자야구게임 프로그램 .h 파일 (1/2) (0) | 2011.08.28 |