Пример #1
0
void compute_chest_cilk(task *taskX) {
  symbol_data *symbolData = taskX->symbolData;
  int rx = taskX->rx;
  int layer = taskX->layer;
  int res_power[4];
  mf(&symbolData->data->in_data[symbolData->slot][3][rx][symbolData->startSc], &symbolData->data->in_rs[symbolData->slot][symbolData->startSc][layer], symbolData->nmbSc, symbolData->layer_data[layer][rx], &symbolData->pow[rx]);
  ifft(symbolData->layer_data[layer][rx], symbolData->nmbSc, symbolData->data->fftw[symbolData->slot]);
  chest(symbolData->layer_data[layer][rx], symbolData->pow[rx], symbolData->nmbSc, symbolData->layer_data[layer][rx], &res_power[rx]);
  symbolData->R[layer][rx] = cmake(res_power[rx],0);
  fft(symbolData->layer_data[layer][rx], symbolData->nmbSc, symbolData->data->fftw[symbolData->slot]);
}
Пример #2
0
inline void compute_chest(task *task) {
  symbol_data *symbolData = task->symbolData;
  int rx = task->rx;
  int layer = task->layer;
  int res_power[4] = {0, 0, 0, 0};

  mf(&symbolData->data->in_data[symbolData->slot][3][rx][symbolData->startSc], &symbolData->data->in_rs[symbolData->slot][symbolData->startSc][layer], symbolData->nmbSc, symbolData->layer_data[layer][rx], &symbolData->pow[rx]);
  ifft(symbolData->layer_data[layer][rx], symbolData->nmbSc, symbolData->data->fftw[symbolData->slot]);
  chest(symbolData->layer_data[layer][rx], symbolData->pow[rx], symbolData->nmbSc, symbolData->layer_data[layer][rx], &res_power[rx]);
  /* Put power values in the R matrix */
  symbolData->R[layer][rx] = cmake(res_power[rx],0);
  fft(symbolData->layer_data[layer][rx], symbolData->nmbSc, symbolData->data->fftw[symbolData->slot]);
  /* Mark the task as computed */
  mem_fence();
  task->computed = true;
}
Пример #3
0
void camping(void)
{
	char i, encre, a;
	char *ptr;
	while(1) {
		text();cls();
		ptr = (char*)0x26a; *ptr = *ptr & 254; // Vire le curseur 
		ink(eencre[ville-1]);
		printFrame(15);
		printTitle(8,2, A_BGRED, "<  ++ CAMPEMENT ++  >", 21);
		printAtXY(9,6, "1. Inspecter un heros");
		printAtXY(9,8, "2. Visualiser l'equipe");
		if (ca>20 && ca<29)
			printAtXY(9,10, "3. Ouvrir un coffre");
		printAtXY(9,12,"4. Se reposer");
		printAtXY(13,16,"5. Lever le camp");
		// affichage équipe
		printTeam();
		a = get();
		switch(a) {
			case '1':
				inspect();
				break;
			case '2':
				printTeamFull();
				break;
			case '3':
				if (ca>20 && ca<29)
					chest();
				break;
			case '4':
				sleep();
				break;
			case '5':
				cls();
				printAtXY(8,10, "Bon voyage !");
				wait(150);
				return;
				break;
			default:
				ping();
				break;	
		}
		//attribAtXY(3,0,a);
	}
	
}
Пример #4
0
int main(int /*argc*/, char* /*argv*/[])
{
    srand(time(nullptr));

    Logger::get().setLevel(LogLevel::DEBUG);
    CLOG_DEBUG("starting crawler");

    Input input;
    Renderer r;

    auto& simulator = Simulator::get();
    auto& windowManager = WindowManager::get();

    WorldSharedPtr world(new World());
    // Possibility: 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096...
    world->generate(128);
    simulator.setWorld(world);

    HeroSharedPtr hero(new Hero());
    hero->setMapHp(100);
    hero->heal();
    hero->setName("Jacob");
    hero->equip(ItemFactory::create(ItemTemplates::PUNCH()));
    simulator.spawn(hero);

    CharacterTemplateSharedPtrs creatureTemplates;
    creatureTemplates.push_back(CharacterTemplates::DEMON());
    creatureTemplates.push_back(CharacterTemplates::VILLAGER());
    creatureTemplates.push_back(CharacterTemplates::KID());
    creatureTemplates.push_back(CharacterTemplates::BAT());

    int worldArea = world->getWidth() * world->getHeight();

    for (int i = 0; i < 10; i++)
    {
        ObjectSharedPtr room = RoomFactory::create(RoomTemplates::INN());
        simulator.spawn(room);
    }

    float creatureDensity = 100 / (float)(64*64);
    int numCreature = (int)(worldArea * creatureDensity);
    for (int i = 0; i < numCreature; i++)
    {
        int idx = Math::ceilRandom(creatureTemplates.size());
        ObjectSharedPtr creature(CharacterFactory::create(creatureTemplates[idx]));
        simulator.spawn(creature);
    }

    float chestDensity = 2 / (float)(64*64);
    int numChest = (int)(worldArea * chestDensity);
    for (int i = 0; i < numChest; i++)
    {
        ObjectSharedPtr chest(ChestFactory::create());
        simulator.spawn(chest);
    }

    Debugger& debugger = Debugger::get();

    Timer timer;
    while (!input.quit())
    {
        debugger.incFrameId();
        float dt = timer.elapsed();
        timer.reset();

        CDEBUG_LOW(debugger.tick(dt));

        simulator.tick(dt);
        windowManager.tick(dt);

        // control camera around hero
        int centerX = hero->getX() - r.getWidth() / 2;
        int centerY = hero->getY() - r.getHeight() / 2;
        /*
          int ox = r.getOriginX();
          int oy = r.getOriginY();
          int errX = (int)fabs((float)centerX - ox) - r.getWidth() / 6;
          int errY = (int)fabs((float)centerY - oy) - r.getHeight() / 6;
          if (errX > 0)
          {
          ox += (centerX > ox) ? errX : -errX;
          }

          if (errY > 0)
          {
          oy += (centerY > oy) ? errY : -errY;
          }

          r.setOrigin(ox, oy);
        */
        r.setOrigin(centerX, centerY, hero->getZ());

        r.clear();
        simulator.draw(&r);
        windowManager.draw(&r);
        CDEBUG_LOW(debugger.draw(&r));
        r.flip();

        int sleepTime = (int)(33333.3f - timer.elapsed() * 1000000.0f);
        if (sleepTime > 0)
        {
            usleep(sleepTime);
        }
    }

    return 0;
}
Пример #5
0
void MainWindow::on_btn_Roll_clicked()
{
    if(ui->btn_Roll->text() == "Next player")
    {
        NextPlayer();
        ui->btn_Roll->setText("Roll");
        return;
    }
    int oldPos = players[cPlayer]->getPos();
    if(spaces[oldPos]->is2XSpeed())
        ui->txt_Log->appendPlainText("2XSpeed, hurry up!!!!\nYour roll dive result is: " + QString::number(players[cPlayer]->rollDice(spaces[oldPos]->is2XSpeed())));
    else
        ui->txt_Log->appendPlainText("Your roll dive result is: " + QString::number(players[cPlayer]->rollDice(spaces[oldPos]->is2XSpeed())));
    int newPos = players[cPlayer]->getPos();
    if (newPos < oldPos) {
        ui->txt_Log->appendPlainText(players[cPlayer]->getPiece() + " complete new round, take new 350$");
        players[cPlayer]->setMoney(players[cPlayer]->getMoney() + 350);
    }
    if (spaces[newPos]->isChance())
    {
        chance(&cPlayer);
    }
    else if (spaces[newPos]->isChest())
    {
        chest(&cPlayer);
    }
    else if (spaces[newPos]->isPrison())
    {
        if (players[cPlayer]->getMoney() >= 50) {
            ui->txt_Log->appendPlainText(players[cPlayer]->getPiece() + " fall in prison, you have to pay 50$");
            players[cPlayer]->setMoney(players[cPlayer]->getMoney() - 50);
        } else {
            ui->txt_Log->appendPlainText(players[cPlayer]->getPiece() + " fall in prison, you lost the next turn");
            players[cPlayer]->setLostTurn(players[cPlayer]->getLostTurn() + 1);
        }
    }
    else if (!spaces[newPos]->isPark())
    {
        if (spaces[newPos]->isFree() && players[cPlayer]->getMoney() >= spaces[newPos]->getPrice())
        {
            if (QMessageBox::question(this,"Buy a park", "Would you like to buy " + spaces[newPos]->getName(),
                                      QMessageBox::Yes,QMessageBox::No) == QMessageBox::Yes)
            {
                spaces[newPos]->setOwner(players[cPlayer]->getPiece());
                players[cPlayer]->setMoney(
                        players[cPlayer]->getMoney()
                                - spaces[newPos]->getPrice());
                if (!spaces[newPos]->isUp() && players[cPlayer]->getMoney() >= spaces[newPos]->getPrice())
                {
                    if (QMessageBox::question(this,"Upgrade", "Would you like to upgrade " + spaces[newPos]->getName() +
                                              ", it'll double price and fees too",
                                              QMessageBox::Yes,QMessageBox::No) == QMessageBox::Yes)
                    {
                        players[cPlayer]->setMoney(
                                players[cPlayer]->getMoney()
                                        - spaces[newPos]->getPrice());
                        spaces[newPos]->upgrade();
                    }
                }
            }
        }
        else
        {
            if (spaces[newPos]->getOwner().compare( players[cPlayer]->getPiece()) == 0)
            {
                if (!spaces[newPos]->isUp()
                        && players[cPlayer]->getMoney()
                                >= spaces[newPos]->getPrice()) {
                    if (QMessageBox::question(this,"Upgrade", "Would you like to upgrade " + spaces[newPos]->getName() +
                                              ", it'll double price and fees too",
                                              QMessageBox::Yes,QMessageBox::No) == QMessageBox::Yes)
                    {
                        players[cPlayer]->setMoney(
                                players[cPlayer]->getMoney()
                                        - spaces[newPos]->getPrice());
                        spaces[newPos]->upgrade();
                    }
                }
                if (QMessageBox::question(this,"Sell", "Would you like to sell " + spaces[newPos]->getName() +
                                          ", to bank",
                                          QMessageBox::Yes,QMessageBox::No) == QMessageBox::Yes)
                {
                    players[cPlayer]->setMoney(
                            players[cPlayer]->getMoney()
                                    + spaces[newPos]->getPrice());
                    spaces[newPos]->setOwner("No One");
                }
            }
            else
            {
                for (int l = 0; l < players.size(); ++l) {
                    if (l != cPlayer) {
                        if (players[l]->getPiece().compare(
                                spaces[newPos]->getOwner()) == 0) {
                            QMessageBox::information(this,"Notice", "You have to pay "
                                    + (QString::number(spaces[newPos]->getPrice()/ 10))
                                    + "$ to " + players[l]->getPiece()
                                    + "player\n",QMessageBox::Ok);
                            if (players[cPlayer]->getMoney()
                                    >= spaces[newPos]->getPrice()
                                            / 10) {
                                players[cPlayer]->setMoney(
                                        players[cPlayer]->getMoney()
                                                - (spaces[newPos]->getPrice()
                                                        / 10));
                                players[l]->setMoney(
                                        players[l]->getMoney()
                                                + (spaces[newPos]->getPrice()
                                                        / 10));
                            }
                            else
                            {
                                return PlayerLeft();
                            }
                        }
                    }
                }
            }
        }
    }
    NextPlayer();
}