砸金花

                                                               main.com

 

#import <Foundation/Foundation.h>

#import "randomCard.h"

#define NSLog(FORMAT, ...) printf("%s\n", [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String])

int main(int argc, const char * argv[]) {

    @autoreleasepool {

        /**9砸金花游戏

         编写程序模拟砸金花的游戏,程序开始时要求用户输入堵住,并在一副牌中随机发两手牌,每手牌三张,然后比较这两幅牌大小,若A比B大,则用户赢得堵住,反之则输掉堵住。

         比赛规则:

         1.三条》同花顺》同花》顺子》对子》三张

         2.处于同一级别的两手牌,比较最大的一张牌的大小

         3.若两手牌都是对子,则比较成对的那张牌的大小

         */

        

        NSInteger moneyCount=100000;

        NSInteger money=0;

        int flag=1;

        while (flag){

            while (1) {

                NSLog(@"现有金额:%ld",moneyCount);

                NSLog(@"请下注:");

                scanf("%ld",&money);

                if (moneyCount>=money) {

                    break;

                }

                NSLog(@"没有这么多钱啦");

            }

            

            NSSet *card =[randomCard ranCard];

            NSArray *cardArray=[card allObjects];

            

            NSMutableArray *my1=[[NSMutableArray alloc]init];

            NSMutableArray *your1=[[NSMutableArray alloc]init];

            

            for (int i=0; i<6; i++) {

                if (i%2==0) [my1 addObject:cardArray[i]];

                else [your1 addObject:cardArray[i]];

            }

            

            NSArray *my =[my1 sortedArrayUsingSelector:@selector(compare:)];

            NSArray *your =[your1 sortedArrayUsingSelector:@selector(compare:)];

            

            

            //            NSLog(@"%@ %@",my,your);

            

            NSNumber *res=[randomCard judgeWhoWin:my and:your];

            

            if ([res compare:@1]==0) {

                moneyCount+=money;

                NSLog(@"你赢了 增加金额%ld   现有金额%ld",money,moneyCount);

            }

            

            else if ([res compare:@-1]==0) {

                moneyCount-=money;

                NSLog(@"你输了 扣除金额%ld   现有金额%ld",money,moneyCount);

            }

            

            if(moneyCount==0){NSLog(@"没钱了 再见~?"); flag=0;}

            

            while (flag) {

                NSLog(@"是否继续? 1 继续/其他 不继续");

                scanf("%d",&flag);

                if (flag==1)

                    break;

                else{

                    flag=0;

                    break;

                }

            }

        }

    }

    return 0;

}

                                       randomCard.h

#import <Foundation/Foundation.h>

 

@interface randomCard : NSObject

+(NSSet*)ranCard;

+(NSNumber*)judgeWhoWin:(NSArray*)arr1 and:(NSArray*)arr2;

+(NSString*)printCard:(NSArray*)A;

@end

 

                   randomCard.m

#import "randomCard.h"

 

@implementation randomCard

+(NSSet*)ranCard{

    NSMutableSet *card=[[NSMutableSet alloc]init];

    //    int i=0;

    while ([card count]<6){

        [card addObject:@(arc4random_uniform(52))];

    }

    //    NSLog(@"@",card);

    return card;

}

