bool CDBTRule::isBigger(const std::vector<int>& cards_per, std::vector<int>& cards_now) { if (cards_per.size() == 0) return true; if (!checkCards(cards_now) || cards_now.size() == 0) return false; auto per = getType(cards_per); auto now = getType(cards_now); //前一次最大或本次类型不对 if (now.first == type_unknow || per.second == 54) return false; if (cards_per.size() == 0) return true; if (isNormal(per.first) && isNormal(now.first)){ //必须类型数量一样 if (per.first == now.first && cards_per.size() == cards_now.size()) return now.second > per.second; return false; } if (!isNormal(per.first) && !isNormal(now.first)) { if ((per.first == type_boom && now.first == type_boom) || (per.first == type_atom && now.first == type_atom)){ //数量多的大 if (cards_per.size() == cards_now.size()) return now.second > per.second; return cards_now.size() > cards_per.size(); } if (per.first == type_atom && now.first == type_boom) return false; return true; } if (!isNormal(per.first) && isNormal(now.first)) return false; return true; }
void MainWindow::cardClicked(const QString &text) { QString *key = new QString(text.data()); nameMapper->value(*key)->setDisabled(true); if(cardsTurned == 0) { cardsTurned = 1; turnedCard1 = nameMapper->value(*key); } else if(cardsTurned == 1) { disableAllCards(); cardsTurned = 2; turnedCard2 = nameMapper->value(*key); QTimer::singleShot(2000, this, SLOT(checkCards())); progress->start(20); } }
int play(){ int pass=0; Boolean firstRound=FALSE; // true if first round if(ll==myNum) firstRound=TRUE; // use for "for loop" int i; // number of cards played int number = 0; // pattern code int pattern=0; //sync int temp; //for sync // current card played, no need to init char ccp[20]; // key value of card played int key=CUTOFF; //sync char card[3]; Boolean check; //checkPattern printf("Current Player: %d\n", PCS); while(!haveWinner()){ if(isCurrentPlayer()){ check=TRUE; do{ if(!check) printf("Your Inputs Are Illegal, Please Input Again\n"); check=FALSE; //input to ccp, check num here display(); printf("hey player, tell me the number of cards you want to play this round." "You can input 0 if you want to give up\n"); scanf(" %d", &number); for(i=0;i<number;i++) { if(!i) printf("please tell me the card you want to play this round. One by One please. \n"); else printf("please tell me the next card you want to play. \n"); scanf("%s", card); switch(card[0]){ case 'a': case 'A': ccp[i]=11; break; case '2': ccp[i]=12; break; case '3': ccp[i]=0; break; case '4': ccp[i]=1; break; case '5': ccp[i]=2; break; case '6': ccp[i]=3; break; case '7': ccp[i]=4; break; case '8': ccp[i]=5; break; case '9': ccp[i]=6; break; case '1': ccp[i]=7; break; case 'j': case 'J': ccp[i]=8; break; case 'q': case 'Q': ccp[i]=9; break; case 'k': case 'K': ccp[i]=10; break; case 'b': case 'B': ccp[i]=13; break; case 'r': case 'R': ccp[i]=14; break; } } if(number && checkCards(number, ccp)) check=checkPatternAndValue(&pattern, ccp, number, &key); printf("check: %d\nkey: %d\n", pattern, key); }while((number && !check) || (!number && firstRound)); if(!number){ sendchar(CUTOFF | 0x40); usleep(10000); } else{ if(firstRound) firstRound=!firstRound; sendchar(key | 0x40); usleep(1000); sendchar((pattern & 0x3f) | 0x40); usleep(1000); sendchar((pattern >> 6) | 0x40); usleep(1000); deleteCards(number, ccp); temp=sramread(CHNP+myNum-1); sramwrite(CHNP+myNum-1, temp-pattern/10); usleep(1000); sendchar(sramread(CHNP) | 0x40); usleep(1000); sendchar(sramread(CHNP+1) | 0x40); usleep(1000); sendchar(sramread(CHNP+2) | 0x40); usleep(1000); } } else{ recvchar(&temp); usleep(80); if(temp!=CUTOFF){ key=temp; recvchar(&pattern); //last 6 bits usleep(80); recvchar(&temp); //11-6 bits of pattern usleep(80); pattern+=temp*64; recvchar(&temp); usleep(80); sramwrite(CHNP, temp); recvchar(&temp); usleep(80); sramwrite(CHNP+1, temp); recvchar(&temp); usleep(80); sramwrite(CHNP+2, temp); } else{ pass++; if(pass==2){ pass=0; pattern=0; key=0; } } } if(pattern==42) multiplier*=2; temp=sramread(CHNP); printf("Pattern Is: %d\nKey Is: %d\nPlayer1 Num Remainds: %d\n", pattern, (key+3)%14+(key==11)+(key==12)+12*(key==13)+12*(key==14), temp); temp=sramread(CHNP+1); printf("Player2 Num Remainds: %d\n", temp); temp=sramread(CHNP+2); printf("Player3 Num Remainds: %d\n", temp); nextPlayer(); }