1 013
modifications
Modifications
Cub-i
,aucun résumé de modification
mock6[[File:mock5.png|700px]].png|Description 1
</gallery>
=== le code particule ===
le code particule :
// This #include statement was automatically added by the Particle IDE.
#include <neopixel.h>
/* Utiliser des leds RGB adressables
* branchement
* leds / Photon
* GND --> GND
* 5V --> VIN
* DI --> D2 (DI pour Data In)
* Dans ce programme, les elds peuvent être activées par deux boutons, ou par une interface web
* Bouton 1 (sur D0) : couleur au hasard
* Bouton 2 (sur D1) : allumer / éteindre
*/
#define PIXEL_PIN D4
#define PIXEL_COUNT 40
#define PIXEL_TYPE WS2812B
Adafruit_NeoPixel strip(PIXEL_COUNT, PIXEL_PIN, PIXEL_TYPE);
// Variables pour le QUIZ
int RepJoueur1 = NULL;
int RepJoueur2 = NULL;
int RepJoueur3 = NULL;
int RepJoueur4 = NULL;
int Vrai1 = D5;
int Faux1 = D6;
int Vrai2 = D7;
int Faux2 = A0;
int Vrai3 = A3;
int Faux3 = A4;
int Vrai4 = A1;
int Faux4 = A2;
int bonnereponse;
// variables pour la BOMBE
int timernumber;
int timer;
int JoueurAvecBombe = 0;
///// Variable pour l'initiation du jeu////////
boolean allshooter;
boolean jeuselectionner;
boolean initgamebool;
int nbshooterglobal;
int QuestionSelect;
int Joueur1;
int Joueur2;
int Joueur3;
int Joueur4;
int JeuActif = 0;
void setup() {
// Défnition des entrées du photon pour les micro rupteurs
Joueur1 = D0;
Joueur2 = D1;
Joueur3 = D3;
Joueur4 = D2;
pinMode(Joueur1, INPUT);
pinMode(Joueur2, INPUT);
pinMode(Joueur3, INPUT);
pinMode(Joueur4, INPUT);
pinMode(Vrai1, INPUT);
pinMode(Faux1, INPUT);
pinMode(Vrai2, INPUT);
pinMode(Faux2, INPUT);
pinMode(Vrai3, INPUT);
pinMode(Faux3, INPUT);
pinMode(Vrai4, INPUT);
pinMode(Faux4, INPUT);
/*Particle.function("LaunchGame", LaunchGameFunction);*/
Particle.function("GameActive", GameActive);
allshooter = false;
jeuselectionner = false;
initgamebool = false;
strip.begin();
strip.show();
// On set le Random Seed sur l'entrée analogique A5 pour avoir un "vrai" random. C'e
randomSeed(analogRead(A5));
timer = false;
}
void loop() {
// Si tous les microrupteurs sont activés, alors on change le booléen allshooter
if(digitalRead(Joueur1) == LOW && digitalRead(Joueur2) == LOW && digitalRead(Joueur3) == LOW && digitalRead(Joueur4) == LOW){
allshooter = true;
// Quiz
if(digitalRead(Vrai1) == 1){
RepJoueur1 = 1;
//Particle.publish("Vrai1");
delay(300);
}else if(digitalRead(Faux1) == 1){
//Particle.publish("Faux1");
RepJoueur1 = 2;
delay(300);
}
if(digitalRead(Vrai2) == 1){
//Particle.publish("Vrai2");
RepJoueur2 = 1;
delay(300);
}else if(digitalRead(Faux2) == 1){
//Particle.publish("Faux2");
RepJoueur2 = 2;
delay(300);
}
if(digitalRead(Vrai3) == 1){
//Particle.publish("Vrai3");
RepJoueur3 = 1;
delay(300);
}else if(digitalRead(Faux3) == 1){
//Particle.publish("Faux3");
RepJoueur3 = 2;
delay(300);
}
if(digitalRead(Vrai4) == 1){
//Particle.publish("Vrai4");
RepJoueur4 = 1;
delay(300);
}else if(digitalRead(Faux4) == 1){
//Particle.publish("Faux4");
RepJoueur4 = 2;
delay(300);
}
// Si tous les joueurs ont répondu alors on lance la fonction ReponseJoueur();
if(JeuActif == 4 && RepJoueur1 != NULL && RepJoueur2 != NULL && RepJoueur3 != NULL && RepJoueur4 != NULL ){
ReponseJoueur();
}
////// Jeu de la Bombe - Passer la bombe entre chque joueur.
if(timer == true){
if(JoueurAvecBombe == 1){
if(RepJoueur1 == 1){
JoueurAvecBombe = 4;
delay(300);
}
if(RepJoueur1 == 2){
JoueurAvecBombe = 2;
delay(300);
}
}else if(JoueurAvecBombe == 2){
if(RepJoueur2 == 1){
JoueurAvecBombe = 1;
delay(300);
}
if(RepJoueur2 == 2){
JoueurAvecBombe = 3;
delay(300);
}
}else if(JoueurAvecBombe == 3){
if(RepJoueur3 == 1){
JoueurAvecBombe = 2;
delay(300);
}
if(RepJoueur3 == 2){
JoueurAvecBombe = 4;
delay(300);
}
}else if(JoueurAvecBombe == 4){
if(RepJoueur4 == 1){
JoueurAvecBombe = 3;
delay(300);
}
if(RepJoueur4 == 2){
JoueurAvecBombe = 1;
delay(300);
}
}
clignottement();
timernumber--;
ResetRepJoueur();
if(timernumber == 0){
ExplosionBombe();
timer = false;
JoueurAvecBombe = 0;
ResetRepJoueur();
}
delay(1000);
}
}else{
allshooter = false;
}
}
/*
int LaunchGameFunction(String command){
if(command.equalsIgnoreCase("go")){
if(allshooter == false){
Particle.publish("En attente de tout les shooters");
return -1;
}else{
//Qinitgame();
return 1;
}
}
}*/
// Choix du jeu
int GameActive(String command){
if (allshooter == true && jeuselectionner == false && initgamebool == true){
// ici on utilise le command.equalsIgnoreCase et le return pour envoyer une info à notre page Html.
if(command.equalsIgnoreCase("Jeu?")){
if(JeuActif == 1){
LaBombe();
jeuselectionner = true;
return 11;
}else if(JeuActif == 2){
jeuselectionner = true;
return 12;
}else if(JeuActif == 3){
jeuselectionner = true;
return 13;
}else if(JeuActif == 4){
ChooseQuestion();
jeuselectionner = true;
return 14;
}else if(JeuActif == 5){
ChooseQuestion();
jeuselectionner = true;
return 15;
}
}
}else if(allshooter == true && jeuselectionner == true && initgamebool == true){
if(JeuActif == 4){
if(QuestionSelect == 1){
return 141;
}
if(QuestionSelect == 2){
return 142;
}
if(QuestionSelect == 3){
return 143;
}
if(QuestionSelect == 4){
return 144;
}
if(QuestionSelect == 5){
return 145;
}
if(QuestionSelect == 6){
return 146;
}
}
}else if(allshooter == true && jeuselectionner == false && initgamebool == false){
initgame();
initgamebool = true;
// Si un shooter est enlevé, on arrete le jeu
}else if(allshooter == false && jeuselectionner == true && initgamebool == true){
Particle.publish("Stop Game");
jeuselectionner = false;
initgamebool = false;
AllGameStop();
return 20;
// Si il manque un ou plusieurs shooters on etein les leds.
}else if(allshooter == false && jeuselectionner == false && initgamebool == false){
Particle.publish("En attente des shooter");
for(int i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
}
strip.show();
}
}
// intitialisation du jeu avec un random des jeux
void initgame() {
int JeuChoisi = random(5)+1;
while(JeuChoisi == JeuActif){
JeuChoisi = random(5)+1;
}
startgame(JeuChoisi);
NbShooter();
Particle.publish("Jeu", String(JeuActif));
}
void AllGameStop(){
BombeStop();
}
// définition des jeux
void startgame(int JeuChoisi) {
if(JeuChoisi == 1){
JeuActif = 1;
}else if(JeuChoisi == 2){
JeuActif = 2;
}else if(JeuChoisi == 3){
JeuActif = 3;
}else if(JeuChoisi == 4){
JeuActif = 4;
}else if(JeuChoisi == 5){
JeuActif = 5;
}
}
// Fonctions liées a l'allumage des leds
void NbShooter(){
for(int i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
}
ChooseJoueur();
delay(1000);
}
// Le ChooseJoueur() se réfere aux faces du cube, nous n'utilisons qu'une entrée digitale pour les 40 leds.
void ChooseJoueur(){
// le nombre de shooters a boire
int nbshooter = random(1,10);
nbshooterglobal = nbshooter;
for(int i = 0; i <= nbshooter; i++){
SendShooter1(i);
SendShooter2(i);
SendShooter3(i);
SendShooter4(i);
//le strip est la fonction qui allume les leds
Strip();
delay(250);
}
}
// On allume les leds correspondant au nbshooter compris entre 0 et le nombre de shooter final
void SendShooter1(int nbshooter) {
int nbshooterfinal = nbshooter;
for(int i=0; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.setBrightness(25);
}
}
// On allume les leds correspondant au nbshooter en commencant a la led 10 + le nombre de shooter final
void SendShooter2(int nbshooter) {
int nbshooterfinal = 10 + nbshooter;
for(int i=10; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.setBrightness(25);
}
}
// On allume les leds correspondant au nbshooter en commencant a la led 20 + le nombre de shooter final
void SendShooter3(int nbshooter) {
int nbshooterfinal = 20 + nbshooter;
for(int i=20; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.setBrightness(25);
}
}
// On allume les leds correspondant au nbshooter en commencant a la led 30 + le nombre de shooter final
void SendShooter4(int nbshooter) {
int nbshooterfinal = 30 + nbshooter;
for(int i=30; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.setBrightness(25);
}
}
void Strip(){
strip.show();
}
// Choix de la question du QUIZ
void ChooseQuestion(){
int question = random(1,6);
if(question == 1){
QuestionSelect = 1;
bonnereponse = 1;
}
if(question == 2){
QuestionSelect = 2;
bonnereponse = 1;
}
if(question == 3){
QuestionSelect = 3;
bonnereponse = 2;
}
if(question == 4){
QuestionSelect = 4;
bonnereponse = 2;
}
if(question == 5){
QuestionSelect = 5;
bonnereponse = 2;
}
if(question == 6){
QuestionSelect = 6;
bonnereponse = 1;
}
}
// Quiz : Si la reponse du joueur est bonne alors les leds s'alluent en Vert, sinon elles s'allument en Rouge
void ReponseJoueur(){
for(int i=0; i<strip.numPixels(); i++) {
strip.setPixelColor(i, strip.Color(0, 0, 0));
}
if(RepJoueur1 == bonnereponse){
int nbshooterfinal = nbshooterglobal;
for(int i=0; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(0, 255, 0));
strip.setBrightness(25);
}
}else{
int nbshooterfinal = nbshooterglobal;
for(int i=0; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.setBrightness(25);
}
}
if(RepJoueur2 == bonnereponse){
int nbshooterfinal = 10 + nbshooterglobal;
for(int i=10; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(0, 255, 0));
strip.setBrightness(25);
}
}else{
int nbshooterfinal = 10 + nbshooterglobal;
for(int i=10; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.setBrightness(25);
}
}
if(RepJoueur3 == bonnereponse){
int nbshooterfinal = 20 + nbshooterglobal;
for(int i=20; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(0, 255, 0));
strip.setBrightness(25);
}
}else{
int nbshooterfinal = 20 + nbshooterglobal;
for(int i=20; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.setBrightness(25);
}
}
if(RepJoueur4 == bonnereponse){
int nbshooterfinal = 30 + nbshooterglobal;
for(int i=30; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(0, 255, 0));
strip.setBrightness(25);
}
}else{
int nbshooterfinal = 30 + nbshooterglobal;
for(int i=30; i<nbshooterfinal; i++){
strip.setPixelColor(i, strip.Color(255, 0, 0));
strip.setBrightness(25);
}
}
ResetRepJoueur();
Strip();
}
void ResetRepJoueur(){
RepJoueur1 = NULL;
RepJoueur2 = NULL;
RepJoueur3 = NULL;
RepJoueur4 = NULL;
}
//Parametres du jeu Bombe, le timer et le joueur qui commence avec la bombe.
void LaBombe (){
timernumber = 20;
timer = true;
JoueurAvecBombe = /*random(1, 4)*/2;
}
// Cligontement des leds pour le joueur qui a la bombe.
void clignottement(){
if(JoueurAvecBombe == 1){
for(int i=0; i<10; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setBrightness(25);
}
Strip();
delay(100);
for(int i=0; i<10; i++){
strip.setPixelColor(i, strip.Color(255, 255, 255));
strip.setBrightness(25);
}
Strip();
delay(100);
for(int i=0; i<10; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setBrightness(25);
}
Strip();
}
if(JoueurAvecBombe == 2){
for(int i=10; i<20; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setBrightness(25);
}
Strip();
delay(100);
for(int i=10; i<20; i++){
strip.setPixelColor(i, strip.Color(255, 255, 255));
strip.setBrightness(25);
}
Strip();
delay(100);
for(int i=10; i<20; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setBrightness(25);
}
Strip();
}
if(JoueurAvecBombe == 3){
for(int i=20; i<30; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setBrightness(25);
}
Strip();
delay(100);
for(int i=20; i<30; i++){
strip.setPixelColor(i, strip.Color(255, 255, 255));
strip.setBrightness(25);
}
Strip();
delay(100);
for(int i=20; i<30; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setBrightness(25);
}
Strip();
}
if(JoueurAvecBombe == 4){
for(int i=30; i<40; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setBrightness(25);
}
Strip();
delay(100);
for(int i=30; i<40; i++){
strip.setPixelColor(i, strip.Color(255, 255, 255));
strip.setBrightness(25);
}
Strip();
delay(100);
for(int i=30; i<40; i++){
strip.setPixelColor(i, strip.Color(0, 0, 0));
strip.setBrightness(25);
}
Strip();
}
}
void ExplosionBombe(){
if(JoueurAvecBombe == 1){
for(int i=0; i<10; i++){
strip.setPixelColor(i, strip.Color(random(255), random(255), random(255)));
strip.setBrightness(25);
}
Strip();
}
if(JoueurAvecBombe == 2){
for(int i=10; i<20; i++){
strip.setPixelColor(i, strip.Color(random(255), random(255), random(255)));
strip.setBrightness(25);
}
Strip();
}
if(JoueurAvecBombe == 3){
for(int i=20; i<30; i++){
strip.setPixelColor(i, strip.Color(random(255), random(255), random(255)));
strip.setBrightness(25);
}
Strip();
}
if(JoueurAvecBombe == 4){
for(int i=30; i<40; i++){
strip.setPixelColor(i, strip.Color(random(255), random(255), random(255)));
strip.setBrightness(25);
}
Strip();
}
}
void BombeStop(){
timer = false;
JoueurAvecBombe = 0;
ResetRepJoueur();
}