Example #1
0
//--------------------------------------------------------------
void testApp::setup() {

    /// test
    {
        size_t a;

    }

    /// original data
    vector< unsigned char > src;
    for ( int i=0; i<10000; ++i )
    {
        src.push_back( i%256 );
    }

    /// compress test
    {
        /// compress
        vector< unsigned char > result = ofxZip::compress( src );

        /// uncompress
        vector< unsigned char > uncompressed = ofxZip::uncompress( result );

        bool verified = verifyCheck( src, uncompressed );

        cout << "src.size(): " << src.size() << endl;
        cout << "result.size(): " << result.size() << endl;
        cout << "uncompressed.size(): " << uncompressed.size() << endl;

        if ( verified ) cout << "** verified! **" << endl;

        cout << endl;

    }

    /// ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
    /// compress test with level
    for ( int level=1; level<=9; ++level )
    {
        /// compress
        vector< unsigned char > result = ofxZip::compress( src, level );

        /// uncompress
        vector< unsigned char > uncompressed = ofxZip::uncompress( result );

        bool verified = verifyCheck( src, uncompressed );

        cout << "level: " << level << endl;
        cout << "src.size(): " << src.size() << endl;
        cout << "result.size(): " << result.size() << endl;
        cout << "uncompressed.size(): " << uncompressed.size() << endl;

        if ( verified ) cout << "** verified! **" << endl;

        cout << endl;
    }

}
int Coin::updateKnight() {

	int nrange = 0;
	int tempCoinId;
	int curKnightX;										
	int curKnightY;				//Stores current position of Knight.
                                                                                         
	int colorKnight;			//Identifies whether Knight is black or white.	

	int coinIdKnight;
	
	Movement tempMove;
	
	/*Get the color of Knight.*/							
	colorKnight = getColour();

	/*Get the position of Knight.*/
	curPos.getXY(curKnightX,curKnightY);

		
	tempMove.coinId=coinId;
	tempMove.initPos=curPos;

	if(colorKnight==1) {
		/*White Knight*/
		
		for(int i=-1;i<=1;i=i+2) {
			for(int j=1;j<=2;j++) {
				
				if((curKnightY + i*j)<8 && (curKnightY +i*j)>=0 && (curKnightX + i*(3-j))>=0 && (curKnightX + i*(3-j))<8) {
					tempCoinId = board[curKnightY + i*j][curKnightX + i*(3-j)].getCoinId();
					tempMove.captureCoinId=tempCoinId;
					finalPos.setXY(curKnightX+i*(3-j),curKnightY+i*j);
					tempMove.finalPos=finalPos;
					/*Square contains either a black coin or it is empty.*/
					if(tempCoinId >=EMPTY && tempCoinId <=BPAWN8 && verifyCheck(tempMove)==1) {
						/*Then store it as a valid range.*/
						coinRange[nrange].copyObject(board[curKnightY + i*j][curKnightX + i*(3-j)]);
						nrange++;
					}
				
				}
				
				if((curKnightY +i*j)<8 && (curKnightY +i*j)>=0 && (curKnightX + -i*(3-j))>=0 && (curKnightX + -i*(3-j))<8) {
					tempCoinId = board[curKnightY + i*j][curKnightX + -i*(3-j)].getCoinId();
					tempMove.captureCoinId=tempCoinId;
					finalPos.setXY(curKnightX-i*(3-j),curKnightY+i*j);
					tempMove.finalPos=finalPos;
					/*Square contains either a black coin or it is empty.*/
					if(tempCoinId >=EMPTY && tempCoinId <=BPAWN8 && verifyCheck(tempMove)==1) {
						/*Then store it as a valid range.*/
						coinRange[nrange].copyObject(board[curKnightY + i*j][curKnightX + -i*(3-j)]);
						nrange++;
					}							
				}
			}
		} 
	} else {
		//Black Knight
		for(int i=-1;i<=1;i=i+2) {
			for(int j=1;j<=2;j++) {
				if((curKnightY +i*j)<8 && (curKnightY +i*j)>=0 && (curKnightX + i*(3-j))>=0 && (curKnightX + i*(3-j))<8) {
					tempCoinId = board[curKnightY + i*j][curKnightX + i*(3-j)].getCoinId();
					tempMove.captureCoinId=tempCoinId;
					finalPos.setXY(curKnightX+i*(3-j),curKnightY+i*j);
					tempMove.finalPos=finalPos;
					/*Square contains either a black coin or it is empty.*/
					if(((tempCoinId >=WPAWN1 && tempCoinId <=RWROOK)||tempCoinId == EMPTY) && verifyCheck(tempMove)==1) {
						/*Then store it as a valid range.*/
						coinRange[nrange].copyObject(board[curKnightY + i*j][curKnightX + i*(3-j)]);
						nrange++;
					}
				}
				
				if((curKnightY +i*j)<8 && (curKnightY +i*j)>=0 && (curKnightX + -i*(3-j))>=0 && (curKnightX + -i*(3-j))<8) {
					tempCoinId = board[curKnightY + i*j][curKnightX + -i*(3-j)].getCoinId();
					tempMove.captureCoinId=tempCoinId;
					finalPos.setXY(curKnightX+i*(3-j),curKnightY+-i*j);
					tempMove.finalPos=finalPos;
					/*Square contains either a black coin or it is empty.*/
					if(((tempCoinId >=WPAWN1 && tempCoinId <=RWROOK)||tempCoinId == EMPTY) && verifyCheck(tempMove)==1) {
						/*Then store it as a valid range.*/
						coinRange[nrange].copyObject(board[curKnightY + i*j][curKnightX + -i*(3-j)]);
						nrange++;
					}							
				}
			}
		}
	}
}
int Coin::updateRook () {

Movement tempMove;
nRange = 0;
int i=1;
int tempCoinId;
int curRookX;
int curRookY;				//Stores current position of Rook.

int colorRook;			//Identifies whether Rook is black or white.

int coinIdRook;

/*Get the color of Rook.*/

/*Get the position of Rook.*/
curPos.getXY(curRookX,curRookY);


tempMove.coinId=coinId;
tempMove.initPos=curPos;

/*Working on the white Rook*/
if(coinId==LWROOK || coinId == RWROOK) {

    i=1;
    while((curRookY + i)<8) {

        tempCoinId=board[curRookY + i][curRookX].getCoinId();

        tempMove.captureCoinId=tempCoinId;
        finalPos.setXY(curRookX,curRookY+i);
        tempMove.finalPos=finalPos;

        if(tempCoinId >=EMPTY && tempCoinId <= BPAWN8) {

            if(verifyCheck(tempMove)==1) {
                coinRange[nRange].copyObject(board[curRookY + i][curRookX]);
                nRange++;
            }
            if(tempCoinId!=EMPTY) {
                break;
            }
        }
        else {
            break;
        }
        i++;
    }


    i=1;
    while((curRookY - i)>=0) {

        tempCoinId=board[curRookY - i][curRookX].getCoinId();

        tempMove.captureCoinId=tempCoinId;
        finalPos.setXY(curRookX,curRookY-i);
        tempMove.finalPos=finalPos;

        if(tempCoinId >=EMPTY && tempCoinId <=BPAWN8) {

            if(verifyCheck(tempMove)==1) {
                coinRange[nRange].copyObject(board[curRookY - i][curRookX]);
                nRange++;
            }
            if(tempCoinId!=EMPTY) {
                break;
            }
        }
        else {
            break;
        }
        i++;
    }


    i=1;
    while((curRookX + i)<8) {

        tempCoinId=board[curRookY][curRookX + i].getCoinId();

        tempMove.captureCoinId=tempCoinId;
        finalPos.setXY(curRookX+i,curRookY);
        tempMove.finalPos=finalPos;

        if(tempCoinId >=EMPTY && tempCoinId <=BPAWN8) {

            if(verifyCheck(tempMove)==1) {
                coinRange[nRange].copyObject(board[curRookY][curRookX + i]);
                nRange++;
            }
            if(tempCoinId!=EMPTY) {
                break;
            }
        }
        else {
            break;
        }
        i++;
    }


    i=1;
    while((curRookX - i)>=0) {

        tempCoinId=board[curRookY][curRookX - i].getCoinId();

        tempMove.captureCoinId=tempCoinId;
        finalPos.setXY(curRookX-i,curRookY);
        tempMove.finalPos=finalPos;

        if(tempCoinId >=EMPTY && tempCoinId <=BPAWN8) {
            if(verifyCheck(tempMove)==1) {
                coinRange[nRange].copyObject(board[curRookY][curRookX - i]);
                nRange++;
            }
            if(tempCoinId!=EMPTY) {
                break;
            }
        }
        else {
            break;
        }
        i++;
    }

} else {

    i=1;
    while((curRookY + i)<8) {

        tempCoinId=board[curRookY + i][curRookX].getCoinId();

        tempMove.captureCoinId=tempCoinId;
        finalPos.setXY(curRookX,curRookY+i);
        tempMove.finalPos=finalPos;

        if(tempCoinId >=WPAWN1 && tempCoinId <=RWROOK || tempCoinId== EMPTY) {

            if(verifyCheck(tempMove)==1) {
                coinRange[nRange].copyObject(board[curRookY + i][curRookX]);
                nRange++;
            }
            if(tempCoinId!=EMPTY) {
                break;
            }
        }
        else {
            break;
        }
        i++;
    }


    i=1;
    while((curRookY - i)>=0) {

        tempCoinId=board[curRookY - i][curRookX].getCoinId();

        tempMove.captureCoinId=tempCoinId;
        finalPos.setXY(curRookX,curRookY-i);
        tempMove.finalPos=finalPos;

        if(tempCoinId >=WPAWN1 && tempCoinId <=RWROOK  || tempCoinId == EMPTY) {

            if(verifyCheck(tempMove)==1) {
                coinRange[nRange].copyObject(board[curRookY - i][curRookX]);
                nRange++;
            }
            if(tempCoinId!=EMPTY) {
                break;
            }
        }
        else {
            break;
        }
        i++;
    }


    i=1;
    while((curRookX + i)<8) {

        tempCoinId=board[curRookY][curRookX + i].getCoinId();

        tempMove.captureCoinId=tempCoinId;
        finalPos.setXY(curRookX+i,curRookY);
        tempMove.finalPos=finalPos;

        if(tempCoinId >=WPAWN1 && tempCoinId <=RWROOK || tempCoinId==EMPTY) {

            if(verifyCheck(tempMove)==1) {
                coinRange[nRange].copyObject(board[curRookY][curRookX + i]);
                nRange++;
            }
            if(tempCoinId!=EMPTY) {
                break;
            }
        }
        else {
            break;
        }
        i++;
    }


    i=1;
    while((curRookX - i)>=0) {

        tempCoinId=board[curRookY][curRookX - i].getCoinId();

        tempMove.captureCoinId=tempCoinId;
        finalPos.setXY(curRookX-i,curRookY);
        tempMove.finalPos=finalPos;

        if(tempCoinId >=WPAWN1 && tempCoinId <=RWROOK || tempCoinId == EMPTY) {
            if(verifyCheck(tempMove)==1) {
                coinRange[nRange].copyObject(board[curRookY][curRookX - i]);
                nRange++;
            }
            if(tempCoinId!=EMPTY) {
                break;
            }
        }
        else {
            break;
        }
        i++;
    }

}

return 1;
}