예제 #1
0
int Table::addAt(shared_ptr<AnimalCard> card, int row, int col, bool force) {

	if (!force) {
		//Transformation des nombres de row/col de l'affichage de table en nombre actuel de table
		row = START_LOCATION + (row - startPrintRow);
		col = START_LOCATION + (col - startPrintCol);
	}

	if (!isInbounds(row, col)) {
		IllegalPlacement ip("Position de carte n'est pas sur la table 103x103.");
		throw ip;
	} else if (!isLegalPlacement(row, col, topMax, botMax, leftMax, rightMax)) {
		IllegalPlacement ip("Position de la carte est invalide sur la table.");
		throw ip;
	} else if (cardsOnTable[row][col]->isPlayed()){
		IllegalPlacement ip("Position de la table est deja occupee.");
		throw ip;
	} else if (force) { // Option pour forcer le placement de la carte - utiliser lors du loading de joute
		cardsOnTable[row][col] = card;
		cardsOnTable[row][col]->play();
		return 1;
	} else {
		int numConnections = numberOfConnections(card, row, col);
		if (numConnections > 0) {
			cardsOnTable[row][col] = card;
			cardsOnTable[row][col]->play();
			//Recalcule l'espace d'affichage
			if (row == topMax && topMax != 0){topMax--;startPrintRow++;}
			if (row == botMax && botMax != MAX_SIZE_TABLE-1){botMax++;}
			if (col == leftMax && leftMax != 0){leftMax--;startPrintCol++;}
			if (col == rightMax && rightMax != MAX_SIZE_TABLE-1){rightMax++;}
			printTableLength = botMax - topMax + 1;
			printTableWidth = rightMax - leftMax + 1;
			numCardsOnTable++;
			return numConnections;
		} else {
			IllegalPlacement ip("Carte ne se connecte pas a aucune autre carte.");
			throw ip;
		}
	}
}
예제 #2
0
//-----------------------------------------------------------------------------------------------
// generates a description for driver file
//-----------------------------------------------------------------------------------------------
QString InjectionWell::description() const
{
    QString str("START WELL\n");
    str.append(" NAME " + name() + "\n");
    str.append(" TYPE I \n");
    str.append(" GROUP " + group() + "\n");
    str.append(" BHPLIMIT " + QString::number(bhpLimit()) + "\n");
    str.append(" BHPINJ ");
    if(bhpInj() == WellControl::QWAT) str.append("WATER\n");
    else if(bhpInj() == WellControl::QOIL) str.append("OIL\n");
    else if(bhpInj() == WellControl::QGAS) str.append("GAS\n");


    if(hasInstallTime())
    {
        str.append(" INSTALLTIME " + QString::number(installTime()->value()) + " " + QString::number(installTime()->max()) + " " + QString::number(installTime()->min()) + "\n");
    }

    if(hasCost())
    {
        str.append(" COST " + QString::number(cost()->constantCost()) + " " + QString::number(cost()->fractionCost()) + " " + QString::number(cost()->capacityCost()) + "\n");
    }

    if(numberOfConstantConnections() > 0)
    {
        str.append(" START CONNECTIONS\n");
        for(int i = 0; i < numberOfConnections(); ++i)
        {
            WellConnection *wc = constantConnection(i);
            if(wc->cell() >= 0) str.append("  " + QString::number(wc->cell()) + " " + QString::number(wc->wellIndex()) + "\n");
            else str.append("  " + QString::number(wc->i()) + " " +
                            QString::number(wc->j()) + " " +
                            QString::number(wc->k1()) + " " +
                            QString::number(wc->k2()) + " " +
                            QString::number(wc->wellIndex()) + "\n");

        }

        str.append(" END CONNECTIONS\n\n");

    }

    if(numberOfVariableConnections() > 0)
    {
        str.append(" START VARCONNECTIONS\n");

        for(int i = 0; i < numberOfVariableConnections(); ++i)
        {
            WellConnectionVariable *wcv = variableConnection(i);

            str.append("  " + QString::number(wcv->iVariable()->value()) + " " +
                       QString::number(wcv->iVariable()->max()) + " " +
                       QString::number(wcv->iVariable()->min()) + " " +
                       QString::number(wcv->jVariable()->value()) + " " +
                       QString::number(wcv->jVariable()->max()) + " " +
                       QString::number(wcv->jVariable()->min()) + " " +
                       QString::number(wcv->wellConnection()->k1()) + " " +
                       QString::number(wcv->wellConnection()->k2()) + " " +
                       QString::number(wcv->wellConnection()->wellIndex()) + "\n");
        }

        str.append(" END VARCONNECTIONS\n");
    }


    str.append(" START SCHEDULE\n");

    for(int i = 0; i < numberOfControls(); ++i) str.append(control(i)->description());

    str.append(" END SCHEDULE\n\n");

    str.append("END WELL\n\n");
    return str;

}