当前位置: 首页>>代码示例>>C++>>正文


C++ TMap::getHex方法代码示例

本文整理汇总了C++中TMap::getHex方法的典型用法代码示例。如果您正苦于以下问题:C++ TMap::getHex方法的具体用法?C++ TMap::getHex怎么用?C++ TMap::getHex使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在TMap的用法示例。


在下文中一共展示了TMap::getHex方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: _coberturaParcial

int _coberturaParcial(const std::vector<RayCell> v, int nivelDefensor, int nivelAtacante, const TMap & map){
  THex * infoDefensor = NULL, * infoAtacante = NULL;

  // Caso de Error 1 -> La posicion inicial es mala
  infoDefensor = map.getHex(v[0].p);
  if(infoDefensor == NULL)
    return 0;
  
  infoAtacante = map.getHex(v[v.size()-1].p);
  if(infoAtacante == NULL)
    return 0;

  // Caso de Error 2 -> Hay una sola casilla en el RayCell
  if(v.size() < 2)
    return 0;

  // Comprobamos si esta en agua -> Proporciona Cobertura Parcial
  if(infoDefensor->tipo == 2 && infoDefensor->nivel <= -1)
    return 1;

  // Si la altura del hexagono del atacante es mayor que la del defensor
  // Anula Cobertura Parcial del Defensor
  if(infoAtacante->nivel > infoDefensor->nivel)
    return 0;

  // Comprobamos los hexagonos intermedios entre el defensor y el atacante
  // Si hay un hexagono que tengo mi misma altura o superior -> Tengo Cobertura Parcial
  for(int i = 1; i < ((int) v.size() - 1); i++){
    if(ldvcellValidaCobertura(v[i], map, infoDefensor->nivel))
      return 1;
  }

  return 0;
}
开发者ID:Josan-Coba,项目名称:agico,代码行数:34,代码来源:LdVyC.cpp

示例2: ldvcellValidaCobertura

/**
 * Devuelve true si c da Cobertura Parcial 
 * con una casilla adyacente de altura nivel de la casilla del Mech
 */
bool ldvcellValidaCobertura(RayCell c, const TMap & map, int nivel){
  THex * infoCell = NULL;
  THex * infoCellAlt = NULL;
  
  infoCell = map.getHex( c.p );
  if( infoCell != NULL ){
    if( infoCell->nivel > nivel){
      if( c.alt != NULL ){
	infoCellAlt = map.getHex( *c.alt );
	if( infoCellAlt != NULL ){
	  if( infoCellAlt->nivel > nivel){
	    return true;
	  }
	  else
	    return false;
	}
	else
	  return true;
      }
      else
	return true;
    }
    else
      return false;
  }
  else if( c.alt != NULL ){
    infoCellAlt = map.getHex( *c.alt );
    if( infoCellAlt != NULL ){
      if( infoCellAlt->nivel > nivel)
	return true;
      else
	return false;
    }
    else
      return false;
  }
  else
    return false;
}
开发者ID:Josan-Coba,项目名称:agico,代码行数:43,代码来源:LdVyC.cpp

示例3: ldvcellValidaEle

/**
 * Devuelve true si c forma una linea de visión válida
 * con una casilla adyacente de altura nivelMech
 */
bool ldvcellValidaEle(RayCell c, const TMap & map, int nivel){
  THex * infoCell = NULL;
  THex * infoCellAlt = NULL;
  
  infoCell = map.getHex( c.p );
  if( infoCell != NULL )
    if( infoCell->nivel > nivel)
      return false;
  
  if( c.alt != NULL ){
    infoCellAlt = map.getHex( *c.alt );
    if( infoCellAlt != NULL ){
      if( infoCellAlt->nivel > nivel)
	return false;
    }
  }
  
  if( infoCell == NULL && infoCellAlt == NULL )
    return false;
  
  return true;
}
开发者ID:Josan-Coba,项目名称:agico,代码行数:26,代码来源:LdVyC.cpp

示例4: ldvcellValidaObj

