Example #1
0
//*************************************
//Função Main
//*************************************
int main() {
	init();
	
	MIDI *music = load_midi("graphics/music.mid");
	play_midi(music,TRUE);
	
	int loop = true;
	while(loop){
        objects *obj = (objects*)malloc(sizeof(objects));
        spaceship *ship = (spaceship*)malloc(sizeof(spaceship));
        obj->ship = ship;
        setShipSprite(obj->ship);
        
        game_option escolha;
        escolha = callMenu();
        switch(escolha){
            case EASY_GAME: ship->speed = 1; break;
            case MEDIUM_GAME: ship->speed = 3; break;
            case HARD_GAME: ship->speed = 5; break;
            case EXIT_GAME: loop = FALSE; break;
        }
        int level = 1;
        while(loop&&level<=6){
            char path[100] = "graphics/";
            char filename[100];
            sprintf(filename,"stage%d.w3d",level);
            strcat(path,filename);
            FILE *stage = fopen(path,"rb");
            getAllCells(obj,stage);
            fclose(stage);
            
            game_condition progress;
            int background = backgroundColor(level);
            progress = gameLoop(obj,background);
            switch(progress){
                case NEXT_STAGE: level++; break;
                case GAME_OVER:{
                    BITMAP *gameOver;
                    gameOver = load_bitmap("graphics/gameover.bmp",NULL);
                    updateScreen(gameOver);
                    rest(2000);
                    level = 100;
                }break;
                case LEAVE_GAME: loop = FALSE; break;
            }
        }
        if(level==7){
            BITMAP *win;
            win = load_bitmap("graphics/venceu.bmp",NULL);
            updateScreen(win);
            rest(2000);
        }
    }
	
	deinit();
	return 0;
}
void TriangularCadInterface::updateBackgroundGridInfo()
{
  getAllCells(m_Cells, m_BGrid);
  getNodesFromCells(m_Cells, m_Nodes, m_BGrid);
  setBoundaryCodes(GuiMainWindow::pointer()->getAllBoundaryCodes());
  setAllCells();
  readVMD();
  updatePotentialSnapPoints();
  l2l_t  c2c   = getPartC2C();
  g2l_t _cells = getPartLocalCells();
  QVector<int> m_LNodes(m_Nodes.size());
  for (int i = 0; i < m_LNodes.size(); ++i) {
    m_LNodes[i] = i;
  }
  createNodeToNode(m_Cells, m_Nodes, m_LNodes, m_N2N, m_BGrid);

  // create m_Triangles
  m_Triangles.resize(m_BGrid->GetNumberOfCells());
  for (vtkIdType id_cell = 0; id_cell < m_BGrid->GetNumberOfCells(); ++id_cell) {
    m_Triangles[id_cell] = Triangle(m_BGrid, id_cell);
    for (int i = 0; i < 3; i++) {
      int i_cell = _cells[id_cell];
      if (c2c[i_cell][i] < 0) {
        m_Triangles[id_cell].setNeighbourFalse(i);
      } else {
        m_Triangles[id_cell].setNeighbourTrue(i);
      }
    }
  }

  // compute node normals
  m_NodeNormals.resize(m_BGrid->GetNumberOfPoints());
  for (vtkIdType id_node = 0; id_node < m_BGrid->GetNumberOfPoints(); ++id_node) {
    m_NodeNormals[id_node] = vec3_t(0, 0, 0);
  }

  foreach(Triangle T, m_Triangles) {
    double angle_a = GeometryTools::angle(m_BGrid, T.idC(), T.idA(), T.idB());
    double angle_b = GeometryTools::angle(m_BGrid, T.idA(), T.idB(), T.idC());
    double angle_c = GeometryTools::angle(m_BGrid, T.idB(), T.idC(), T.idA());
    if (isnan(angle_a) || isinf(angle_a)) EG_BUG;
    if (isnan(angle_b) || isinf(angle_b)) EG_BUG;
    if (isnan(angle_c) || isinf(angle_c)) EG_BUG;
    if (!checkVector(T.g3())) {
      qWarning() << "T.g3 = " << T.g3();
      EG_BUG;
    }
    m_NodeNormals[T.idA()] += angle_a * T.g3();
    m_NodeNormals[T.idB()] += angle_b * T.g3();
    m_NodeNormals[T.idC()] += angle_c * T.g3();
    if (!checkVector(m_NodeNormals[T.idA()])) EG_BUG;
    if (!checkVector(m_NodeNormals[T.idB()])) EG_BUG;
    if (!checkVector(m_NodeNormals[T.idC()])) EG_BUG;
  }
Example #3
0
void FixSTL::createTriangles(const QList<QVector<vtkIdType> > &triangles, vtkUnstructuredGrid *tetra_grid)
{
  QVector<vtkIdType> cells, nodes;
  QVector<int> _nodes;
  getAllCells(cells, tetra_grid);
  getNodesFromCells(cells, nodes, tetra_grid);
  createNodeMapping(nodes, _nodes, tetra_grid);
  QVector<bool> active(nodes.size(),false);
  foreach (QVector<vtkIdType> T, triangles) {
    active[_nodes[T[0]]] = true;
    active[_nodes[T[1]]] = true;
    active[_nodes[T[2]]] = true;
  };