+(NSNumber*)judgeWhoWin:(NSArray*)arr1 and:(NSArray*)arr2{

    

    NSLog(@"玩家:%@",[randomCard printCard:arr1]);

    NSLog(@"电脑:%@",[randomCard printCard:arr2]);

    int levelA=1;

    int levelB=1;

    int x = 0,y=0,xOther=0,yOther=0;

    //    NSLog(@"%d %d %d",[arr1[0] intValue]/4,[arr1[1] intValue]/4,[arr1[2] intValue]/4);

    //3张

    if ([arr1[0] intValue]/4==[arr1[1] intValue]/4&&

        [arr1[1] intValue]/4==[arr1[2] intValue]/4)

        levelA=6;

    if ([arr2[0] intValue]/4==[arr2[1] intValue]/4&&

        [arr2[1] intValue]/4==[arr2[2] intValue]/4)

        levelB=6;

    

    //同花顺

    if ([arr1[0] intValue]+4==[arr1[1] intValue]&&

        [arr1[1] intValue]+4==[arr1[2] intValue])

        levelA=5;

    if ([arr2[0] intValue]+4==[arr2[1] intValue]&&

        [arr2[1] intValue]+4==[arr2[2] intValue])

        levelB=5;

    

    //同花

    

    if ([arr1[0] intValue]%4==[arr1[1] intValue]%4&&

        [arr1[1] intValue]%4==[arr1[2] intValue]%4&&

        [arr1[2] intValue]%4==[arr1[0] intValue]%4)

        levelA=4;

    if ([arr2[0] intValue]%4==[arr2[1] intValue]%4&&

        [arr2[1] intValue]%4==[arr2[2] intValue]%4&&

        [arr2[2] intValue]%4==[arr2[0] intValue]%4)

        levelB=4;

    

    //顺

    if ([arr1[0] intValue]/4+1==[arr1[1] intValue]/4&&

        [arr1[1] intValue]/4+1==[arr1[2] intValue]/4)

        levelA=3;

    if ([arr2[0] intValue]/4+1==[arr2[1] intValue]/4&&

        [arr2[1] intValue]/4+1==[arr2[2] intValue]/4)

        levelB=3;

    

    //对子

    if(levelA!=6)

        if([arr1[0] intValue]/4==[arr1[1] intValue]/4 ||

           [arr1[1] intValue]/4==[arr1[2] intValue]/4 ||

           [arr1[2] intValue]/4==[arr1[0] intValue]/4 )

            levelA=2;

    if(levelB!=6)

        if([arr2[0] intValue]/4==[arr2[1] intValue]/4 ||

           [arr2[1] intValue]/4==[arr2[2] intValue]/4 ||

           [arr2[2] intValue]/4==[arr2[0] intValue]/4 )

            levelB=2;

    NSLog(@"%d %d",levelA,levelB);

    if (levelA>levelB) return @1;

    else if (levelA<levelB) return @-1;

    else {

        //6

        if(levelA==6&&levelB==6){

            if([arr1[2] intValue]/4>[arr2[2] intValue]/4)

                return @1;

            else if([arr1[2] intValue]/4<[arr2[2] intValue]/4)

                return @-1;

        }

        //5

        else if(levelA==5&&levelB==5){

            if([arr1[2] intValue]/4>[arr2[2] intValue]/4)

                return @1;

            else if([arr1[2] intValue]/4<[arr2[2] intValue]/4)

                return @-1;

            else

                if([arr1[2] intValue]%4<[arr2[2] intValue]%4)

                    return @1;

                else

                    return @-1;

        }

        //4

        else if(levelA==4&&levelB==4){

            if([arr1[2] intValue]/4>[arr2[2] intValue]/4)

                return @1;

            else if([arr1[2] intValue]/4<[arr2[2] intValue]/4)

                return @-1;

            else

                if([arr1[2] intValue]%4<[arr2[2] intValue]%4)

                    return @1;

                else if([arr1[2] intValue]%4>[arr2[2] intValue]%4)

                    return @-1;

        }

        //3

        else if(levelA==3&&levelB==3){

            if([arr1[2] intValue]/4>[arr2[2] intValue]/4)

                return @1;

            else if([arr1[2] intValue]/4<[arr2[2] intValue]/4)

                return @-1;

            else{

                if([arr1[1] intValue]/4>[arr2[1] intValue]/4)

                    return @1;

                else if([arr1[1] intValue]/4<[arr2[1] intValue]/4)

                    return @-1;

                else{

                    if([arr1[0] intValue]/4>[arr2[0] intValue]/4)

                        return @1;

                    else if([arr1[0] intValue]/4<[arr2[0] intValue]/4)

                        return @-1;

                    else{

                        if ([arr1[2] intValue]%4 < [arr2[2] intValue]%4)

                            return @1;

                        else

                            return @-1;

                    }

                }

            }

        }

        //2

        else if(levelA==2&&levelB==2){

            if([arr1[0] intValue]/4==[arr1[1] intValue]/4){x=[arr1[0] intValue],xOther=[arr1[2] intValue];}

            if([arr1[1] intValue]/4==[arr1[2] intValue]/4){x=[arr1[1] intValue],xOther=[arr1[0] intValue];}

            if([arr1[2] intValue]/4==[arr1[0] intValue]/4){x=[arr1[2] intValue],xOther=[arr1[1] intValue];}

            

            if([arr2[0] intValue]/4==[arr2[1] intValue]/4){y=[arr2[0] intValue],yOther=[arr2[2] intValue];}

            if([arr2[1] intValue]/4==[arr2[2] intValue]/4){y=[arr2[1] intValue],yOther=[arr2[0] intValue];}

            if([arr2[2] intValue]/4==[arr2[0] intValue]/4){y=[arr2[2] intValue],yOther=[arr2[1] intValue];}

            

            if(x>y)

                return @1;

            else if(x<y)

                return @-1;

            else{

                if (xOther>yOther)

                    return @1;

                else if(xOther<yOther)

                    return @-1;

                else{

                    if(x%4<y%4)

                        return @1;

                    else

                        return @-1;

                }

            }

        }

        //1

        else {

            if([arr1[2] intValue]/4>[arr2[2] intValue]/4)

                return @1;

            else if([arr1[2] intValue]/4<[arr2[2] intValue]/4)

                return @-1;

            else{

                if([arr1[1] intValue]/4>[arr2[1] intValue]/4)

                    return @1;

                else if([arr1[1] intValue]/4<[arr2[1] intValue]/4)

                    return @-1;

                else{

                    if([arr1[0] intValue]/4>[arr2[0] intValue]/4)

                        return @1;

                    else if([arr1[0] intValue]/4<[arr2[0] intValue]/4)

                        return @-1;

                    else{

                        if ([arr1[2] intValue]%4 < [arr2[2] intValue]%4)

                            return @1;

                        else

                            return @-1;

                    }

                }

            }

        }

    }

    return @0;

}

 

+(NSString*)printCard:(NSArray*)A{

    NSMutableString *res=[[NSMutableString alloc]init];

    for (int i=0; i<3; i++) {

        int x=[A[i] intValue]%4;

        switch (x) {

            case 0:[res appendString:@"♥️"];break;

            case 1:[res appendString:@"♠️"];break;

            case 2:[res appendString:@"♦️"];break;

            case 3:[res appendString:@"♣️"];break;

        }

        [res appendString:[NSString stringWithFormat:@"%d",[A[i] intValue]/4+1]];

        [res appendString:@" "];

    }

    return res;

}

@end

 

转载于:https://www.cnblogs.com/j-h-t-123-n/p/5130915.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值