Lors d'un stage chez Thingz j'ai pu contribué à la création d'une librairie pour leur carte Galaxia. La carte sort bientôt.
sprites
est une librairie Python, elle permet d'affichier des éléments sur l'écran de la Galaxia.
Vous pouvez l'installer en ajoutant le dossier sprites dans /GALAXIA/lib/.
Pour programmer la carte, vous pouvez utiliser l'interface en ligne et cliquer sur "Texte" ou le fichier code.py qui est dans votre Galaxia.
Télécharger l'utilitaire d'image
💾 Importer la libraire :
import sprites
Les différents types de sprite de la librarie sont rectangle
, icon
et image
.
On commence par créer un rectangle et le stocker dans une variable (ici sprite
).
sprite = sprites.rectangle(x=0, y=0, color=0xFF0000, width=20, height=20, scale=1, hidden=False)
Vous pouvez définir de nombreux arguments:
x et y : position du rectangle (en nombres entiers)
color : couleur du rectangle (en hexadécimal)
width et height : longueur et hauteur du rectangle (en nombres entiers) (non modifiable)
scale : échelle du rectangle, elle multiplie les dimensions du rectangle (en nombre entier supérieur ou égal à 1)
hidden : si le rectangle est caché, lorsque cette variable est à False
le rectangle est visible (en booléen, True
ou False
)
On commence par créer une image et la stocker dans une variable (ici sprite2
).
sprite2 = sprites.icon(x=0, y=0, scale=1, name="cross", color=0xFFFFFF, hidden=False)
x et y : position de l'icône (en nombres entiers)
scale : échelle de l'icône, elle multiplie les dimensions de l'image (en nombre entier supérieur ou égal à 1)
name : nom de l'icône, il peut être : "cross", "circle", "heart" ou "emoji" (non modifiable) Comment ajouter ses propres icônes ?
color : couleur de l'icône (en hexadécimal)
hidden : si l'icône est caché, lorsque cette variable est à False
l'icône est visible (en booléen, True
ou False
)
On commence par créer une image et la stocker dans une variable (ici sprite3
).
sprite3 = sprites.image(x=0, y=0, scale=1, path="/thingz.bmp", hidden=False)
x et y : position de l'image (en nombres entiers)
scale : échelle de l'image, elle multiplie les dimensions de l'image (en nombre entier supérieur ou égal à 1)
path : chemin du fichier en .bmp à l'intérieur de la Galaxia (non modifiable)
hidden : si l'image est caché, lorsque cette variable est à False
l'image est visible (en booléen, True
ou False
)
Afin de sauvegarder une image dans la Galaxia dans le bon format, les bonnes dimensions, les bonnes couleurs... Vous pouvez utiliser l'utilitaire d'image Galaxia.
Si vous souhaiter ajouter une icône il faut qu'elle soit blanche sur fond noir et en 20x20, puis, il faut la déplacer dans /GALAXIA/lib/sprites/icons/ .
Tous les attributs peuvent être récupérés.
Exemples:
sprite.x
>>> 30 # valeur x de sprite
sprite.name
>>> "emoji" # nom de l'icône utilisée
Presque tous les attributs sont modifiables (hormis ceux marqués "non modifiable").
Exemples:
sprite.x += 10 # déplace le sprite vers la droite
sprite.color = 0xFFFF00 # modifie la couleur d'une icône
Renvoie True
si les deux sprites fournis sont en collision.
sprites.collision(sprite,sprite2)
Renvoie True
si le sprite fourni est en collision avec la bordure du haut (north).
border
peut être "n"(north), "s"(south), "w"(west) ou "e"(east).
sprites.border_collision(border="n",sprite)
Indique la version.
sprites.version()
⌨️ Voir le code
# Importer les librairies
import sprites
import time
# Créer un rectangle
forme = sprites.rectangle(x=15, y=40, color=0x00FFFF, width=20, height=50, scale=1, hidden=False)
# Créer une icône de coeur
coeur = sprites.icon(x=110, y=55, scale=1, name="heart", color=0xFF0000, hidden=False)
# Créer les images de l'animation
anim1 = sprites.image(x=50,y=30,path="/walk1.bmp", hidden=True)
anim2 = sprites.image(x=50,y=30,path="/walk2.bmp", hidden=True)
anim3 = sprites.image(x=50,y=30,path="/walk3.bmp", hidden=True)
anim4 = sprites.image(x=50,y=30,path="/walk4.bmp", hidden=True)
# Mettre les images de l'animation dans une liste
anims = [anim1,anim2,anim3,anim4]
# Alterner indéfiniment entre cacher et montrer les images
while True:
for anim in anims:
anim.hidden = False
time.sleep(0.3)
anim.hidden = True
🎥 Voir la vidéo
demo.mov
⌨️ Voir le code
# Importer les librairies
from thingz import accelerometer
import time
import sprites
# Créer un rectangle
sprite = sprites.rectangle(x=30,y=40,color=0xffff00, width=20, height=20 )
# Répéter indéfiniment
while True:
# Si l'accéléromètre penche vers le bas et que le carré de touche pas le bas de l'écran
if accelerometer.get_y() > 150 and not sprites.border_collision('s',sprite):
# Déplacer le sprite vers le bas
sprite.y += 1
# Si l'accéléromètre penche vers le haut et que le carré de touche pas le haut de l'écran
if accelerometer.get_y() < 150*-1 and not sprites.border_collision('n',sprite):
# Déplacer le sprite vers le haut
sprite.y -= 1
# Si l'accéléromètre penche vers la droite et que le carré de touche pas la droite de l'écran
if accelerometer.get_x() > 150 and not sprites.border_collision('e',sprite):
# Déplacer le sprite vers la droite
sprite.x += 1
# Si l'accéléromètre penche vers la gauche et que le carré de touche pas la gauche de l'écran
if accelerometer.get_x() < 150*-1 and not sprites.border_collision('w',sprite):
# Déplacer le sprite vers la gauche
sprite.x -= 1
# Attendre 0,005s
time.sleep(0.005)