-44%
Le deal à ne pas rater :
Fauteuil gaming Arozzi TORRETTA noir
139.99 € 249.99 €
Voir le deal

Les Micro:Bit programmés en MicroPython engendreront des méga vocations

Aller en bas

Les Micro:Bit programmés en MicroPython engendreront des méga vocations Empty Les Micro:Bit programmés en MicroPython engendreront des méga vocations

Message par zetwabf le Jeu 23 Jan 2020 - 23:20

Bonjour à tous.
Je viens vous partager des infos qui vous rendront foi en l'humanité. Depuis septembre 2019, une nouvelle discipline intitulée Sciences du Numérique et Technologies est enseignée à tous les élèves de classe de seconde. Au programme on les amène à comprendre le fonctionnement d'Internet, coder quelques pages en HTML, on les sensibilise aux réseaux sociaux, on les initie aux données structurées et on leur fait comprendre la géolocalisation et la photographie numérique. Mais surtout, à travers l'informatique embarquée et les objets connectés, ils apprennent à programmer.

Pour ça, la version allégée de Python, microPython, tourne sur un paquet de micro contrôleurs et devient idéal pour s'initier. D'autant plus quand nous pouvons profiter des quelques années de travail des anglais qui ont enseigné en se servant des Micro:Bit https://microbit.org/fr/guide/features/

C'est particulièrement motivant de voir ces jeunes qui se jettent dedans, que ce soit pour une simple montre-réveil, une station météo avec communication radio, ou... Programmer des jeux!
J'ai des élèves qui sont par exemple en train de programmer un rogue-like.

De mon côté, j'ai mis au point un shoot them up qui se veut une simplification de Juno First, j'espère que vous apprécierez.
Le code en Python:
from microbit import display, Image, accelerometer, button_b, sleep
from random import randint, randrange
from array import array

Vie=True
n=1
frame=0
f=0
Grille=[[1,0,0],[0,0,0],[0,0,0],0,0]
TrajTir=-1
Score=0

def wave(n):
    Ennemis = array('b')
    for i in range(4+n):
        Ennemis.append(randint(5, 14))
        Ennemis.append(randrange(7))
        Ennemis.append(-randrange(2))
        Ennemis.append(randint(-1, 1))
    return Ennemis

