Ejemplo n.º 1
0
// three ints
void GetTiles(int tiles[],int nt,int memory,float floats[],int nf,int h1,int h2,int h3)
{
    i_tmp_arr[0]=h1;
    i_tmp_arr[1]=h2;
    i_tmp_arr[2]=h3;
    GetTiles(tiles,nt,memory,floats,nf,i_tmp_arr,3);
}
Ejemplo n.º 2
0
void Button::Update(float dt)
{
  if(isInit == false)
  {
    GetTiles();
  }

  Tile *aboveTile = System::stateManager->GetLevel()->GetTile(x,y + 1);
  if(aboveTile->solid == true && active == false)
  {
    active = true;
    for(auto it = tiles.begin(); it != tiles.end(); ++it)
    {
      Tile &curTile = *it;

      Tile *tile = System::stateManager->GetLevel()->GetTile(curTile.x,curTile.y);

      tile->data = curTile.data != TILE_AIR ? TILE_AIR : TILE_SOLID;
      tile->solid = curTile.data != TILE_AIR ? false : true;
    }
  }
  if(aboveTile->solid == false && active == true)
  {
    active = false;
    for(auto it = tiles.begin(); it != tiles.end(); ++it)
    {
      Tile &curTile = *it;

      Tile *tile = System::stateManager->GetLevel()->GetTile(curTile.x,curTile.y);
      tile->data = curTile.data != TILE_AIR ? curTile.data : TILE_AIR;
      tile->solid = curTile.data != TILE_AIR ? curTile.solid : false;
    }
  }
}
Ejemplo n.º 3
0
void GetTiles1(int tiles[],int nt,collision_table *ct,float f1,int h1,int h2)
{
    f_tmp_arr[0]=f1;
    i_tmp_arr[0]=h1;
    i_tmp_arr[1]=h2;
    GetTiles(tiles,nt,ct,f_tmp_arr,1,i_tmp_arr,2);
}
Ejemplo n.º 4
0
// one float, two ints
void GetTiles1(int tiles[],int nt,int memory,float f1,int h1,int h2)
{
    f_tmp_arr[0]=f1;
    i_tmp_arr[0]=h1;
    i_tmp_arr[1]=h2;
    GetTiles(tiles,nt,memory,f_tmp_arr,1,i_tmp_arr,2);
}
Ejemplo n.º 5
0
// two floats, one int
void GetTiles2(int tiles[],int nt,int memory,float f1,float f2,int h1)
{
    f_tmp_arr[0]=f1;
    f_tmp_arr[1]=f2;
    i_tmp_arr[0]=h1;
    GetTiles(tiles,nt,memory,f_tmp_arr,2,i_tmp_arr,1);
}
Ejemplo n.º 6
0
void GetTiles2(int tiles[],int nt,collision_table *ct,float f1,float f2,int h1)
{
    f_tmp_arr[0]=f1;
    f_tmp_arr[1]=f2;
    i_tmp_arr[0]=h1;
    GetTiles(tiles,nt,ct,f_tmp_arr,2,i_tmp_arr,1);
}
Ejemplo n.º 7
0
//Train CMAC on current input towards given target
void CMAC::updateOR(double target)
{

  //Number of distinct tables
  int numDistinctTables = numFloatInputs / tableDimensionality; 

  //Populate tiles array with tile indices
  for(int i=0; i<numDistinctTables; i++){
    intInputs[1] = i;
    int begin = (numTilings / numDistinctTables) * i;
    GetTiles(&tiles[begin], (numTilings / numDistinctTables), memorySize, &floatInputs[i], tableDimensionality, intInputs, numIntInputs);
  }
  
  //Calculate the sum of all indexed tiles
  double pred = 0;
  for(int i=0; i<numTilings; i++){
    pred += u[tiles[i]];
  }
  
  //Train CMAC memory cells
  for(int i=0; i<numTilings; i++){
    u[tiles[i]] += ((alpha / numTilings) * (target - pred));
  }
  
}
Ejemplo n.º 8
0
void GetTiles(int tiles[],int nt,collision_table *ct,float floats[],int nf,int h1,int h2,int h3)
{
    i_tmp_arr[0]=h1;
    i_tmp_arr[1]=h2;
    i_tmp_arr[2]=h3;
    GetTiles(tiles,nt,ct,floats,nf,i_tmp_arr,3);
}
Ejemplo n.º 9
0
// two floats, three ints
void GetTiles2(int tiles[],int nt,int memory,float f1,float f2,int h1,int h2,int h3)
{
    f_tmp_arr[0]=f1;
    f_tmp_arr[1]=f2;
    i_tmp_arr[0]=h1;
    i_tmp_arr[1]=h2;
    i_tmp_arr[2]=h3;
    GetTiles(tiles,nt,memory,f_tmp_arr,2,i_tmp_arr,3);
}
Ejemplo n.º 10
0
//Predict target for current input vector
double CMAC::predict()
{
  //Populate tiles array with tile indices
  GetTiles(tiles, numTilings, memorySize, floatInputs, numFloatInputs, intInputs, numIntInputs);

  //Calculate the sum of all indexed tiles
  double sum = 0;
  for(int i=0; i<numTilings; i++){
    sum += u[tiles[i]];
  }
  
  //Return the sum
  return sum;

}
Ejemplo n.º 11
0
//Train CMAC on current input towards given target
void CMAC::update(double target)
{
  //Populate tiles array with tile indices
  GetTiles(tiles, numTilings, memorySize, floatInputs, numFloatInputs, intInputs, numIntInputs);
  
  //Calculate the sum of all indexed tiles
  double pred = 0;
  for(int i=0; i<numTilings; i++){
    pred += u[tiles[i]];
  }
  
  //Train CMAC memory cells
  for(int i=0; i<numTilings; i++){
    u[tiles[i]] += ((alpha / numTilings) * (target - pred));
  }
  
}
Ejemplo n.º 12
0
//Predict target for current input vector
double CMAC::predictOR()
{

  //Number of distinct tables
  int numDistinctTables = numFloatInputs / tableDimensionality; 

  //Populate tiles array with tile indices
  for(int i=0; i<numDistinctTables; i++){
    intInputs[1] = i;
    int begin = (numTilings / numDistinctTables) * i;
    GetTiles(&tiles[begin], (numTilings / numDistinctTables), memorySize, &floatInputs[i], tableDimensionality, intInputs, numIntInputs);
  }
  
  //Calculate the sum of all indexed tiles
  double sum = 0;
  for(int i=0; i<numTilings; i++){
    sum += u[tiles[i]];
  }
  
  //Return the sum
  return sum;
  
}
Ejemplo n.º 13
0
// No ints
void GetTiles(int tiles[],int nt,int memory,float floats[],int nf)
{
    GetTiles(tiles,nt,memory,floats,nf,i_tmp_arr,0);
}
Ejemplo n.º 14
0
void GetTiles(int tiles[],int nt,collision_table *ct,float floats[],int nf)
{
    GetTiles(tiles,nt,ct,floats,nf,i_tmp_arr,0);
}
Ejemplo n.º 15
0
//one int
void GetTiles(int tiles[],int nt,int memory,float floats[],int nf,int h1)
{
    i_tmp_arr[0]=h1;
    GetTiles(tiles,nt,memory,floats,nf,i_tmp_arr,1);
}
Ejemplo n.º 16
0
void GetTiles(IntArr* pv_tiles,int nt,int memory,float floats[],int nf,int h1, 
			  unsigned int offset) {
    i_tmp_arr[0]=h1;
    GetTiles(pv_tiles,nt,memory,floats,nf,i_tmp_arr,1, offset);
}
Ejemplo n.º 17
0
void GetTiles(int tiles[],int nt,collision_table *ct,float floats[],int nf,int h1)
{
    i_tmp_arr[0]=h1;
    GetTiles(tiles,nt,ct,floats,nf,i_tmp_arr,1);
}
Ejemplo n.º 18
0
void GetTiles1(int tiles[],int nt,collision_table *ct,float f1)
{
    f_tmp_arr[0]=f1;
    GetTiles(tiles,nt,ct,f_tmp_arr,1,i_tmp_arr,0);
}
Ejemplo n.º 19
0
// one float, No ints
void GetTiles1(int tiles[],int nt,int memory,float f1)
{
    f_tmp_arr[0]=f1;
    GetTiles(tiles,nt,memory,f_tmp_arr,1,i_tmp_arr,0);
}