assert1

Dependencies:   mbed X_NUCLEO_IHM02A1

chemin.h

Committer:
JimmyAREM
Date:
2019-03-30
Revision:
3:06cbe2f6c494
Parent:
2:977799d72329

File content as of revision 3:06cbe2f6c494:

#ifndef CHEMIN_H
#define CHEMIN_H
// C code to implement Priority Queue 
// using Linked List 
// https://www.geeksforgeeks.org/priority-queue-using-linked-list/

// C code for path fining 
// https://github.com/AtsushiSakai/PythonRobotics

//Exemple: 
/*
int vitesse_deplacement = 200;

calc_distances(20,180,270,180);   //x_départ , y_arrivée , x_arrivée, y_arrivée
Node* commandes = (Node*)malloc(sizeof(Node));
commandes = traduction_points_commandes(trouver_chemin(20,180,270,180)); 
while(!isEmpty(&commandes)){ 
    int angle,distance_avancement_cm,_ = 0;
    peek(&commandes,&angle,&distance_avancement_cm,&_);     //on recupere les infos du point
    pop(&commandes);
    printf("rotation %d, avancement de %d\n",angle,distance_avancement_cm);
    if(distance_avancement_cm != 0 && angle != 0) {
        test_ligne_droite(10*distance_avancement_cm, vitesse_deplacement); 
        test_rotation_rel(angle,vitesse_deplacement);
    }
}
*/


#include <stdio.h>
#include <stdlib.h> 
#include <time.h>



  
// Node 
typedef struct node { 
    int x;
    int y;
    int distance; 
  
    // Lower values indicate higher priority 
    int priority; 
  
    struct node* next; 
  
} Node; 
  
// Function to Create A New Node 
Node* newNode(int x , int y, int distance, int p);
  
// Return the value at head 
void peek(Node** head, int*x, int*y, int*distance);
  
// Removes the element with the 
// highest priority form the list 
void pop(Node** head);

// Function to push according to priority 
void push(Node** head, int x, int y, int distance, int p);

// Function to check is list is empty 
int isEmpty(Node** head);


void calc_distances(int ox, int oy, int gx , int gy); //ogigine, goal

Node* trouver_chemin(int ox, int oy, int gx , int gy); //retourne une suite de points ,  du point de départ au point d'arrivé en évitant les obstacles

Node* traduction_points_commandes(Node* pq);

void afficher_terrain();
void afficher_terrain(Node* commandes);

int conversion_codage_angles(int o);


void aller_a_point(int ox , int oy, int gx , int gy , int vitesse_deplacement = 100);

#endif