def Affichage(Ecran,Ennemis,f,inclinaison,Grille,BGrille):
    if inclinaison[0]>150:
        Grille[4]+=1
        for e in range(1,len(Ennemis),4):
            Ennemis[e]=(Ennemis[e]-1)%7
    elif inclinaison[0]<-150:
        Grille[4]-=1
        for e in range(1,len(Ennemis),4):
            Ennemis[e]=(Ennemis[e]+1)%7
    if inclinaison[1]>650:
        Grille[3]+=1
        for e in range(0,len(Ennemis),4):
            Ennemis[e]=(Ennemis[e]+1)%15
    elif inclinaison[1]<350:
        Grille[3]-=1
        for e in range(0,len(Ennemis),4):
            Ennemis[e]=(Ennemis[e]-1)%15
    if BGrille:
        for g in range(25):
            Ecran[g]=Grille[(g//5+Grille[3])%3][(g%5+Grille[4])%3]
    for e in range(0,len(Ennemis),4):
        if Ennemis[e]>4 or (Ennemis[e]+Ennemis[e+2])%15>4:
            Pos=Ennemis[e+1]
            if Pos==6:
                Pos=0
            elif Pos==5:
                Pos=4
            Ecran[Pos]=max(Ecran[Pos], max(((10-(Ennemis[e]-5))//10)*3, 1))
        elif Ennemis[e]<5 and Ennemis[e+1]<5:
            Pos=(4-Ennemis[e])*5+Ennemis[e+1]
            Ecran[Pos]=max(7-f,Ecran[Pos])
            if (Ennemis[e]+Ennemis[e+2])%15<5 and (Ennemis[e+1]+Ennemis[e+3])%7<5:
                Pos=(4-(Ennemis[e]+Ennemis[e+2])%15)*5+(Ennemis[e+1]+Ennemis[e+3])%7
                Ecran[Pos]=max(f,Ecran[Pos])
    return Ecran,Grille

while Vie:
    display.scroll("Wave " + str(n), delay=120)
    Ennemis = wave(n)
    while len(Ennemis)>0 and Vie:
        Ecran=array('b',[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
        if TrajTir>-1:
            TrajTir-=1
        if frame!=0 and frame%14==0:
                for e in range(0,len(Ennemis),4):
                    Ennemis[e]=(Ennemis[e]+Ennemis[e+2])%15
                    Ennemis[e+1]=(Ennemis[e+1]+Ennemis[e+3])%7
        if frame!=0 and frame%2==0:
            f=(f+1)%7
            inclinaison=accelerometer.get_values()
            BGrille=True
            if button_b.was_pressed() and TrajTir==-1:
                TrajTir=4
        else:
            inclinaison=(0,500,0)
            BGrille=False
        Ecran,Grille=Affichage(Ecran,Ennemis,f,inclinaison,Grille,BGrille)
        display.show(Image(5,5,Ecran))
        if Ecran[22]>5:
            Vie=False
        else:
            display.set_pixel(2,4,9)
            if TrajTir>-1:
                display.set_pixel(2, TrajTir, 9)
                for e in range(len(Ennemis)-4,-1,-4):
                    if ((4-Ennemis[e])==TrajTir and Ennemis[e+1]==2 and f<2) or (Ennemis[e]+Ennemis[e+2]==TrajTir and Ennemis[e+1]+Ennemis[e+3]==2 and f > 4):
                        EnnemisTemp=array('b')
                        for i in range(len(Ennemis)):
                            if ie+3:
                                EnnemisTemp.append(Ennemis[i])
                        Ennemis=EnnemisTemp
                        Score+=n
        frame+=1
        sleep(100-min(n//2, 75))
    n += 1
sleep(1000)
display.show(Image.SKULL)
sleep(2000)
display.scroll("score : " + str(Score), loop=True)

Hélas, il n'existe pas vraiment d'émulateur Micro:Bit, il faut en acheter un (20 €) pour essayer. Mais ça peut aussi être rentabilisé dans de la domotique plus tard.


Dernière édition par zetwabf le Mar 28 Jan 2020 - 14:17, édité 1 fois
zetwabf
zetwabf
Patient contaminé

Masculin Nombre de messages : 173
Age : 34
Localisation : St-Carné
Date d'inscription : 27/11/2015

Revenir en haut Aller en bas

Les Micro:Bit programmés en MicroPython engendreront des méga vocations Empty Re: Les Micro:Bit programmés en MicroPython engendreront des méga vocations

Message par drfloyd le Ven 24 Jan 2020 - 18:45

Génial ! Jun First en plus !!!! Tu as une video du jeu qui tourne ????

par contre joker :

Dans mon entourage on en a parlé, et beaucoup de profs disent qu'ils sont incapable d'apprendre le python aux élèves. Ils ont eu des cours théoriques et n'ont rien pigé....

On ne s'improvise pas programmeur comme ça... 

ca me rappelle mes cours de basic en 1983 au lycée sur Apple 2... Le prof racontait n'importe quoi... j'etais meme obligé de le corriger (j'avais l'expérience à la maison sur mes micro 8bit)

_______________________________________________________
Les Micro:Bit programmés en MicroPython engendreront des méga vocations Giphy10
Mes objets en vente :
https://www.gamopat-forum.com/t105296-la-nouvelle-brocante-du-doc#3072649
Mon profil Gamopat Advisor :
https://www.gamopat-forum.com/t94659-dr-floyd-advisor





drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 152768
Age : 50
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Les Micro:Bit programmés en MicroPython engendreront des méga vocations Empty Re: Les Micro:Bit programmés en MicroPython engendreront des méga vocations

Message par zetwabf le Ven 24 Jan 2020 - 21:56

Ah ça, les formateurs étaient simplement des profs de bonne volonté à qui on a balancé un pavé en disant "voilà, vous formez vos collègues dans 4 semaines".
J'ai assisté à ces formations. Le premier jour je répondais à la place du formateur, le deuxième je suis pas venu...

Je tenterai de faire une vidéo propre, mais le plus important est de l'avoir dans les mains. Comme ça se contrôle en inclinant la carte, on est vite pris dans l'action.
zetwabf
zetwabf
Patient contaminé

Masculin Nombre de messages : 173
Age : 34
Localisation : St-Carné
Date d'inscription : 27/11/2015

Revenir en haut Aller en bas

Les Micro:Bit programmés en MicroPython engendreront des méga vocations Empty Re: Les Micro:Bit programmés en MicroPython engendreront des méga vocations

Message par drfloyd le Sam 25 Jan 2020 - 8:38

oui voila, les profs (qui n'aiment pas à 95% l'informatique et encore moins la programmation) sont formés par des formateurs mal formés...

Imaginez le résultat en cours !!!! 

C'est du grand n'importe quoi

_______________________________________________________
Les Micro:Bit programmés en MicroPython engendreront des méga vocations Giphy10
Mes objets en vente :
https://www.gamopat-forum.com/t105296-la-nouvelle-brocante-du-doc#3072649
Mon profil Gamopat Advisor :
https://www.gamopat-forum.com/t94659-dr-floyd-advisor





drfloyd
drfloyd
DOYEN ET PROFESSEUR FOU DE L'HOPITAL

Masculin Nombre de messages : 152768
Age : 50
Localisation : Dpt 62
Date d'inscription : 05/12/2004

http://www.gamopat.com

Revenir en haut Aller en bas

Les Micro:Bit programmés en MicroPython engendreront des méga vocations Empty Re: Les Micro:Bit programmés en MicroPython engendreront des méga vocations

Message par zetwabf le Sam 25 Jan 2020 - 9:52

Le plus drôle, c'est la vision caricaturale de leur hiérarchie : "l'informatique, c'est un truc avec des chiffres ça? On va filer ça aux profs de maths."
Donc des profs qui n'ont pas passé leur concours pour cette discipline qui se braquent et freinent des 4 fers.

L'avantage, c'est que ça me permet d'avoir un contrat.
zetwabf
zetwabf
Patient contaminé

Masculin Nombre de messages : 173
Age : 34
Localisation : St-Carné
Date d'inscription : 27/11/2015

Revenir en haut Aller en bas

Les Micro:Bit programmés en MicroPython engendreront des méga vocations Empty Re: Les Micro:Bit programmés en MicroPython engendreront des méga vocations

Message par zetwabf le Mar 28 Jan 2020 - 14:12

J'ai réalisé une petite vidéo.
Bon, alors déjà que jouer sur du 5 x 5 pixels n'est pas évident, mais en vidéo ça casse encore plus l'immersion.
'Faut imaginer ce que ça rend.
zetwabf
zetwabf
Patient contaminé

Masculin Nombre de messages : 173
Age : 34
Localisation : St-Carné
Date d'inscription : 27/11/2015

Revenir en haut Aller en bas

Les Micro:Bit programmés en MicroPython engendreront des méga vocations Empty Re: Les Micro:Bit programmés en MicroPython engendreront des méga vocations

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Revenir en haut


 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum