Beispiel #1
0
void RSSChannel::set(QString* src, const int start, const int end)
{
	title = pickUp(src, start, end, RSSChannelTag::TitleS, RSSChannelTag::TitleE);
	link = pickUp(src, start, end, RSSChannelTag::LinkS, RSSChannelTag::LinkE);
	desc = pickUp(src, start, end, RSSChannelTag::DescS, RSSChannelTag::DescE);
	language = pickUp(src, start, end, RSSChannelTag::LanguageS, RSSChannelTag::LanguageE);

	qDebug() << "title" << title;
	/*
	qDebug() << "link" << link;
	qDebug() << "desc" << desc;
	qDebug() << "language" << language;
	*/
}
Beispiel #2
0
void LocalPlayer::nextStep()
{
    if (mPath.empty())
    {
        if (mPickUpTarget)
            pickUp(mPickUpTarget);

        if (mWalkingDir)
            walk(mWalkingDir);
    }

    if (mGoingToTarget && mTarget && withinAttackRange(mTarget))
    {
        mAction = Being::STAND;
        attack(mTarget, true);
        mGoingToTarget = false;
        mPath.clear();
        return;
    }
    else if (mGoingToTarget && !mTarget)
    {
        mGoingToTarget = false;
        mPath.clear();
    }

    Player::nextStep();
}
Beispiel #3
0
void LocalPlayer::nextStep()
{
    // TODO: Fix picking up when reaching target (this method is obsolete)
    // TODO: Fix holding walking button to keep walking smoothly
    if (mPath.empty())
    {
        if (mPickUpTarget)
            pickUp(mPickUpTarget);

        if (mWalkingDir)
            walk(mWalkingDir);
    }

    // TODO: Fix automatically walking within range of target, when wanted
    if (mGoingToTarget && mTarget && withinAttackRange(mTarget))
    {
        mAction = Being::STAND;
        attack(mTarget, true);
        mGoingToTarget = false;
        mPath.clear();
        return;
    }
    else if (mGoingToTarget && !mTarget)
    {
        mGoingToTarget = false;
        mPath.clear();
    }

#ifdef EATHENA_SUPPORT
    Player::nextStep();
#endif
}
Beispiel #4
0
void philoCommand(int num) {
	int leftStick, rightStick;
	int thinkTime = 0;
	int totalTime = 0; 
	int eatTime = 0;
	int totalTimeToEat = TOTAL_EAT_TIME;
	leftStick = num;
	totalTime = 0;

	srand((int)time(NULL) + num);

	if(num == PHILOSOPHERS - 1) {
		rightStick = 0;
	} else {
		rightStick = num + 1;
	}

	while(totalTimeToEat > 0) {
		if((thinkTime = randomGaussian(T_MEAN, T_STDEV)) < 0) {
			thinkTime = 0;
		}

		printf("Philo %d will think for %d seconds (%d seconds total)\n",
			num, thinkTime, totalTime);

		totalTime += thinkTime;
		sleep(thinkTime);

		if((eatTime = randomGaussian(T_MEAN, T_STDEV)) < 0) {
			eatTime = 0;
		}

		if((pickUp(leftStick, rightStick) == -1) && (errno == EINTR)) {
			fprintf(stderr, "Error with semop locking: %s\n", strerror(errno));
			exit(1);
		}

		printf("Philo %d will eat for %d seconds (%d seconds total)\n",
			num, eatTime, TOTAL_EAT_TIME - totalTimeToEat);

		totalTimeToEat -= eatTime;

		sleep(eatTime);
		if((putDown(leftStick, rightStick) == -1) && (errno == EINTR)) {
			fprintf(stderr, "Error with semop unlocking: %s\n", strerror(errno));
			exit(1);
		}
	}
	printf("Philosopher %d has finished eating for %d and thinking for %d ",
		num, TOTAL_EAT_TIME - totalTimeToEat, totalTime);

	exit(0);
}
Beispiel #5
0
void RSSItem::set(QString* src, const int start, const int end)
{
	title = pickUp(src, start, end, RSSItemTag::TitleS, RSSItemTag::TitleE);
	link = pickUp(src, start, end, RSSItemTag::LinkS, RSSItemTag::LinkE);
	desc = pickUp(src, start, end, RSSItemTag::DescS, RSSItemTag::DescE);
	guid = pickUp(src, start, end, RSSItemTag::GuidS, RSSItemTag::GuidE);
	author = pickUp(src, start, end, RSSItemTag::AuthorS, RSSItemTag::AuthorE);
	pubDate = pickUp(src, start, end, RSSItemTag::PubDateS, RSSItemTag::PubDateE);
}
Beispiel #6
0
// Move the whirler
void Whirler::move(Real delta) {
	// Rotate
	mNode->roll(Radian(-10 * delta));
	mNode->pitch(Radian(mRotationSpeed * delta));
	mFlareNode->roll(Radian(delta * 0.25f));

	Vector3 pos = getPosition();

	// Try to avoid all moving objects
	ObjectMapType::const_iterator i;
	ObjectSystem *ob = ObjectSystem::getSingletonPtr();
	for(i=ob->getFirst(); i != ob->getLast(); ++i) {
		if((*i).second == this || (*i).second->getType() == OTYPE_MUSHROOM) continue;

		Vector3 d = pos - (*i).second->getPosition();
		d.z = 0;
		if(d.squaredLength() > 60.0f*60.0f) continue;
		Real dist = d.normalise();
		Real effect = 1.0f - (dist / 60.0f);

		mCurrentSpeed += d * effect * mSpeed * 3.0f * delta;
	}

	// ..and player as well
	Vector3 d = pos - mPlayer->getPosition();
	d.z = 0;
	if(d.squaredLength() <= 60.0f*60.0f) {
		Real dist = d.normalise();
		// If distance is very small, player catches it
		if(dist < 3.0f) {
			pickUp();
			setToBeDeleted();
			mPlayer->catchWhirler();
			return;
		}
		Real effect = 1.0f - (dist / 60.0f);
		mCurrentSpeed += d * effect * mSpeed * 10.0f * delta;
	}

	// Cap the speed
	if(mCurrentSpeed.squaredLength() >= 55*55) {
		mCurrentSpeed = mCurrentSpeed.normalisedCopy() * 55.0f;
	}

	// Move
	mNode->translate(mCurrentSpeed * delta);
	mFlareNode->setPosition(mNode->getPosition());
}
Beispiel #7
0
void normalUp(unsigned char key, int x, int y)
{
	if (key == 'w')
		pickUp();
	if (key == 'm')
		keysDown &= ~mKey;
	if (key == 'e')
		switchItems(1);
	if (key == 'q')
		switchItems(-1);
	if (key == 'a')
		keysDown &= ~aKey;
	if (key == 'd')
		keysDown &= ~dKey;
	if (key == 27)
		exit(0);
	if (key == 32)
		punching = 0;
}
Beispiel #8
0
int main()
{
	// part 1 code
	Bus cityBus39(20, 78);
	Truck pickUp(30, true);
	move(cityBus39);
	move(pickUp);
	show(cityBus39);
	show(pickUp);


	/* part 2 code
	 uncomment after you have completed 
	 part 1
	
	Bus cityBus144;
	Truck pickUpAA4;
	std::cin >> cityBus144 >> pickUpAA4;
	std::cout << cityBus144 << pickUpAA4;
	*/
    
    return 0;
}
void GameController::processTurn()
{
    ui->clearStatusBar();

    int oldHP = player->getHP();

    char command = getch();
    switch (command)
    {    
    case 2:
        player->move(player->getX(), player->getY() + 1);
        break;

    case 3:
        player->move(player->getX(), player->getY() - 1);
        break;

    case 4:
        player->move(player->getX() - 1, player->getY());
        break;

    case 5:
        player->move(player->getX() + 1, player->getY());
        break;

    case '1':
        player->move(player->getX() - 1, player->getY() + 1);
        break;

    case '2':
        player->move(player->getX(), player->getY() + 1);
        break;

    case '3':
        player->move(player->getX() + 1, player->getY() + 1);
        break;

    case '4':
        player->move(player->getX() - 1, player->getY());
        break;

    case '6':
        player->move(player->getX() + 1, player->getY());
        break;

    case '7':
        player->move(player->getX() - 1, player->getY() - 1);
        break;

    case '8':
        player->move(player->getX(), player->getY() - 1);
        break;

    case '9':
        player->move(player->getX() + 1, player->getY() - 1);
        break;

    case 'e':
        enter();
        break;

    case 'h':
        ui->writeToStatusBar("Commands: "
                             "e -- enter the map, "
                             "i -- browse inventory, "
                             "p -- pick up an item, \n"
                             "t -- talk, "
                             "f -- cast a flood spell, "
                             "q -- quit.\n");
        break;

    case 'i':
        ui->browseInventory(player);
        break;

    case 'p':
        pickUp();
        break;

    case 't':
        talk();
        break;

    case 'f':
        ui->writeToStatusBar(player->castAFlood());
        break;

    case 'q':
        tryToQuit();
        break;

    default:
        break;
    }

    string *message = new string();
    int enemiesKilled = currentMap->processActorsTurns(player, message);
    score += enemiesKilled;
    player->addExp(enemiesKilled);
    if (*message != "")
        ui->writeToStatusBar(*message + "\n");
    int newHP = player->getHP();
    if (newHP < oldHP)
        ui->writeToStatusBar("You were attacked!\n");

    ui->updateStatsBar(player);

    if (!player->isAlive())
    {
        if (player->drowned())
            ui->writeToStatusBar("You drowned!\n");
        state = over;
    }
}
int main(void)
{
  ArSerialConnection con;
  ArRobot robot;
  int ret;
  std::string str;
  ArActionLimiterForwards limiter("speed limiter near", 225, 600, 250);
  ArActionLimiterForwards limiterFar("speed limiter far", 225, 1100, 400);
  ArActionTableSensorLimiter tableLimiter;
  ArActionLimiterBackwards backwardsLimiter;
  ArActionConstantVelocity stop("stop", 0);
  ArSonarDevice sonar;
  ArACTS_1_2 acts;
  ArPTZ *ptz;
  ptz = new ArVCC4(&robot, true);
  ArGripper gripper(&robot);
  
  Acquire acq(&acts, &gripper);
  DriveTo driveTo(&acts, &gripper, ptz);
  DropOff dropOff(&acts, &gripper, ptz);
  PickUp pickUp(&acts, &gripper, ptz);
  

  TakeBlockToWall takeBlock(&robot, &gripper, ptz, &acq, &driveTo, &pickUp,
			    &dropOff, &tableLimiter);

  if (!acts.openPort(&robot))
  {
    printf("Could not connect to acts, exiting\n");
    exit(0);    
  }
  Aria::init();
  
  robot.addRangeDevice(&sonar);
  //con.setBaud(38400);
  if ((ret = con.open()) != 0)
  {
    str = con.getOpenMessage(ret);
    printf("Open failed: %s\n", str.c_str());
    Aria::shutdown();
    return 1;
  }

  robot.setDeviceConnection(&con);
  if (!robot.blockingConnect())
  {
    printf("Could not connect to robot... exiting\n");
    Aria::shutdown();
    return 1;
  }

  ptz->init();
  ArUtil::sleep(8000);
  printf("### 2222\n");
  ptz->panTilt(0, -40);
  printf("### whee\n");
  ArUtil::sleep(8000);
  robot.setAbsoluteMaxTransVel(400);

  robot.setStateReflectionRefreshTime(250);
  robot.comInt(ArCommands::ENABLE, 1);
  robot.comInt(ArCommands::SOUNDTOG, 0);

  ArUtil::sleep(200);
  robot.addAction(&tableLimiter, 100);
  robot.addAction(&limiter, 99);
  robot.addAction(&limiterFar, 98);
  robot.addAction(&backwardsLimiter, 97);
  robot.addAction(&acq, 77);
  robot.addAction(&driveTo, 76);
  robot.addAction(&pickUp, 75);
  robot.addAction(&dropOff, 74);
  robot.addAction(&stop, 30);

  robot.run(true);
  
  Aria::shutdown();
  return 0;
}
Beispiel #11
0
int main(void)
{
  ArSerialConnection con;
  ArRobot robot;
  int ret;
  std::string str;
  ArActionLimiterForwards limiter("speed limiter near", 300, 600, 250);
  ArActionLimiterForwards limiterFar("speed limiter far", 300, 1100, 400);
  ArActionLimiterBackwards backwardsLimiter;
  ArActionConstantVelocity stop("stop", 0);
  ArActionConstantVelocity backup("backup", -200);
  ArSonarDevice sonar;
  ArACTS_1_2 acts;
  ArSonyPTZ sony(&robot);
  ArGripper gripper(&robot, ArGripper::GENIO);
  
  Acquire acq(&acts, &gripper);
  DriveTo driveTo(&acts, &gripper, &sony);
  PickUp pickUp(&acts, &gripper, &sony);

  TakeBlockToWall takeBlock(&robot, &gripper, &sony, &acq, &driveTo, &pickUp,
			    &backup);

  Aria::init();

   if (!acts.openPort(&robot))
   {
     printf("Could not connect to acts\n");
     exit(1);
   }
  
  robot.addRangeDevice(&sonar);
  //con.setBaud(38400);
  if ((ret = con.open()) != 0)
  {
    str = con.getOpenMessage(ret);
    printf("Open failed: %s\n", str.c_str());
    Aria::shutdown();
    return 1;
  }

  robot.setDeviceConnection(&con);
  if (!robot.blockingConnect())
  {
    printf("Could not connect to robot... exiting\n");
    Aria::shutdown();
    return 1;
  }

  sony.init();
  ArUtil::sleep(1000);
  //robot.setAbsoluteMaxTransVel(400);

  robot.setStateReflectionRefreshTime(250);
  robot.comInt(ArCommands::ENABLE, 1);
  robot.comInt(ArCommands::SOUNDTOG, 0);

  ArUtil::sleep(200);
  robot.addAction(&limiter, 100);
  robot.addAction(&limiterFar, 99);
  robot.addAction(&backwardsLimiter, 98);
  robot.addAction(&acq, 77);
  robot.addAction(&driveTo, 76);
  robot.addAction(&pickUp, 75);
  robot.addAction(&backup, 50);
  robot.addAction(&stop, 30);

  robot.run(true);
  
  Aria::shutdown();
  return 0;
}
Beispiel #12
0
void
Player::customize()
{
    m_characterName = "";
    CallbackOverlay nameInput(3,30, "What is your name?", &m_characterName, &drawNameInput, &handleNameInput);
    //nameInput.main(m_level);
    std::vector<ListDefinition>raceList;
    raceList.push_back(ListDefinition(LIST_ENTRY,'a',"Human"));
    raceList.push_back(ListDefinition(LIST_ENTRY,'b',"Vedalken"));
    raceList.push_back(ListDefinition(LIST_ENTRY,'c',"Leonin"));
    raceList.push_back(ListDefinition(LIST_ENTRY,'d',"Viashino"));
    raceList.push_back(ListDefinition(LIST_ENTRY,'r',"Random"));
    ListOverlay raceOverlay(5, 30, "Select starting race", false, false, raceList);
    raceOverlay.main(m_level);
    for(unsigned int i=0; i<raceOverlay.m_definition.size(); i++) {
        ListDefinition &def = raceOverlay.m_definition[i];
        if(def.m_selected) {
            switch(i) {
            case 0:
                m_race=PLAYER_HUMAN;
                break;
            case 1:
                m_race=PLAYER_VEDALKEN;
                break;
            case 2:
                m_race=PLAYER_LEONIN;
                break;
            case 3:
                m_race=PLAYER_VIASHINO;
                break;
            case 4:
                boost::random::uniform_int_distribution<> raceDist(0,3);
                m_race = raceDist(RAND);
                break;
            }
        }
    }
    pickUp(m_level->m_actorFactory.getActor("Short Sword",m_level));
    pickUp(m_level->m_actorFactory.getActor("Minor Mana Potion",m_level));
    pickUp(m_level->m_actorFactory.getActor("Short Bow",m_level));
    Actor *arrow = m_level->m_actorFactory.getActor("Arrow",m_level);
    arrow->m_amount = 20;
    pickUp(arrow);
    m_weapon = 0;
    m_quiver = 3;
    int manaPoints = generateAttributes();
    calculateBonuses();
    calculateHp();
    calculateAc();
    TCODConsole::root->clear();
    increaseMana(manaPoints);
    drawNewCard(0,true);
    drawNewCard(1);
    drawNewCard(2);
    m_level->m_playerGenerated = true;
    std::string msg = "Welcome ";
    /*msg += m_characterName;
    msg += " the ";*/
    msg += m_raceName;
    m_level->m_messages->showMessage(msg, MESSAGE_WARNING);
    m_level->m_messages->showMessage("You enter the dungeons of Svogthos in search of the Orb of Knowledge", MESSAGE_WARNING);
}
Beispiel #13
0
void
Player::doPickUp()
{
    bool showNothingMessage = true;
    if(m_level->m_dungeon->getGlyph(m_x,m_y) == 28) {
        m_level->m_messages->showMessage("You absorb the shard of knowledge",MESSAGE_NOTIFICATION);
        int manaAmount = m_hd/7 + 1;
        increaseMana(manaAmount);
        int w = m_level->m_dungeon->m_width;
        m_level->m_dungeon->m_tiles[m_x+m_y*w] = m_level->m_tileFactory.getTile("Crystal Floor");
        showNothingMessage = false;
    }
    if(m_level->m_dungeon->getGlyph(m_x,m_y) == 31) {
        m_level->m_messages->showMessage("Congratulations",MESSAGE_NOTIFICATION);
        m_level->m_messages->showMessage("You have obtained the Orb of Knowledge",MESSAGE_NOTIFICATION);
        int w = m_level->m_dungeon->m_width;
        m_level->m_dungeon->m_tiles[m_x+m_y*w] = m_level->m_tileFactory.getTile("Crystal Floor");
        showNothingMessage = false;
        m_level->m_playerWon = true;

        CallbackOverlay winScreen(7,50, "You Win!", 0, &drawWinScreen, &handleWinScreen);
        winScreen.main(m_level);
    }
    bool pickedUp = false;
    std::vector<int> tags;
    tags.push_back(ITEM_PICK_UP);
    std::vector<Actor *> actors = m_level->getActors(m_x,m_y,tags);
    if(m_inventory.size()<26) {
        if(actors.size()>0) {
            showNothingMessage = false;
            std::vector<ListDefinition>itemList;
            char letter = 'a';
            for(unsigned int i=0; i<actors.size(); i++,letter++) {
                Actor *actor = actors[i];
                std::stringstream st;
                st << actor->m_name;
                if(actor->hasTag(ITEM_STACK)) {
                    st << " x";
                    st << actor->m_amount;
                }
                itemList.push_back(ListDefinition(LIST_ENTRY, letter, st.str()));
            }
            ListOverlay itemOverlay(30, 30, "Pick up what?", itemList.size()>1, true, itemList);
            itemOverlay.main(m_level);
            for(unsigned int i=0; i<itemOverlay.m_definition.size(); i++) {
                ListDefinition &def = itemOverlay.m_definition[i];
                if(def.m_selected) {
                    Actor *item = actors[i];
                    if(item != 0) {
                        std::string msg = "You pick up the ";
                        msg += item->m_name;
                        m_level->m_messages->showMessage(msg,MESSAGE_NOTIFICATION);
                        pickUp(item);
                        m_level->removeActor(item);
                        pickedUp = true;
                    }
                }
            }
        }
        if(showNothingMessage) {
            m_level->m_messages->showMessage("There is nothing here to pick up",MESSAGE_NOTIFICATION);
        }
        if(pickedUp)
            act();
    }
    else {
        if(showNothingMessage) {
            m_level->m_messages->showMessage("You cannot carry more things",MESSAGE_NOTIFICATION);
        }
    }
}