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

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

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.
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);
}
}


