IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Caml Discussion :

Problème ocaml et sdl


Sujet :

Caml

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 57
    Points : 58
    Points
    58
    Par défaut Problème ocaml et sdl
    Mon projet doit charger une carte de geographie avec pour chaque zone de couleur un relief et la traiter
    je desire désigner une grille avec des diagonales sur l'image.
    voici ma fonction qui trace mes diagos:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    let draw_diag surface (x1, y1) (x2, y2) h =
      begin
    	  let i = ref 0 and dx = (x2 - x1) and dy= (y2 - y1) and rest = ref 0  
    	  and x = ref 0 and y = ref 0 in
    	  	(*Sdlvideo.put_pixel_color surface x1 y1 Sdlvideo.black;*)
    	    	while(!i < dx) do
    	    	  begin
    	    		x := !x + 1;
    	    		rest := !rest + dy;
    	    		if (!rest >= dx) then
    	    		  begin
    	    		  rest := !rest - dx;
    	    		  y := !y + 1;
    	    		  end;
    	    		  Sdlvideo.put_pixel_color surface !x ((h-1)-(!y)) Sdlvideo.black;
    	    	  i := !i +1;	  
    	    	  end	  			      
    		done;
      end
    Je me sert des coodonées des précèdentes droites et colonnes tracées pour la grilles pour definir mes extrémités de diagonales.
    Mon probème est que mes diagonales ne s'affiche jamais la ou je le souhaite!

  2. #2
    Membre éprouvé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    832
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 832
    Points : 1 104
    Points
    1 104
    Par défaut
    Recode tout ça avec des boucles `for`, ça a plus de chance d'être lisibles, et tu verras donc mieux où sont les erreurs.

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for i = truc to bidule do
       print_int i;
       print_string "\t"
    done;
    print_newline ()

  3. #3
    Membre éprouvé
    Avatar de Cacophrene
    Homme Profil pro
    Biologiste
    Inscrit en
    Janvier 2009
    Messages
    535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Biologiste

    Informations forums :
    Inscription : Janvier 2009
    Messages : 535
    Points : 1 125
    Points
    1 125
    Par défaut
    Bonjour,

    Tu peux aussi enlever le begin...end qui délimite le corps de la fonction, car il est inutile (restes de Pascal ? ), essayer d'utiliser moins de références et utiliser des noms de variables un peu plus explicites. Les erreurs seront alors sans doute plus reconnaissables.

    En l'état le code est assez difficile à lire (même pour des caméliens pratiquants).

    Cordialement,

Discussions similaires

  1. Problème avec la SDL
    Par kaled1209 dans le forum SDL
    Réponses: 4
    Dernier message: 11/08/2007, 15h00
  2. Problème avec la SDL
    Par mjfcolas dans le forum SDL
    Réponses: 10
    Dernier message: 24/06/2007, 19h17
  3. Réponses: 10
    Dernier message: 03/03/2007, 13h46
  4. Problème avec la sdl sur devc++
    Par cuicuicui dans le forum SDL
    Réponses: 3
    Dernier message: 07/08/2006, 13h04
  5. probléme avec la sdl et c++
    Par wikers dans le forum OpenGL
    Réponses: 1
    Dernier message: 10/11/2004, 19h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo