Aller au contenu

Projet de jeu Crazy Frog

02 Nov 2023
Crazy Frog Game Project

Table des matières

    Jeu de grenouille folle fait généralement référence à un jeu vidéo basé sur le personnage de Crazy Frog ou sur la chanson. Également connu sous le nom de « The Annoying Thing », il s’agit d’un phénomène Internet et d’un personnage publicitaire populaire. Il est reconnu comme un personnage sauvage et humoristique et a inspiré de nombreux jeux d'aventure amusants et loufoques.

    Ces jeux peuvent être trouvés dans différents genres tels que l'action, les courses, les jeux de plateforme ou divers mini-jeux. Les joueurs contrôlent le personnage et tentent de surmonter les obstacles, de concourir ou d'accomplir des missions.

    Chaque jeu Crazy Frog peut avoir son propre concept et son propre gameplay, de sorte que les détails spécifiques d'un jeu sur lequel vous vous renseignez peuvent donner des réponses différentes. En général, ces jeux visent à offrir des expériences agréables et humoristiques et à offrir une expérience de jeu délicieuse aux fans.

    Jeu de grenouille folle

    Aujourd'hui, nous sommes ravis de vous présenter un projet amusant qui met en vedette la mélodie du Chanson originale de Crazy Frog, des lumières RVB synchronisées palpitant au rythme et une jolie mascotte exécutant une routine de danse sur le Écran OLED. Le jeu Crazy Frog promet non seulement une expérience agréable, mais sert également de plate-forme pour améliorer la créativité, la concentration, l'agilité et acquérir une expertise fondamentale en programmation. Cet effort vise non seulement à vous divertir mais également à vous doter de compétences précieuses. Approfondissons les subtilités du grenouille dansante folle!

    Détails et algorithme

     

    Composants

     

    1xPicoBricks

    Vous pouvez coder et exécuter les modules Picobricks sans câblage. Si vous comptez utiliser les modules en les séparant de la carte, vous devez effectuer les connexions des modules avec des câbles Grove.

    Schéma de câblage

    crazy frog game Wiring Diagram

     

    Vous pouvez coder et exécuter les modules Picobricks sans câblage. Si vous comptez utiliser les modules en les séparant de la carte, vous devez effectuer les connexions des modules avec des câbles Grove.

    Codes MicroBlocks du jeu Crazy Frog

    MicroBlocks Codes

    Codes MicroPython du jeu Crazy Frog

    Le code Micro Python est présenté ci-dessous. Vous devrez créer un fichier Python distinct pour vos fichiers image. Vous pouvez télécharger ce fichier en utilisant le bouton ci-dessous.

    Télécharger tout le code

    heure d'importation
    à partir de la broche d'importation de la machine, I2C, PWM, ADC
    à partir de picobricks importer SSD1306_I2C
    importer un framebuf
    import random #random fait fonctionner le neopixel de manière aléatoire.
    à partir de picobricks importer la bibliothèque WS2812#ws8212
    from crazyfrog_imgs import bar_0, bar_20, bar_50, bar_70, bar_90, bar_100, Maskot_1, Maskot_2, Maskot_3, Maskot_4 # Nous exécutons le paramètre imgs et créons l'une des options de configuration des images.
     
    LARGEUR = 128 # largeur d'affichage oled
    HAUTEUR = 64 # hauteur de l'écran oled
    i2c = I2C(0, scl=Pin(5), sda=Pin(4), freq=200000) # Init I2C à l'aide des broches GP8 et GP9 (broches I2C0 par défaut)
    oled = SSD1306_I2C(WIDTH, HEIGHT, i2c, addr=0x3c) # Init affichage oled
    bar1 = framebuf.FrameBuffer(bar_0, 128,64 , framebuf.MONO_HLSB)
    bar2 = framebuf.FrameBuffer(bar_20, 128,64 , framebuf.MONO_HLSB)
    bar3 = framebuf.FrameBuffer(bar_50, 128,64 , framebuf.MONO_HLSB)
    bar4 = framebuf.FrameBuffer(bar_70, 128,64 , framebuf.MONO_HLSB)
    bar5 = framebuf.FrameBuffer(bar_90, 128,64 , framebuf.MONO_HLSB)
    bar6 = framebuf.FrameBuffer(bar_100, 128,64 , framebuf.MONO_HLSB)
    maskot1 = framebuf.FrameBuffer(maskot_1, 128,64 , framebuf.MONO_HLSB)
    maskot2 = framebuf.FrameBuffer(maskot_2, 128,64 , framebuf.MONO_HLSB)
    maskot3 = framebuf.FrameBuffer(maskot_3, 128,64 , framebuf.MONO_HLSB)
    maskot4 = framebuf.FrameBuffer(maskot_4, 128,64 , framebuf.MONO_HLSB)
     
    notes = {"B0": 31, "C1": 33, "CS1": 35, "D1": 37, "DS1": 39, "E1": 41, "F1": 44, "FS1": 46 ,
             "G1" : 49, "GS1" : 52, "A1" : 55, "AS1" : 58, "B1" : 62, "C2" : 65, "CS2" : 69, "D2" : 73,
             "DS2" : 78, "E2" : 82, "F2" : 87, "FS2" : 93, "G2" : 98, "GS2" : 104, "A2" : 110,
             "AS2" : 117, "B2" : 123, "C3" : 131, "CS3" : 139, "D3" : 147, "DS3" : 156, "E3" : 165,
             "F3" : 175, "FS3" : 185, "G3" : 196, "GS3" : 208, "A3" : 220, "AS3" : 233, "B3" : 247,
             "C4" : 262, "CS4" : 277, "D4" : 294, "DS4" : 311, "E4" : 330, "F4" : 349, "FS4" : 370,
             "G4" : 392, "GS4" : 415, "A4" : 440, "AS4" : 466, "B4" : 494, "C5" : 523, "CS5" : 554,
             "D5" : 587, "DS5" : 622, "E5" : 659, "F5" : 698, "FS5" : 740, "G5" : 784, "GS5" : 831,
             "A5" : 880, "AS5" : 932, "B5" : 988, "C6" : 1047, "CS6" : 1109, "D6" : 1175,
             "DS6" : 1245, "E6" : 1319, "F6" : 1397, "FS6" : 1480, "G6" : 1568, "GS6" : 1661,
             "A6" : 1760, "AS6" : 1865, "B6" : 1976, "C7" : 2093, "CS7" : 2217, "D7" : 2349,
             "DS7" : 2489, "E7" : 2637, "F7" : 2794, "FS7" : 2960, "G7" : 3136, "GS7" : 3322,
             "A7" : 3520, "AS7" : 3729, "B7" : 3951, "C8" : 4186, "CS8" : 4435, "D8" : 4699,
             "DS8" : 4978}
     
    crazy_frog_melody = [
        notes['A4'], notes['C5'], notes['A4'], notes['A4'], notes['D5'], notes['A4'], notes['G4'],
        notes['A4'], notes['E5'], notes['A4'], notes['A4'], notes['F5'], notes['E5'], notes['C5'],
        notes['A4'], notes['E5'], notes['A5'], notes['A4'], notes['G4'], notes['G4'], notes['E4'],
        notes['B4'], notes['A4'],0,
       
        notes['A4'], notes['C5'], notes['A4'], notes['A4'], notes['D5'], notes['A4'], notes['G4'],
        notes['A4'], notes['E5'], notes['A4'], notes['A4'], notes['F5'], notes['E5'], notes['C5'],
        notes['A4'], notes['E5'], notes['A5'], notes['A4'], notes['G4'], notes['G4'], notes['E4'],
        notes['B4'], notes['A4'],0,
       
        notes['A3'], notes['G3'], notes['E3'], notes['D3'],
       
        notes['A4'], notes['C5'], notes['A4'], notes['A4'], notes['D5'], notes['A4'], notes['G4'],
        notes['A4'], notes['E5'], notes['A4'], notes['A4'], notes['F5'], notes['E5'], notes['C5'],
        notes['A4'], notes['E5'], notes['A5'], notes['A4'], notes['G4'], notes['G4'], notes['E4'],
        notes['B4'], notes['A4'],
    ]
     
    fou_frog_tempo = [
        2,4,4,8,4,4,4,
        2,4,4,8,4,4,4,
        4,4,4,8,4,8,4,4,
        1,4,
       
        2,4,4,8,4,4,4,
        2,4,4,8,4,4,4,
        4,4,4,8,4,8,4,4,
        1,4,
       
        8,4,4,4,
       
        2,4,4,8,4,4,4,
        2,4,4,8,4,4,4,
        4,4,4,8,4,8,4,4,
        1,
    ]
    oled.blit (bar1, 0, 0)
    oled.show()
    temps.sommeil(1)
    oled.blit (bar2, 0, 0)
    oled.show()
    temps.sommeil(1)
    oled.blit (bar3, 0, 0)
    oled.show()
    temps.sommeil(1)
    oled.blit(bar4, 0, 0)
    oled.show()
    temps.sommeil(1)
    oled.blit(bar5, 0, 0)
    oled.show()
    temps.sommeil(1)
    oled.blit (bar6, 0, 0)
    oled.show()
    temps.sommeil(1)
     
    buzzer = PWM (broche (20))
    buzzer.duty_u16(0)
     
    néo = WS2812(6, luminosité=0,4)
     
    masque_position = 0
     
    def buzz (fréquence, longueur):
    #créer la fonction "buzz" et lui donner le pitch et la durée
        si (fréquence == 0):
            temps.sommeil (durée)
            retour
     
        buzzer.duty_u16(4000)
        buzzer.freq (fréquence)
        temps.sommeil (durée)
        buzzer.duty_u16(0)
     
    lecture par défaut (mélodie, tempo, pause, rythme = 0,7) :
        position_masque globale
        pour je dans la plage (0, len (mélodie)):
            # Jouer une chanson
            noteDurée = allure/tempo[i]
            buzz(melody[i],noteDuration) # Change la fréquence le long de la note de la chanson
            pauseBetweenNotes = noteDuration * pause
            time.sleep (pauseBetweenNotes)
    neo.pixels_fill((random.randint(0,255),
                             random.randint(0,255),
                             aléatoire.randint(0,255)))
            neo.pixels_show()
            si maskot_position == 0 :
                oled.blit(maskot1, 0, 0)
                masque_position = 1
            elif masque_position == 1 :
                oled.blit(maskot2, 0, 0)
                masque_position = 2
            elif masque_position == 2 :
                oled.blit (maskot3, 0, 0)
                masque_position = 3
            elif masque_position == 3 :
                oled.blit (maskot4, 0, 0)
                masque_position = 0
            oled.show()
     
    jouer (crazy_frog_melody, crazy_frog_tempo, 0.1)

    Codes Arduino C pour PicoBricks

     

    
     
    #définir BUZZER_PIN 20
    #définir NOTE_E4 330
    #définir NOTE_A5 880
    #définir NOTE_F5 698
    #définir NOTE_E5 659
    #définir NOTE_G4 392
    #définir NOTE_D5 587
    #définir NOTE_C5 523
    #définir NOTE_A4 440
    #définir NOTE_B4 494
    
    const int crazyFrogMelody[] = {
      NOTE_A4, NOTE_C5, NOTE_A4, NOTE_A4, NOTE_D5, NOTE_A4, NOTE_G4,
      NOTE_A4, NOTE_E5, NOTE_A4, NOTE_A4, NOTE_F5, NOTE_E5, NOTE_C5,
      NOTE_A4, NOTE_E5, NOTE_A5, NOTE_A4, NOTE_G4, NOTE_G4, NOTE_E4, NOTE_B4,
      REMARQUE_A4, 0,
    } ;
    
    const int fouFrogTempo[] = {
      2, 4, 4, 8, 4, 4, 4,
      2, 4, 4, 8, 4, 4, 4,
      4, 4, 4, 8, 4, 8, 4, 4,
      1, 4,
    } ;
    
    void setup() {
      pinMode(BUZZER_PIN, SORTIE);
    }
    
    boucle vide() {
      int taille = taille de (crazyFrogTempo) / taille de (int);
      pour (int note = 0 ; note < taille ; note++) {
        int durée = 1000 / crazyFrogTempo[note];
        ton(BUZZER_PIN, crazyFrogMelody[note], durée);
        int pauseBetweenNotes = durée * 1,30 ;
        délai (pauseBetweenNotes);
        pas de tonalité (BUZZER_PIN);
      }
    }
    Article précédent
    Prochain article

    Merci pour votre subscription!

    Cet e-mail a été enregistré !

    Achetez le look
    Choisissez les options

    Picobricks
    Inscrivez-vous pour des mises à jour exclusives, nouveautés et réductions réservées aux initiés

    Option d'édition

    Back In Stock Notification

    Comparer

    Produit UGSNotationDescription Collection Disponibilité type de produit Autres détails
    this is just a warning
    Se connecter
    Panier
    0 articles
    Same Day Shipping No Extra Costs
    Easy Returns Guarantee Return with Ease
    Secure Checkout Secure Payment