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