Difference between revisions of "Projets:Perso:2011:TortueSimple"

From Electrolab
Jump to: navigation, search
(Retravaille le principe général du jeu)
(Détaille les fonctionnalités)
Line 3: Line 3:
 
|author= Clément/Martin
 
|author= Clément/Martin
 
|proposal_date= 08/06/2011
 
|proposal_date= 08/06/2011
|abstract1=Dédramatiser la programmation grâce à des ptites tortues (à la LOGO) qui courent partout par terre en s'inspirant d'un petit jeu con (http://www.robozzle.com/), mais sans ordinateur visible. Pour cela :
+
|abstract1=Dédramatiser la programmation grâce à des ptites tortues (à la LOGO) qui courent partout par terre en s'inspirant d'un petit jeu con (http://www.robozzle.com/), mais sans ordinateur visible. Pour cela il faut :
 
|abstract2=- fabriquer une tortue (au sens LOGO) simple,
 
|abstract2=- fabriquer une tortue (au sens LOGO) simple,
 
|abstract3=- fabriquer des dalles adaptées pour qu'elle s'y déplace
 
|abstract3=- fabriquer des dalles adaptées pour qu'elle s'y déplace
|abstract4=- fabriquer une console de commande et une interface de "programmation"
+
|abstract4=- fabriquer une console de commandes et une interface de "programmation"
 
|tags=PPC
 
|tags=PPC
 
|where=Anywhere
 
|where=Anywhere
Line 18: Line 18:
  
 
=Introduction=
 
=Introduction=
Donne un appercu des tenants et aboutissants du projet.
 
==Objectifs==
 
 
Beaucoup de gens pensent que pour Programmer un Ordinateur (avec les majuscules), il faut être une sorte de magicien moderne, capables d'une sorte de karaté mental à la Matrix pour parvenir à dompter une sorte de Deus Ex Machina grandiosement transandant comparable à HAL dans l'odyssé de l'espace, alors que non, pas du tout. En fait, ca demande bien des contorsions mentales, mais c'est qu'il faut parvenir à simplifier, simplifier et simplifier ses ordres pour les rendre compréhensibles par un vulgaire tas de fil dépourvu de toute jugeotte...
 
Beaucoup de gens pensent que pour Programmer un Ordinateur (avec les majuscules), il faut être une sorte de magicien moderne, capables d'une sorte de karaté mental à la Matrix pour parvenir à dompter une sorte de Deus Ex Machina grandiosement transandant comparable à HAL dans l'odyssé de l'espace, alors que non, pas du tout. En fait, ca demande bien des contorsions mentales, mais c'est qu'il faut parvenir à simplifier, simplifier et simplifier ses ordres pour les rendre compréhensibles par un vulgaire tas de fil dépourvu de toute jugeotte...
  
 +
==Objectifs==
 
L'objectif de ce projet est de mettre au point des outils permettant de réaliser des animations visant à dédramatiser la programmation en permettant à des débutants complets (jeunes et moins jeunes) de programmer un petit robot inspiré des tortues LOGO dans un environnement un peu ludique.  
 
L'objectif de ce projet est de mettre au point des outils permettant de réaliser des animations visant à dédramatiser la programmation en permettant à des débutants complets (jeunes et moins jeunes) de programmer un petit robot inspiré des tortues LOGO dans un environnement un peu ludique.  
  
Line 31: Line 30:
 
Comme les tortues LOGO, l'objectif est de permettre aux débutants de comprendre que programmer, c'est donner des ordres très simples à des composants techniques très bêtes. On ajoute des idées venus du jeu robozzle pour ajouter une finalité plus forte aux programmes développés avec le robot. On ne fait plus un programme pour faire un programme, mais on le fait pour résoudre un problème donné (c'est à dire un niveau du jeu).
 
Comme les tortues LOGO, l'objectif est de permettre aux débutants de comprendre que programmer, c'est donner des ordres très simples à des composants techniques très bêtes. On ajoute des idées venus du jeu robozzle pour ajouter une finalité plus forte aux programmes développés avec le robot. On ne fait plus un programme pour faire un programme, mais on le fait pour résoudre un problème donné (c'est à dire un niveau du jeu).
  
Le principe du jeu est basé sur un petit robot (donc) qui parcourt un monde simple composé d'une grille de cases. L'objectif du jeu est d'amener le robot à passer sur certaines cases du monde. Pour cela, on donne dispose de 3 ordres possibles: avance, tourne de 90° à gauche et tourne de 90° à droite. C'est tout. Ensuite, on peut écrire jusqu'à 6 fonctions (des suites nommées d'ordres) pour grouper les ordres ensemble, ce qui donne 6 ordres de plus : f1 à f6 pour appeller les fonctions. Enfin, il est possible de donner une couleur à un ordre donné. Par exemple, si on dit "avance rouge", le robot n'avancera que s'il se trouve sur une dalle rouge au moment de l'exécuter. Sinon, l'ordre est simplement ignoré et on passe à l'ordre suivant du programme. Au début du niveau, certaines cases contiennent des étoiles, qui disparaissent dès que le robot passe sur la case en question. Le niveau est gagné dès la disparition de la dernière étoile, même si le programme n'est pas fini (s'il reste des instructions à exécuter).
+
Le principe du jeu est basé sur un petit robot (donc) qui parcourt un monde simple composé d'une grille de cases. L'objectif du jeu est d'amener le robot à passer sur certaines cases du monde. Pour cela, on donne dispose de 3 ordres possibles: avance, tourne de 90° à gauche et tourne de 90° à droite. C'est tout. Ensuite, on peut écrire jusqu'à 6 fonctions (des suites nommées d'ordres) pour grouper les ordres ensemble, ce qui donne 6 ordres de plus : f1 à f6 pour appeller les fonctions. Enfin, il est possible de donner une couleur à un ordre donné. Par exemple, si on dit "avance rouge", le robot n'avancera que s'il se trouve sur une dalle rouge au moment de l'exécuter. Sinon, l'ordre est simplement ignoré et on passe à l'ordre suivant du programme. Au début du niveau, certaines cases contiennent des étoiles, qui disparaissent dès que le robot passe sur la case en question. Le niveau est gagné dès la disparition de la dernière étoile, même si le programme n'est pas fini (s'il reste des instructions à exécuter). Si le robot "tombe", c'est à dire va dans des cases sans dalle, le niveau est perdu.
  
 
L'interface du jeu est donc très simple en apparence. La mécanique du jeu (la motivation des joueurs) vient du fait que les programmes que l'on peut écrire sont de taille bornée. Cela force à factoriser les choses, et constitue un petit casse-tête sympatique. Il est également possible de faire des niveaux beaucoup plus avancés, où une maîtrise avancée de la récursivité (par exemple) est indispensable, mais c'est un peu hors sujet ici.
 
L'interface du jeu est donc très simple en apparence. La mécanique du jeu (la motivation des joueurs) vient du fait que les programmes que l'on peut écrire sont de taille bornée. Cela force à factoriser les choses, et constitue un petit casse-tête sympatique. Il est également possible de faire des niveaux beaucoup plus avancés, où une maîtrise avancée de la récursivité (par exemple) est indispensable, mais c'est un peu hors sujet ici.
  
 
==Fonctionnalités==
 
==Fonctionnalités==
* Taille du "monde": 14x14 dalles
+
Les caractéristiques générales du jeu sont les suivantes: La grille du monde est toujours inférieure à 14x14 dalles. Chaque dalle est soit rouge, soit verte, soit bleue. Certaines dalles portent des étoiles qui s'éteignent quand la tortue passe.
* 3 ordres, 5/6 fonctions, chacun en 4 couleurs (incolore, bleu, vert et rouge)
+
La tortue accepte au maximum 6 fonctions de 10 instructions chacunes.
* programmation: 6 lignes de 10 ordres
+
 
 +
En plus de la localisation des dalles et des étoiles, chaque niveau spécifie la quantité d'instructions que la tortue admet. Par exemple, http://www.robozzle.com/js/play.aspx?puzzle=23 restreint à une seule fonction, de seulement 4 instructions au maximum.
  
 
Certaines choses possibles dans le jeu sur le site ne seront pas possibles à priori. En particulier, on ne prévoit pas d'autoriser à changer la couleur des dalles.
 
Certaines choses possibles dans le jeu sur le site ne seront pas possibles à priori. En particulier, on ne prévoit pas d'autoriser à changer la couleur des dalles.

Revision as of 09:50, 23 June 2011

Turzzle
Auteur Clément/Martin
Date de proposition 08/06/2011
Tags du projet PPC
Lieu d'utilisation final Anywhere
Utilisateur final Youngsters
Type de projet

Projet personnel de Clément/Martin

Projet Turzzle

Dédramatiser la programmation grâce à des ptites tortues (à la LOGO) qui courent partout par terre en s'inspirant d'un petit jeu con (http://www.robozzle.com/), mais sans ordinateur visible. Pour cela il faut :
- fabriquer une tortue (au sens LOGO) simple,
- fabriquer des dalles adaptées pour qu'elle s'y déplace
- fabriquer une console de commandes et une interface de "programmation"



Introduction

Beaucoup de gens pensent que pour Programmer un Ordinateur (avec les majuscules), il faut être une sorte de magicien moderne, capables d'une sorte de karaté mental à la Matrix pour parvenir à dompter une sorte de Deus Ex Machina grandiosement transandant comparable à HAL dans l'odyssé de l'espace, alors que non, pas du tout. En fait, ca demande bien des contorsions mentales, mais c'est qu'il faut parvenir à simplifier, simplifier et simplifier ses ordres pour les rendre compréhensibles par un vulgaire tas de fil dépourvu de toute jugeotte...

Objectifs

L'objectif de ce projet est de mettre au point des outils permettant de réaliser des animations visant à dédramatiser la programmation en permettant à des débutants complets (jeunes et moins jeunes) de programmer un petit robot inspiré des tortues LOGO dans un environnement un peu ludique.

La ligne éditoriale du projet est de cacher la technologie autant que possible pour éviter d'effrayer les nouveaux venus: pas de tape à l'oeil, on cherche à faire low tech, au moins en apparence. En particulier, il ne faut ni écran ni clavier visible.

L'objectif n'est PAS d'enseigner la programmation à proprement parlé, car cele serait difficile voire impossible d'atteindre cet objectif tout en collant à l'idée de jeu simple ciblant les débutants absolus.

Principes

Comme les tortues LOGO, l'objectif est de permettre aux débutants de comprendre que programmer, c'est donner des ordres très simples à des composants techniques très bêtes. On ajoute des idées venus du jeu robozzle pour ajouter une finalité plus forte aux programmes développés avec le robot. On ne fait plus un programme pour faire un programme, mais on le fait pour résoudre un problème donné (c'est à dire un niveau du jeu).

Le principe du jeu est basé sur un petit robot (donc) qui parcourt un monde simple composé d'une grille de cases. L'objectif du jeu est d'amener le robot à passer sur certaines cases du monde. Pour cela, on donne dispose de 3 ordres possibles: avance, tourne de 90° à gauche et tourne de 90° à droite. C'est tout. Ensuite, on peut écrire jusqu'à 6 fonctions (des suites nommées d'ordres) pour grouper les ordres ensemble, ce qui donne 6 ordres de plus : f1 à f6 pour appeller les fonctions. Enfin, il est possible de donner une couleur à un ordre donné. Par exemple, si on dit "avance rouge", le robot n'avancera que s'il se trouve sur une dalle rouge au moment de l'exécuter. Sinon, l'ordre est simplement ignoré et on passe à l'ordre suivant du programme. Au début du niveau, certaines cases contiennent des étoiles, qui disparaissent dès que le robot passe sur la case en question. Le niveau est gagné dès la disparition de la dernière étoile, même si le programme n'est pas fini (s'il reste des instructions à exécuter). Si le robot "tombe", c'est à dire va dans des cases sans dalle, le niveau est perdu.

L'interface du jeu est donc très simple en apparence. La mécanique du jeu (la motivation des joueurs) vient du fait que les programmes que l'on peut écrire sont de taille bornée. Cela force à factoriser les choses, et constitue un petit casse-tête sympatique. Il est également possible de faire des niveaux beaucoup plus avancés, où une maîtrise avancée de la récursivité (par exemple) est indispensable, mais c'est un peu hors sujet ici.

Fonctionnalités

Les caractéristiques générales du jeu sont les suivantes: La grille du monde est toujours inférieure à 14x14 dalles. Chaque dalle est soit rouge, soit verte, soit bleue. Certaines dalles portent des étoiles qui s'éteignent quand la tortue passe. La tortue accepte au maximum 6 fonctions de 10 instructions chacunes.

En plus de la localisation des dalles et des étoiles, chaque niveau spécifie la quantité d'instructions que la tortue admet. Par exemple, http://www.robozzle.com/js/play.aspx?puzzle=23 restreint à une seule fonction, de seulement 4 instructions au maximum.

Certaines choses possibles dans le jeu sur le site ne seront pas possibles à priori. En particulier, on ne prévoit pas d'autoriser à changer la couleur des dalles.

Partie software

Juste du soft embarqué a priori, rien de bien sorcier...

Partie Hardware

Très probablement, pour la tortue: - deux servos modifiés pour la rotation continue - carte arduino/version customisée - capteurs de ligne (par exemple CNY70, ou équivalent en moins cher) - liaison radio (Xbee ou full custom) - de quoi communiquer avec les dalles (IR) - peut etre capteur de couleur (http://www.sparkfun.com/products/10656 par exemple, à tester) - logement pour piles AA/9v

Pour les dalles: - une inspiration du hw du zombie badge du NYC : http://www.buildbrighton.com/images/7/7c/BuildBrighton_badge_instructions-web.pdf - mécaniquement, assemblage comme des pièces de puzzle - marquage de lignes (croix noires) pour aider au déplacement de la tortue (peinte, "imprimées" au laser, scotch d'électricien, ...)

Tous les éléments structurels seraient à fabriquer en MDF découpés au laser (voir FR4, si c'est possible ???)

Ressources

TODO


Réalisation

Rassemble un ensemble de ressources décrivant les étapes du projet, et aidant à organiser le travail en cours

Questions ouvertes/problèmes

Soft pour la conception de pièces

  • L'approche par découpe laser semble intéressante pour faire les pièces méca. Voir contact Electrolab
  • Nécessité de trouver/maitriser un logiciel de CAO pour concevoir les pièces. Prise en mains de FreeCAD en cours.


Simplicité de l'ensemble

  • Est-ce qu'il ne serait pas plus approprié de directement faire une "vraie" tortue LOGO, et de voir ce jeu comme un "mode" d'utilisation ?
    • probleme, une tortue logo véritable est en soi nettement plus complexe, plus chère, etc
  • dimensions appropriées ?
  • cout de revient ?
  • facilité d'utilisation ?

Macro planning

  • discuter des features & solutions techniques envisagées : done
  • évaluer les possibilités de fabrication (découpe laser, etc) : en cours
  • fabriquer un 1er proto de tortue, un petit ensemble de dalles pour validation
  • fabriquer un ou plusieurs sets complets

Etat d'avancement

Prochaines actions/en cours

Fabrication

  • Questions en cours auprès du contact qui peut faire des pièces en découpe laser
  • Eval du soft pour concevoir les pièces meca

Electronique

  • Ebauche système & gel des features électroniques en cours


Résultats

Permet de capitaliser sur le travail effectué: l'utiliser, le reproduire, l'améliorer, ...