Étape 6: Simple axée sur la tortue dessin
Un moyen particulièrement simple pour dessiner dans Minecraft est d’utiliser un système de tortue. J’ai fait une classe très simple tortue (inspirée par MinecraftTurtle classe, mais conçu pour une utilisation autonome de Martin O'Hanlon) que j’ai l’intention d’utiliser cet été pour présenter middle - et -lycéens de script python de Minecraft.
Démarre un monde Minecraft en mode créatif et rendre votre lecteur voler (espace double-clic). Initialiser le script avec :
(J’ai enveloppé tout le code de connexion de Minecraft à l’intérieur de la classe de tortue et elle apporte aussi des mathématiques dans l’espace de noms pour plus de commodité). Vous pouvez maintenant faire des choses comme t.go(15) pour dessiner une ligne tout en mouvement vers l’avant, 15 blocs t.right(45) pour faire pivoter de 45 degrés vers la droite, t.down(30) pour faire pivoter de 30 degrés vers le bas et ainsi faire des dessins simples.
Vous vous déplacez avec la tortue car elle s’inspire, qui est amusant, et la tortue commence où le joueur est, pointant horizontalement.
Par exemple, vous pouvez tracer un carrΘ horizontal avec :
Vous faites une étoile 7-face en faisant :
sept fois. Ou juste une fois dans une boucle :
Vous pouvez modifier les matériaux avec penblock(). Par exemple, une étoile dorée verticale :
Et vous pouvez modifier la largeur du stylet avec penwidth(x). Par exemple, cela dessine un beignet de verre très simple (en fait, un 90-gon épaissie, mais qui peut faire la différence?) :
Voici toutes les méthodes disponibles :
- go(x) : passer x blocs vers l’avant (dessin si le stylo est en panne)
- back(x) : move x blocs vers l’arrière (dessin si le stylo est en panne)
- penup() : reprendre la pause dessin dessin
- left(angle) : faire pivoter à gauche de l’angle (en degrés)
- right(angle) : tourner à droite en angle (en degrés)
- up(angle) : faire pivoter vers le haut de l’angle (en degrés) ; les débutants ne devraient pas mélanger la gauche/droite et haut/bas rotations ou ils peuvent obtenir des résultats inattendus (note technique : le même que pitch(angle))
- down(angle) : faire pivoter vers le bas par l’angle (en degrés) (note technique : le même que pitch(-angle))
- pendelay(x) : chaque mouvement ou la rotation de la tortue est retardée de x secondes ; valeur par défaut est de 0,05 ; la valeur zéro pour beaucoup dessin plus rapide (le joueur se déplace toujours avec chaque ligne tracée, mais instantanément de bout en bout)
- angle(x) : set angle horizontal à x (dans le sens horaire en degrés; 0 = Sud, 90 = Ouest, 180 = Nord, 270 = East) ; réinitialise l’angle de roulis
- verticalangle(x) : x la valeur angle vertical (en degrés ; vers le haut est positif ; 90 = verticalement vers le haut ; -90 = verticalement vers le bas) ; réinitialise l’angle de roulis
- angles(compass,vertical,roll) : régler Compas, verticale et rouler les angles ; les arguments omis sont pris à zéro
- penblock(x) : matériel pour le dessin de bloquer la valeur x ; pour obtenir la liste des blocs prédéfinis, consultez mcpi/block.py
- goto(x,y,z) : sur la position du crayon (x, y, z) ; vous pouvez également accéder à la position de t.position.x, t.position.y et t.position.z
- follow() : le joueur suit la tortue
- nofollow() : le joueur ne suit pas la tortue
- turtle(x) : si x est joueur, c’est le même que follow(), et si x n’est rien, c’est le même que nofollow(). Si vous utilisez le Mod de confiture de framboise, vous pouvez également utiliser d’autres entités que vous-même comme la tortue. Par exemple, turtle(HORSE) engendre un cheval à utiliser comme une tortue (toutes les entités disponibles sont répertoriées dans mcpi/entity.py, mais la vie sont meilleures que d’autres sont incapables de faire de la lévitation ; et le Dragon de Ender ne peuvent être contrôlé). L’entité reste une fois le script terminé. Pour la faire disparaître, composez le turtle(None) ou turtle(PLAYER).
- penwidth(x) : x la largeur du trait : valeur (par défaut est 1; plus larges traits ralentissent le dessin et si suivre mode est activé, vous pouvez vous retrouver pris au piège à l’intérieur de la course, donc à la fin, vous devez appeler penup() et retour sur le dessin)
- Pitch(x), yaw(x) et roll(x): faire pivoter la tortue par les angles de lacet/tangage/roulis (voir étape suivante de Instructable)
- startface() et endface(): départ et arrivée à dessiner un polygone convexe rempli
- push() et pop(): enregistrer et restaurer l’état de dessin (direction, matériel, statut de visage, épaisseur ; mais pas de vitesse ou tortue de type) ; utile pour les L-systèmes
- gridalign(): aligner la direction actuelle de position et de la tortue à la grille (la meilleure approximation de la direction actuelle de la tortue est choisie)
Le mod de mcpiapi, à la différence de mon Mod de confiture de framboise, ne supporte pas définir l’orientation du joueur. Cela signifie que le joueur ne connaîtra pas le même sens que la tortue. (Et il y a des chances d’autres problèmes avec les scripts de la tortue).
Note technique : Si vous avez déjà un objet de Minecraft mc, initialiser avec t = Turtle(mc). Si vous omettez l’objet Minecraft lors de l’initialisation de la tortue, il est créé pour vous, et dans les deux cas, vous pouvez accéder à l’objet de Minecraft via t.mc.
Bonus pour les utilisateurs de Raspberry Jam Mod 0,10 :
Vous pouvez également jouer avec du code python pour le contrôle de la tortue à droite de la fenêtre de chat de Minecraft. (Pas actuellement pris en charge par mcpiapi mod.)
Dans Minecraft, exécutez le script turtleconsole.py en tapant : /py turtleconsole [entrer].
Ensuite chaque ligne python, que vous entrez dans le tchat sera exécuté par l’interpréteur python. Pour ajouter une ligne de chat, appuyez sur T, tapez la ligne et appuyez sur [enter]. Pour quitter le turtleconsole, il suffit de taper /py [entrer] ou entrez quit() [entrer] dans chat.
Le contexte inclut une variable locale t initialisée avec un objet Turtle(), donc vous n’avez pas besoin d’exécuter un code d’initialisation, juste des choses comme :
Il y a aussi une console pour les non - tortue API complète : console.py (qui inclut une variable locale pré-initialisé mc ). (Juste ne pas mettre dans tous les appels postToChat(), ou ils seront confondent l’interprète).