void ldvcellValidaObj(RayCell c, const TMap & map, Objetos_t & obj, int nivelMech){
  THex * infoCell = NULL;
  THex * infoCellAlt = NULL;
  Objetos_t objCell, objCellAlt;
  
  // Vemos los objetos en el hexagono
  infoCell = map.getHex( c.p );
  if( infoCell != NULL && (infoCell->nivel + 2) > nivelMech ){
    if( infoCell->objeto == 2 )
      objCell.bosqueDenso++;
    else if( infoCell->humo )
      objCell.humo++;
    else if( infoCell->objeto == 1 )
      objCell.bosqueDisperso++;
  }
  
  // Vemos los objetos en el Hexagono alternativo
  // En caso de existir
  if( c.alt != NULL ){
    infoCellAlt = map.getHex( *c.alt );
    if( infoCellAlt != NULL && (infoCellAlt->nivel + 2) > nivelMech){
      if( infoCellAlt->objeto == 2 )
	objCellAlt.bosqueDenso++;
      else if( infoCellAlt->humo )
	objCellAlt.humo++;
      else if( infoCellAlt->objeto == 1 )
	objCellAlt.bosqueDisperso++;
    }
  }

  // Comparamos a ver que Hexagono penaliza mas
  if(objCell.bosqueDenso > 0 || objCellAlt.bosqueDenso > 0)
    obj.bosqueDenso++;
  else if(objCell.humo > 0 || objCellAlt.humo > 0)
    obj.humo++;
  else if(objCell.bosqueDisperso > 0 || objCellAlt.bosqueDisperso > 0)
    obj.bosqueDisperso++;  
}
开发者ID:Josan-Coba,项目名称:agico,代码行数:38,代码来源:LdVyC.cpp

示例5: _LdV

int _LdV(const std::vector<RayCell> v, int nivelOrig, int nivelDest, const TMap & map){
  THex * infoOrig = NULL, * infoDest = NULL;

  // Caso de Error 1 -> La posicion inicial es mala
  infoOrig = map.getHex(v[0].p);
  if(infoOrig == NULL)
    return 0;
  
  infoDest = map.getHex(v[v.size()-1].p);
  if(infoDest == NULL)
    return 0;

  // Caso de Error 2 -> Hay una sola casilla en el RayCell
  if(v.size() < 2)
    return 0;

  // Si alguno de los dos mechs estan completamente cubiertos por agua
  // NO HAY LDV
  if(cubiertoAgua(infoOrig, nivelOrig) ||
     cubiertoAgua(infoDest, nivelDest))
    return 0;

  // Si ha llegado aquí y son adyacentes -> SI hay LDV
  if((int)v.size() == 2)
    return 1;
  
  // Hay Hexagono intermedios entre el Origen y el Destino
  // Obtenemos las alturas relativas a las que estan los mechs
  // Sumamos a la altura del hexagono el nivel de los mechs (+0(tumbado) o +1(pie))
  int nivelHexOrigen = nivelOrig + infoOrig->nivel;
  int nivelHexDestino = nivelDest + infoDest->nivel;
  Objetos_t objetos;

  // Caso especial -> Haya un solo hexagono entre atacante y defensor
  if((int)v.size() == 3){
    if(!ldvcellValidaEle(v[1], map, nivelHexOrigen) ||
       !ldvcellValidaEle(v[1], map, nivelHexDestino))
      return 0;
    if(nivelHexOrigen >= nivelHexDestino)
      ldvcellValidaObj(v[1], map, objetos, nivelHexOrigen);
    else
      ldvcellValidaObj(v[1], map, objetos, nivelHexDestino);
  }
  else{
    // Casuisticas mas normales
    // Para cada hexagono de Ray Cast
    // Menos el 1º y el ultimo -> Donde estan los Mechs
    for(int i = 1; i < ((int)v.size() - 1); i++){
      // Si hexagono adyacente atacante tiene nivel mayor -> No LdV
      if(i == 1){
	if(!ldvcellValidaEle(v[i], map, nivelHexOrigen))
	  return 0;
	ldvcellValidaObj(v[i], map, objetos, nivelHexOrigen);
      }

      // Si hexagono adyacente defensor tiene nivel mayor -> No LdV
      if(i == ((int)v.size() - 2)){
	if(!ldvcellValidaEle(v[i], map, nivelHexDestino))
	  return 0;
	ldvcellValidaObj(v[i], map, objetos, nivelHexDestino);
      }

      // Para hexagono intermedios -> Si la altura es mayor a la de atacante y defensor
      // No LdV
      if(i != 1 && i != ((int)v.size() - 2)){
	if(!ldvcellValidaEle(v[i], map, nivelHexOrigen) &&
	   !ldvcellValidaEle(v[i], map, nivelHexDestino))
	  return 0;
	if(nivelHexOrigen >= nivelHexDestino)
	  ldvcellValidaObj(v[i], map, objetos, nivelHexOrigen);
	else
	  ldvcellValidaObj(v[i], map, objetos, nivelHexDestino);
      }
    }
  }

  // Comprobamos las posibles combinaciones de edificios, bosques y humos
  if(objetos.bosqueDisperso >= 3)
    return 0;
  else if(objetos.bosqueDisperso >= 1 && objetos.bosqueDenso >= 1)
    return 0;
  else if(objetos.bosqueDenso >= 2)
    return 0;
  else if(objetos.humo >= 2)
    return 0;
  else if(objetos.humo >= 1 && objetos.bosqueDisperso >= 1)
    return 0;

  return 1;
}
开发者ID:Josan-Coba,项目名称:agico,代码行数:90,代码来源:LdVyC.cpp


注:本文中的TMap::getHex方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。