Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1189 connectés 

 


 Mot :   Pseudo :  
 
 Page :   1  2  3
Page Suivante
Auteur Sujet :

[scheme] Soyez futés: utilisez scheme

n°1157282
Chronoklaz​m
Posté le 22-07-2005 à 15:06:58  profilanswer
 

Reprise du message précédent :
Cool !  :jap:  
 
J'ai remarqué que lorsqu'on arrete l'execution de (anim vect-dx) la fenetre des interactions est bloqué (meme probleme du sleep/yield que pour le pacman) ... donc un petit rafistolage s'impose :
 
(require (lib "draw.ss" "htDP" ))
 
(define vect-dx 50)
(define vect-dy 70)
(define sleep 0.03)
(define (anim vect-dx)
  (thread (lambda()
            (if(= vect-dx 300)
               (stop)
               (begin
                 (clear-all)  
                 (draw-solid-rect(make-posn vect-dx vect-dy) 50 70 'blue)
                 (sleep/yield sleep)            
                 (anim (+ vect-dx 1)))))))
(start 300 200)
(anim vect-dx)
 
Sinon y quelques sacades lors du déplacement ... à mon avis ca vient du temps de pause.


Message édité par Chronoklazm le 22-07-2005 à 15:07:54

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
mood
Publicité
Posté le 22-07-2005 à 15:06:58  profilanswer
 

n°1157490
le_courtoi​s
Posté le 22-07-2005 à 17:59:48  profilanswer
 

Salut,
  Ouaip, j'ai aussi les soucis des saccades, et je ne vois pas encore comment le règler. C'est effecitvement un souci au niveau de la gestion du temps, mais je bloque pour l'instant, puisque changer la valeur de "sleep" ne change pas grand chose (ni avec le pas d'incrémentation des x). D'un autre côté, c'était ma première animation, aussi.
  Dans le même ordre d'idée, dans collects il y a un repertoire Frtime dans lequel il y a des démos. Ils semblent gérer le temps et les infos de type séquentielles de manière assez particulière. Malheureusement, je trouve que ça sort trop duScheme standard. C'est un langage "adapté" au type scheme. Dommage.  
  Sinon, il y a-t-il moyen de faire eu buffering (voila ma définition: précalculer les image et le afficher ensuite). Ca règlerai peut-être les saccades. Là, je pédale un peu dans la choucroute.
 
  Allez, à +

n°1157514
Chronoklaz​m
Posté le 22-07-2005 à 18:17:59  profilanswer
 

J'arrive pas trop à faire marcher les demos de FrTime ... t'as reussi toi ?
 
Sinon je pense qu'il faudrait descendre plus bas dans l'abstraction pour avoir acces au dc et au canvas directement car la draw.ss donne vraiement que le strict necessaire.


Message édité par Chronoklazm le 22-07-2005 à 18:18:32

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1157517
le_courtoi​s
Posté le 22-07-2005 à 18:21:12  profilanswer
 

Ouaip. Mais aussi,la pacman scintille lorsque tu mets une image en arrière plan. Et en plus, il triche, car il a mis un carré blanc autour de l'image, ce qui fait que sur fond blanc, le contour efface l'image précédente (une instruction en moins:l'effacement).
 
  Pour le frtime, il faut que tu règle ton langage à Frtime puis standard. Quand tu lances les démos, c'est nickel.


Message édité par le_courtois le 22-07-2005 à 18:21:56
n°1157553
le_courtoi​s
Posté le 22-07-2005 à 19:10:19  profilanswer
 

Je viens de trouver ça:
http://cboard.cprogramming.com/showthread.php?t=51219
 
  Allez, au boulot! :D

n°1157963
Chronoklaz​m
Posté le 23-07-2005 à 17:09:18  profilanswer
 

Sympa le snake, sauf que :
 - ça scintille pareil que nous
 - le carré rouge apparait toujours au meme endroit
 
Sinon c'est good.
 
EDIT : j'ai un peu lu le post du gars ... le mec il croit qu'en faisant que des fonctions recursives il fait du LISP  :lol:


Message édité par Chronoklazm le 23-07-2005 à 17:10:56

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1160878
le_courtoi​s
Posté le 26-07-2005 à 23:22:05  profilanswer
 

Salut tout le monde!
 
  Ca y est, je vous abandonne. Juste le temps de quelques vacances bien méritées :) . Retour après le 22 Août. Il n'y a pas d'internet où je vais (déjà l'éléctricité,...). Travaillez bien, mettez pas trop le brun et bonnes vacances, pour ceux (et celles) qui en ont, des vacances. Donc, quand je rentre, je pourrai jouer à un street fighter like ? :D  De toute manière, je suis déjà parti -->[ ]  :hello:

n°1195888
le_courtoi​s
Posté le 09-09-2005 à 13:05:10  profilanswer
 

:hello:  
  Voilà, je suis revenu et le topic n'est pas mort (pas encore). Cependant, il risque d'y avoir vacance de ma part au moins pour le mois de septembre (boulot oblige), du moins pour la production de code.  
  Comme d'hab n'hésitez pas à poser des questions,...
 Alors, un peu de patience et toutes nos excuses à ceusses et à celles qui nous suivent régulièrement.
A+

n°1215097
chato_dur
Posté le 05-10-2005 à 01:35:44  profilanswer
 

Salut,  
 
Je vois que ca parle de scheme alors je fais un up, j'aimerai implementer un type abstract pile et file, avec les "methodes" classique,  pop, push, size, isempty, ajouter en tete, ajouter en queue etc.  
 
J'ai commence, mais je n'arrive pas a implementer la fonction size, ca doit pas etre violent, ma pile se base sur une liste que je parcours et qui me dit combien y a delement ds celle ci.  
 
Qq un pourrait me donner un coup de main pour cette fonction svp ? Ou alors si vous avez un source avec les methodes classique d'une pile et file, ca m'arrangerait (jutilise juste les trucs de bases pour les listes genre CDR CAR etc)
 
Merci :)

n°1215400
le_courtoi​s
Posté le 05-10-2005 à 12:54:43  profilanswer
 

Salut,
  Alors, à brule pourpoint, la fonction (length liste) ne conviendrait-elle pas pour avoir la longueur de ta pile, vu que c'est une liste?
 ex:

(define (pile!:essai) '(1 2 3))
(length (pile!:essai))
3  
(pile!:depiler (pile!:essai))
(length (pile!:essai))
2

Ai-je répondu à ta question ?  Si SIZE correspond bien à la taille de la pile. Sinon repose ta question et un bout de code, on verra.
Salut.

mood
Publicité
Posté le 05-10-2005 à 12:54:43  profilanswer
 

n°1215541
chato_dur
Posté le 05-10-2005 à 14:22:48  profilanswer
 

Salut, merci de ton aide le_courtois, en fait j'ai fini par trouver, je me compliquais comme un fou :  
 
(define (size lst)
  (if (null? lst)
      0
      (+ 1 (size (cdr lst)))))  
 
je tenais absolument a passer par une vaiable locale, je sais pas pourquoi... Ca change vraiment de la programmation procedurale.

n°1216095
le_courtoi​s
Posté le 05-10-2005 à 23:48:00  profilanswer
 

Bonsoir à tous !
  Nous nous étions quittés sur le problème de l'animation. Quelques exemples avaient été portés à votre attention, mais chacun comportait des défauts. Nous avions cependant proposé des exemples quelque peu fluides, mais dans graphisme simple (carrés,...).
  En fait, je n'ai pu contourner aucune de ces difficultés, mais il semble, à en lire ce qui est écrit  sur la toile, que nous ne soyons pas les seuls. Un contournement possible serait de faire appel à des bibliothèques externes (comme l'exemple de Chronoklazm en Opengl). Je suis trop nul pour cela, alors je persévère.
  A l'heure actuelle, je suis bien loin du double buffering, mais un pas décisif dans la synchronisation entre le balayage et l'affichage vient d'être fait. il n'est pas de moi, vous vous en doutez, mais il mérite attention. Pour vous en persuader, voici un petit exemple de code dans lequel nous allons mettre en compétition un canvas dans lequel ont été synchronisés l'affichage et le balayage et un où c'est un buffer simple qui est créé. Je tiens à dire que je ne comprends pas forcément tout, mais vous peut-être.

;; les librairies habituelles
(require(lib "mred.ss""mred" )
        (lib"class.ss" )
        (lib "thread.ss" ))
;; step-time: contrôle la vitesse de l'animation
(define step-time 0.01)
 
;;la taille du bitmap
;;contrôle la taille de l'animation et de l'offscreen buffer (?)
(define bitmap-size 100)
;;ici, on s'assure de ne pas dessiner l'image en meême temps que nous la rafarîchissons
(define drawing-mutex (make-semaphore 1))
 
;;l'animation
(define (animate)
  (update-state-variables); ce sont les variables du "monde" créé (en gros, la trajectoire)
  (call-with-semaphore  ;; là, je laisse les experts comprendre
   drawing-mutex
   (lambda()
     (draw-animation bdc)))
  (queue-callback
   (lambda()
     (send ani-canvas on-paint)
     (send buf-canvas on-paint)
     ))
  (sleep step-time)
  (animate))
 
;les variables de l'animation
(define sign 1)
(define step 50)
;;offscreen buffer et son drawing context (j'arrive pas à traduire)
(define bm(make-object bitmap% bitmap-size bitmap-size))
(define bdc(make-object bitmap-dc% bm))  
 ;;change les variables du "monde"
(define(update-state-variables)
  (set! step(+ step sign))
  (cond
    [(= step 0)
    (set! sign 1)]
    [(= step bitmap-size)
    (set! sign -1)]))
 
;;dessine l'état courant des variables de l'animation
(define (draw-animation dc)
  (send dc clear)
  (sleep (/ step-time 3))
  (send dc draw-rectangle (quotient step 2)
        (quotient step 2)
        (quotient step 2)
        (quotient step 2)))
 
 
(define f(instantiate frame% ()
           (label "essai" )))
 
(define ani-canvas(instantiate canvas% ()
                   (parent f)
                   (min-width bitmap-size)
                   (min-height bitmap-size)
                   (paint-callback  ;c'est par là que ça se passe
                    (lambda(b dc)
                    (call-with-semaphore
                     drawing-mutex
                     (lambda()
                       (send dc draw-bitmap bm 0 0)))))))
 
(define buf-canvas(instantiate canvas% ()
                              (parent f)
                              (min-width bitmap-size)
                   (min-height bitmap-size)
                   (paint-callback
                    (lambda (b dc)(draw-animation dc)))))
                               
(send f show #t)
(thread animate)


  Alors? Bien entendu, l'auteur en sera remercié.
 Les saccades que vous pouvez remarquer sont, à mon avis, un problème d'optimisation du code. Il doit y avoir qq part saturation de la mémoire. On peut donc encore faire mieux.
  Dans cette optique, deux voies s'offrent à nous: le double buffering (un volontaire  :ange: ) ou alors, j'ai cru lire que l'on pouvait ne rafraîchir qu'une partie de l'image (à voir).
  Maintenant, vous pouvez tester avec des images plus jolies. Il vous suffit de les déclarer ici:

;;offscreen buffer et son drawing context (j'arrive pas à traduire)
-->(define image(make-object bitmap% "votre_image_de_fond" ))
-->(define fond(make-object bitmap% "votre_objet_qui_se_deplace" ))
(define bm(make-object bitmap% bitmap-size bitmap-size))
(define bdc(make-object bitmap-dc% bm))


 et d'en demander l'affichage comme cela:

(define (draw-animation dc)
  (send dc clear)
  (sleep (/ step-time 3))
  (send dc draw-bitmap fond 0 0 'solid)  
(send dc draw-bitmap image (quotient step 2)(quotient step 2) 'solid))


  On désactive le buf-canvas qui ne nous sert plus à rien: donc on vire le (define buf-canvas) sans oublier d'effacer aussi l'appel qui lui est fait dans la fonction (animate).
   A bientôt. Et n'hésitez surtout pas si vous pouvez nous aider.

n°1223666
stayle_xer​cor
Posté le 15-10-2005 à 12:02:25  profilanswer
 

Up le beau topic !
Je viens de commencer Scheme à la fac, donc je squatterai souvent dans le coin

n°1223834
chato_dur
Posté le 15-10-2005 à 21:00:41  profilanswer
 

tu vas en chier ;D  ce langage est horrible, je viens darreter den faire, jattaque le prolog, c'est tout aussi horrible, bon courage :)

n°1223869
stayle_xer​cor
Posté le 16-10-2005 à 00:16:27  profilanswer
 

merci lol
Pour l'instant, à part sur les alternatives que je trouve particulièrement chiant ça va, on va voir avec la suite :(

n°1223883
Chronoklaz​m
Posté le 16-10-2005 à 00:57:50  profilanswer
 

chato_dur a écrit :

tu vas en chier ;D  ce langage est horrible, je viens darreter den faire, jattaque le prolog, c'est tout aussi horrible, bon courage :)


 
Si ta fait du amb en Scheme t'aura pas de souci pour le prolog ...
 

stayle_xercor a écrit :

merci lol
Pour l'instant, à part sur les alternatives que je trouve particulièrement chiant ça va, on va voir avec la suite :(


 
Tant qu'on te demande pas des trucs genre "refaire scheme en scheme" ou "reprogrammer le Garbage Collector" ca va :) Sinon vous en êtes ou là dans la découverte de ce monde rempli de paretheses  ?
 
Si ta des questions n'hesite pas ...  
 
<<Programming should be fun. Programs should be beautiful.>>


Message édité par Chronoklazm le 16-10-2005 à 00:58:34

---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1224106
stayle_xer​cor
Posté le 16-10-2005 à 20:44:09  profilanswer
 

J'en suis aux fonctions récursives  
et puis on fait quelques exos
En fait je bloque quand même pas mal sur les exos ou on demande d'afficher des choses, la géométrie, tout ca :o

n°1224140
le_courtoi​s
Posté le 16-10-2005 à 22:51:45  profilanswer
 

Bonsoir tout le monde,
Ah le début des cours, souvenirs...
Si vous avez des questions, n'hésitez pas. Par contre, peut-être cela serait-il intéressant de créer des topics pour chaque question précise, comme cela, on pourra faire une sorte de FAQ sous forme de liens. Quand j'aurai fait le ménage, d'ici un an ou deux  :ange: .
Oups: bienvenue à tous.
Edit: ça intéresserait qqn une intro à opengl avec drscheme. Si oui, qqn pourrait-il m'aider? Je commence à m'y mettre et,....c'est pas gagné.


Message édité par le_courtois le 16-10-2005 à 22:53:34
n°1233890
Chronoklaz​m
Posté le 28-10-2005 à 21:46:41  profilanswer
 

Hoy !
 
Alors les schemeurs ... toujours en vie  ?


---------------
Scheme is a programmable programming language ! I heard it through the grapevine !
n°1234062
le_courtoi​s
Posté le 29-10-2005 à 12:52:56  profilanswer
 

Hey,
  Mouaip, plutôt en état végétatif. Je sais plus par où commencer donc je n'avance pas. Rien de bien neuf à mettre sous la dent des lecteurs. Les anims, j'y comprend rien, qq pistes mais difficile à mettre en oeuvre, quant au reste... Peut être une petite explication sur la récursivité avec des trucs de noob (comme j'avais fait pour les car et cdr), mais sans grande conviction. Mais bientôt, je m'y remet.  
   Par contre, qqn peut m'expliquer la différence entre ces deux styles de prog (d'après ce que je comprends): dans le tuto Scheme-opengl proposé sur le site NeHe, l'auteur calcule d'abord son monde et envoye la commande d'affichage, alors que dans d'autre exemples (le cannonier ou ton élastique), les modifs sont contenues dans l'affichage en en prenant le contrôle (override machin). Laquelle est la plus mieux, sachant que je pense m'y retrouver plus dans la première (cad on calcule les changements et on envoi l'affichage).
   A+

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3
Page Suivante

Aller à :
Ajouter une réponse
 

Sujets relatifs
Realisation d'un interprete Scheme en C[scheme] Renom: Ajouter une ligne à une matrice
[Divers][Scheme] Rediriger le read ...pemier post dans "prog"alors soyez indulgents!!!
[Scheme] Redimensionnement de panel dans un frameA quand un topic Lisp/Scheme/Caml ?
[Lisp] (Scheme) EXPR->LambaPPCM en Scheme (Lisp)
Scheme. Affichage inattendu d'une apostrophe.Comment utilisez vous les en-têtes et pieds de pages ?
Plus de sujets relatifs à : [scheme] Soyez futés: utilisez scheme


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR