Exemple #1
0
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;
}
Exemple #2
0
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);
    }
}
Exemple #3
0
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();
	}