Exemplo n.º 1
0
Position::Position (const unsigned int board_size) : bitb(board_size)  {	// default position, unused. correct only for 7x7.
	turn = 0;
	for(unsigned int i=0; i<11; i++){ 
		tower[   i] = Tower("o");
		tower[24-i] = Tower("x");
	}

	init (board_size);
}
void Tower(int n,char src,char dest,char temp)
{
	if (n==1)
		print(src,dest);
	else
	{
		Tower(n-1,src,temp,dest);
		Tower(1,src,dest,temp);
		Tower(n-1,temp,dest,src);
	}
}
Exemplo n.º 3
0
void GA_BuildTower::Init(const vector<Vec2>& cand_grid, 
			 const vector<int>& level,
			 const vector<int>& type)

{
  populations.clear();
  GenoType species;
  for (int i = 0; i < pop_size; ++i) {
    species.fitness = 0;
    species.rfitness = 0;
    species.cfitness = 0;
    species.gene.clear();
    for (int j = 0; j < gene_cnt; ++j) species.gene.push_back(Tower(level[j], type[j], 
								    cand_grid[j].x, cand_grid[j].y));
    populations.push_back(species);
  }

  CalFitness();

  double best_fitness = 0;
  for (int i = 0; i < pop_size; ++i) 
    if (populations[i].fitness > best_fitness) {
      best_fitness = populations[i].fitness;
      best = populations[i];
    }
}
Exemplo n.º 4
0
int main() {
	Tower tower = Tower();
	tower.display();

	system("Pause");
	return 0;
}
int main()
{
	int n;
	char src[3];
	printf("\nEnter the number of stacks which you want to move\n");
	scanf("%d",&n);
	printf("\nEnter source name destination name and spare name (only single character per name with no spaces in between eg.abc)\n");
	scanf("%s",src);
	printf("\n\n");
	Tower(n,src[0],src[1],src[2]);
	return 0;
}
Exemplo n.º 6
0
// Function: main()
int main(int argc, char ** argv)
{
    PA_Init();    // Initializes PA_Lib
    PA_InitVBL(); // Initializes a standard VBL
    PA_InitText(1,1);
    Drawable cursor(0,0,0);
    cursor.Load(0, 0, (void*)pal_cursor, (void*)gfx_cursor, OBJ_SIZE_16X16, 1);
    setupRotations();
    u8 c = 0;
    u8 x = 0;
    u8 y = 0;
    for (y = 0; y != 8; ++y) {
        for (x = 0; x != 8; ++x) {
            u16 i = y*8+x;
            if (grid[i] == 1) {
                Tower tower = Tower(SPRITE_TOWER_BASE+c, x*16, y*16);
                tower.Load(0, 1, (void*)pal_tower, (void*)gfx_tower, OBJ_SIZE_16X16, 1);
                tower_list.push_back(tower);
                PA_SetSpriteRotEnable(0, tower.sprite, c);
                ++c;
            }
        }
    }

    s16 angle = 0;

	// Infinite loop to keep the program running
	while (1)
	{
	    u8 i = 0;
        for (tlist_it it = tower_list.begin(); it != tower_list.end(); ++it) {
            angle = (*it).GetAngleTo(cursor);
            PA_SetRotsetNoZoom(0, i, angle);
            ++i;
        }
        PA_OutputText(1, 0, 0, "Angle: %03d", angle);
        PA_OutputText(1, 0, 1, "Angle2: %03d", angle);
        PA_OutputText(1, 0, 2, "Cursor: %03d,%03d", cursor.position.x, cursor.position.y);
        if (Stylus.Held) {
            cursor.position.x = Stylus.X;
            cursor.position.y = Stylus.Y;
        } else {
            cursor.position.x += (Pad.Held.Right - Pad.Held.Left);
            cursor.position.y += (Pad.Held.Down - Pad.Held.Up);
        }
        cursor.Draw();
        PA_WaitForVBL();
	}

	return 0;
} // End of main()
Exemplo n.º 7
0
void Position::setPosition (std::string pos) {							// convert string to internal representation
	turn = 0;										// clear relevant data
	bitb.clear();
	for(unsigned int i=0; i<squares; i++) {
		tower[i].clear();
	}

	if (pos != "") {									// parse string
		unsigned int c = 0;
		unsigned int start = 0;
		if (pos[0] == '|' || pos[0] == ' ' || pos[0] == '.') { start = 1; c = 1;}	// first square empty ?
		std::string s = "";
		for (unsigned int i = start; i < pos.length(); ++i) {
			if (pos[i] == '|' || pos[i] == ' ' || pos[i] == '.') {
				if (s.length()) {
					tower[c] = Tower (s);
					bitb.bits[tower[c].color()] |= (1<<c);
					if (tower[c].isOfficer()) bitb.promote(c, tower[c].color());
					s = "";
				}
				c ++;
				if (c>24) {							// # squares not jet known :/ todo
					std::cerr << "Position: \"" << pos << "\" has more than " << squares << " squares " << std::endl;
					break;
				}
			} else {
				s += pos[i];
			}
		}
		if (s.length()) {								// last square not empty ?
			tower[c] = Tower (s);
			bitb.bits[tower[c].color()] |= (1<<c);
			if (tower[c].isOfficer()) bitb.promote(c, tower[c].color());
		}
	}
}
Exemplo n.º 8
0
std::string Battle::Tower::GetInfo(const Castle & cstl)
{
    const char* tmpl = _("The %{name} fires with the strength of %{count} Archers");
    const char* addn = _("each with a +%{attack} bonus to their attack skill.");

    std::vector<int> towers;
    std::string msg;

    if(cstl.isBuild(BUILD_CASTLE))
    {
	towers.push_back(TWR_CENTER);

	if(cstl.isBuild(BUILD_LEFTTURRET)) towers.push_back(TWR_LEFT);
	if(cstl.isBuild(BUILD_RIGHTTURRET)) towers.push_back(TWR_RIGHT);

	for(std::vector<int>::const_iterator
	    it = towers.begin(); it != towers.end(); ++it)
	{
    	    Tower twr = Tower(cstl, *it);

    	    msg.append(tmpl);
    	    StringReplace(msg, "%{name}", twr.GetName());
    	    StringReplace(msg, "%{count}", twr.GetCount());

	    if(twr.GetBonus())
	    {
		msg.append(", ");
		msg.append(addn);
    		StringReplace(msg, "%{attack}", twr.GetBonus());
	    }
	    else
		msg.append(".");

	    if((it + 1) != towers.end())
    		msg.append("\n \n");
	}
    }

    return msg;
}
Exemplo n.º 9
0
int main(void) {
  uchar i;

  wdt_enable(WDTO_1S);

  /* If you don't use the watchdog, replace the call above with a wdt_disable().
   * On newer devices, the status of the watchdog (on/off, period) is PRESERVED
   * OVER RESET!
   */

  /* RESET status: all port bits are inputs without pull-up.
   * That's the way we need D+ and D-. Therefore we don't need any
   * additional hardware initialization.
   */
  odDebugInit();
  DBG1(0x00, 0, 0);      /* debug output: main starts */
  usbInit();
  usbDeviceDisconnect(); /* enforce re-enumeration, do this while interrupts are
                            disabled! */
  i = 0;

  while (--i) {          /* fake USB disconnect for > 250 ms */
    wdt_reset();
    _delay_ms(1);
  }
  usbDeviceConnect();
  sei();
  DBG1(0x01, 0, 0);   /* debug output: main loop starts */
  InitTower();

  for (;;) {          /* main event loop */
    DBG1(0x02, 0, 0); /* debug output: main loop iterates */
    wdt_reset();
    usbPoll();
    USBDATA = Tower();
  }
  return 0;
}
Exemplo n.º 10
0
LRESULT CALLBACK
WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	POINT mousePos;
	int dx = 0;
	int dy = 0;

	switch( msg )
	{
	case WM_LBUTTONDOWN:
		if( wParam & MK_LBUTTON )
		{
			SetCapture(hwnd);

			mOldMousePos.x = ( short )LOWORD(lParam);
			mOldMousePos.y = ( short )HIWORD(lParam);
			gui.UpdateMouse(mOldMousePos.x,mOldMousePos.y,true);
		}
		return 0;

	case WM_LBUTTONUP:
		ReleaseCapture();
		return 0;

	case WM_RBUTTONDOWN:
		if( wParam & MK_RBUTTON )
		{
			SetCapture(hwnd);

			mOldMousePos.x = ( short )LOWORD(lParam);
			mOldMousePos.y = ( short )HIWORD(lParam);
			POINT d;
			d.x = ( short )LOWORD(lParam);
			d.y = ( short )HIWORD(lParam);
			//qtc.TEST(vp, d, qtc.getBLS(), 5, md3dDevice);
			if(gui.GetButton(PLACE_TOWER)->GetPressed())
			{
				D3DXVECTOR3 res = qtc.PlaceATower(vp, d);
				if (res != D3DXVECTOR3(-99,-99,-99))
				{
					mTowers.push_back(Tower());
					mTowers.back().init(md3dDevice, D3DXVECTOR3(7.5f, 7.5f, 7.5f), res);
					newCube = true;
					nrOfTowers.resize(mTowers.size());
					currentTower = (int)nrOfTowers.size()-1;
					gui.GetButton(PLACE_TOWER)->SetPressed(false);
				}
			}
			//cam.setLens(0.30f*(gameTime.getDeltaTime()*20), (float)SCREEN_WIDTH/SCREEN_HEIGHT, 1.0f, 1000.0f);
		}
		return 0;

	case WM_RBUTTONUP:
		GetCamera().setLens(0.30f*pi, (float)SCREEN_WIDTH/SCREEN_HEIGHT, 1.0f, 1000.0f);
		ReleaseCapture();
		return 0;

	case WM_MOUSEMOVE:
		if( wParam & MK_LBUTTON || wParam & MK_RBUTTON )
		{
			mousePos.x = ( short )LOWORD(lParam);
			mousePos.y = ( short )HIWORD(lParam);

			dx = mousePos.x - mOldMousePos.x;
			dy = mousePos.y - mOldMousePos.y;

			GetCamera().rotateY( dx * 0.0087266f );
			GetCamera().pitch( dy * 0.0087266f );

			mOldMousePos = mousePos;
		}
		return 0;

	case WM_KEYDOWN:
		if(wParam == VK_CONTROL) GetCamera().crouch();
		if(wParam == VK_SPACE)	
		{
			if (!jumping)
				GetCamera().setJump(GetTime().getGameTime());
			jumping = true;
		}
		if (GetAsyncKeyState('F') & 0x8000)
		{
			if (funRot)
				funRot = false;
			else
				funRot = true;
		}
		if (GetAsyncKeyState('R') & 0x8000)
		{
			if (grid)
				grid = false;
			else
				grid = true;
		}
		if (GetAsyncKeyState('O') & 0x8000)
		{
			if(!newCube)
			{
				Tower c;
				mTowers.push_back(c);
				mTowers.back().init(md3dDevice, D3DXVECTOR3(1.0f, 1.0f, 1.0f), GetCamera().getPos());
				newCube = true;
				nrOfTowers.resize(mTowers.size());
				currentTower = (int)nrOfTowers.size()-1;
			}
			else
				newCube = false;
		}
		if (GetAsyncKeyState('Z') & 0x8000) 
		{
			if(newCube)
				nrOfTowers[currentTower] = 0;
			else
				nrOfTowers[0] = 0;
		}
		if (GetAsyncKeyState('X') & 0x8000)
		{
			if(newCube)
				nrOfTowers[currentTower] = 3;
			else
				nrOfTowers[0] = 3;
		}
		if (GetAsyncKeyState('C') & 0x8000)
		{
			if(newCube)
				nrOfTowers[currentTower] = 6;
			else
				nrOfTowers[0] = 6;
		}
		if (GetAsyncKeyState('Q') & 0x8000)
		{
			pWave->CalldmgCalc(1,10000,"Fire");
			pWave->CalldmgCalc(0,10000,"Fire");
		}
		return 0;

		// WM_DESTROY is sent when the window is being destroyed.
	case WM_DESTROY:
		DestroyWindow(g_Hwnd);
		PostQuitMessage(0);
		return 0;
	}
	return DefWindowProc(hwnd, msg, wParam, lParam);
}