Recensisci!
Diventa un recensore per ricevere prodotti gratuiti o scontati!
Iscriviti
Se desideri, puoi effettuare un'iscrizione gratuita al forum per entrare nella nostra community.
Ricerca Avanzata
Pubblicità Adsense
Answers
Se necessiti di aiuto, clicca il pulsante "Cerco Aiuto" (disponibile anche per i non iscritti).
I postatori più attivi del mese
Admin
 

Gioco con Arduino: Sniper Words

Andare in basso

Gioco con Arduino: Sniper Words

Messaggio Da Admin il Sab Dic 12, 2015 6:13 pm


SNIPER Words è un gioco realizzato completamente con Arduino. Lo scopo principale del gioco è ricomporre una delle parole presenti all'interno della memoria. In pratica verrà mostrata questa parola per TOT secondi e successivamente il giocatore deve essere bravo a "centrare" le lettere giuste al momento giusto per ricomporre la parola.

Codice:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


 String parola[10] = { "ciao", "polpo", "pizza" , "gatto" , "gioco" , "prova" , "carta" , "dente" , "palla" , "testa"};
 char alfabetcasual[26];
 char lettera='a';
 char letteracasual;
 int t1,t2,tot=0,casual,casualalfabet,c=0;
 bool sbagliato,controlloa,ordinato,disordinato,controllofull;
 String attuale[5] = { "" , "" , "" , "" , ""};

 int pot=A0; //il potenziometro è posizionato nel pin analogico A0
 int vel=0; //contenitore che conterrà la velocità (difficoltà del livello)
 int tono=6;
void setup() {
  randomSeed(millis());
  lcd.begin(16, 2);
  pinMode(7,INPUT);
  pinMode(pot, INPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(13,INPUT);
  pinMode(tono,OUTPUT);
}

void loop() {
  for(int i=0;i<26;i++)
  {
  alfabetcasual[i]=('a'+i);   
  }
  lcd.clear();
  lcd.print("Click to start");
  do{
    delay(30);
    if(digitalRead(7)==1){
      ordinato=true;
      break;
    }
    if(digitalRead(13)==1){
      disordinato=true;
      break;
    }
  }while(true);
  lcd.clear();
  lcd.print("Tieni a mente: ");
  lcd.setCursor(0,1);
  if(c<9) c++;
  else c=0;
  lcd.print(parola[c]);
  delay(5000);
  lcd.clear();
  lcd.print("Ricomponila");
  lcd.setCursor(0,1);
  if(ordinato){
  do
  {
    vel = map(analogRead(A0), 0, 1023, 300, 2000);
    lcd.clear();
    lcd.print("Ricomponila :");
    lcd.setCursor(0,1);
    lcd.print(attuale[0]+attuale[1]+attuale[2]+attuale[3]+lettera);
    t1=millis();
   
    do{
    if(digitalRead(7)==1){
    if(lettera!=parola[c].charAt(tot)){
      sbagliato=true;
      delay(1000);
      break;
    }
    attuale[tot]=lettera;
    lettera='a';
    controlloa=true;
    tot++;
    delay(190);
    break;
    } 
    t2=millis();
    }while(t2-t1<vel);
    if(sbagliato) break;
    if(lettera=='z'){
      lettera='a';
      controlloa=true;
    }
    if(!controlloa) lettera++;
    controlloa=false;
  }while(tot<5);
  }
  else{
    do
  {
    do{
      casualalfabet=random(0,27); 
    }while(alfabetcasual[casualalfabet]=='1');
    letteracasual=alfabetcasual[casualalfabet];
    alfabetcasual[casualalfabet]='1';
    vel = map(analogRead(A0), 0, 1023, 300, 2000);
    lcd.clear();
    lcd.print("Ricomponila :");
    lcd.setCursor(0,1);
    lcd.print(attuale[0]+attuale[1]+attuale[2]+attuale[3]+letteracasual);
    t1=millis();
   
    do{
    if(digitalRead(13)==1){
    if(letteracasual!=parola[c].charAt(tot)){
      sbagliato=true;
      delay(1000);
      break;
    }
    attuale[tot]=letteracasual;
    for(int i=0;i<26;i++)
    {
      alfabetcasual[i]=('a'+i);   
    }
    tot++;
    delay(190);
    break;
    } 
    t2=millis();
    }while(t2-t1<vel);
    if(sbagliato) break;
    controllofull=true;
    for(int i=0;i<26;i++)
      {
        if(alfabetcasual[i]!='1') controllofull=false;   
      }
    if(controllofull){
    for(int i=0;i<26;i++)
      {
        alfabetcasual[i]=('a'+i);   
      }
    }
  }while(tot<5);
  }

  if(!sbagliato){
    lcd.clear();
    lcd.print("GIUSTO!!!");
    tone(tono, 750, 200);
    digitalWrite(9,HIGH);
    delay(200);
    noTone(tono);
    tone(tono, 750, 200);
    digitalWrite(9,LOW);
    delay(200);
    noTone(tono);
    tone(tono, 750, 200);
    digitalWrite(9,HIGH);
    delay(200);
    noTone(tono);
    tone(tono, 750, 200);
    digitalWrite(9,LOW);
    delay(200);
    noTone(tono);
    digitalWrite(9,HIGH);
    delay(2200);
  }
  else {
    lcd.clear();
    lcd.print("RIPROVA!!!");
    tone(tono, 250, 1500);
    digitalWrite(8,HIGH);
    delay(1500);
    noTone(tono);
  }
  attuale[0]="";
  attuale[1]="";
  attuale[2]="";
  attuale[3]="";
  attuale[4]="";
  sbagliato=false;
  lettera='a';
  tot=0;
  digitalWrite(9,LOW);
  digitalWrite(8,LOW);
  ordinato=false;
  disordinato=false;
  }


Ultima modifica di Admin il Lun Gen 22, 2018 9:57 pm, modificato 1 volta
avatar
Admin
♔ Amministratore

Messaggi Messaggi : 4311
Crediti Crediti : 12013
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Visualizza il profilo http://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Re: Gioco con Arduino: Sniper Words

Messaggio Da FrankyFRD42 il Mar Gen 16, 2018 7:18 pm

scusate ma come si può avere il codice di questo progetto? Embarassed Embarassed
avatar
FrankyFRD42
Sono un nuovo membro
Sono un nuovo membro

Messaggi Messaggi : 3
Crediti Crediti : 6
Reputazione Reputazione : 0
Data d'iscrizione Data d'iscrizione : 16.01.18
Età Età : 13
Località Località : san Cesario di Lecce

Visualizza il profilo

Torna in alto Andare in basso

Re: Gioco con Arduino: Sniper Words

Messaggio Da Admin il Mer Gen 17, 2018 4:25 pm

Ciao, il codice del progetto era in un PC formattato. Non so se magari lo trovi in qualche backup. 

Ricordami eventualmente se non riscrivo qui entro domani Wink

A presto Ciao!
avatar
Admin
♔ Amministratore

Messaggi Messaggi : 4311
Crediti Crediti : 12013
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Visualizza il profilo http://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Re: Gioco con Arduino: Sniper Words

Messaggio Da FrankyFRD42 il Dom Gen 21, 2018 6:56 pm

@Admin ha scritto:Ciao, il codice del progetto era in un PC formattato. Non so se magari lo trovi in qualche backup. 

Ricordami eventualmente se non riscrivo qui entro domani Wink

A presto Ciao!

Sono passati un pò di giorni... Ti sei dimenticato? Question
avatar
FrankyFRD42
Sono un nuovo membro
Sono un nuovo membro

Messaggi Messaggi : 3
Crediti Crediti : 6
Reputazione Reputazione : 0
Data d'iscrizione Data d'iscrizione : 16.01.18
Età Età : 13
Località Località : san Cesario di Lecce

Visualizza il profilo

Torna in alto Andare in basso

Re: Gioco con Arduino: Sniper Words

Messaggio Da Admin il Lun Gen 22, 2018 5:56 pm

Si  Rolling Eyes

Devo controllare di avere ancora il codice, sperando di aver fatto un backup del vecchio PC.

Ti farò sapere, eventualmente scrivimi un Messaggio Privato così mi arriva la notifica.

A presto Ciao!
avatar
Admin
♔ Amministratore

Messaggi Messaggi : 4311
Crediti Crediti : 12013
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Visualizza il profilo http://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Re: Gioco con Arduino: Sniper Words

Messaggio Da Admin il Lun Gen 22, 2018 9:57 pm

Eccolo!
Codice:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12, 11, 5, 4, 3, 2);


 String parola[10] = { "ciao", "polpo", "pizza" , "gatto" , "gioco" , "prova" , "carta" , "dente" , "palla" , "testa"};
 char alfabetcasual[26];
 char lettera='a';
 char letteracasual;
 int t1,t2,tot=0,casual,casualalfabet,c=0;
 bool sbagliato,controlloa,ordinato,disordinato,controllofull;
 String attuale[5] = { "" , "" , "" , "" , ""};

 int pot=A0; //il potenziometro è posizionato nel pin analogico A0
 int vel=0; //contenitore che conterrà la velocità (difficoltà del livello)
 int tono=6;
void setup() {
  randomSeed(millis());
  lcd.begin(16, 2);
  pinMode(7,INPUT);
  pinMode(pot, INPUT);
  pinMode(8,OUTPUT);
  pinMode(9,OUTPUT);
  pinMode(13,INPUT);
  pinMode(tono,OUTPUT);
}

void loop() {
  for(int i=0;i<26;i++)
  {
  alfabetcasual[i]=('a'+i);   
  }
  lcd.clear();
  lcd.print("Click to start");
  do{
    delay(30);
    if(digitalRead(7)==1){
      ordinato=true;
      break;
    }
    if(digitalRead(13)==1){
      disordinato=true;
      break;
    }
  }while(true);
  lcd.clear();
  lcd.print("Tieni a mente: ");
  lcd.setCursor(0,1);
  if(c<9) c++;
  else c=0;
  lcd.print(parola[c]);
  delay(5000);
  lcd.clear();
  lcd.print("Ricomponila");
  lcd.setCursor(0,1);
  if(ordinato){
  do
  {
    vel = map(analogRead(A0), 0, 1023, 300, 2000);
    lcd.clear();
    lcd.print("Ricomponila :");
    lcd.setCursor(0,1);
    lcd.print(attuale[0]+attuale[1]+attuale[2]+attuale[3]+lettera);
    t1=millis();
   
    do{
    if(digitalRead(7)==1){
    if(lettera!=parola[c].charAt(tot)){
      sbagliato=true;
      delay(1000);
      break;
    }
    attuale[tot]=lettera;
    lettera='a';
    controlloa=true;
    tot++;
    delay(190);
    break;
    } 
    t2=millis();
    }while(t2-t1<vel);
    if(sbagliato) break;
    if(lettera=='z'){
      lettera='a';
      controlloa=true;
    }
    if(!controlloa) lettera++;
    controlloa=false;
  }while(tot<5);
  }
  else{
    do
  {
    do{
      casualalfabet=random(0,27); 
    }while(alfabetcasual[casualalfabet]=='1');
    letteracasual=alfabetcasual[casualalfabet];
    alfabetcasual[casualalfabet]='1';
    vel = map(analogRead(A0), 0, 1023, 300, 2000);
    lcd.clear();
    lcd.print("Ricomponila :");
    lcd.setCursor(0,1);
    lcd.print(attuale[0]+attuale[1]+attuale[2]+attuale[3]+letteracasual);
    t1=millis();
   
    do{
    if(digitalRead(13)==1){
    if(letteracasual!=parola[c].charAt(tot)){
      sbagliato=true;
      delay(1000);
      break;
    }
    attuale[tot]=letteracasual;
    for(int i=0;i<26;i++)
    {
      alfabetcasual[i]=('a'+i);   
    }
    tot++;
    delay(190);
    break;
    } 
    t2=millis();
    }while(t2-t1<vel);
    if(sbagliato) break;
    controllofull=true;
    for(int i=0;i<26;i++)
      {
        if(alfabetcasual[i]!='1') controllofull=false;   
      }
    if(controllofull){
    for(int i=0;i<26;i++)
      {
        alfabetcasual[i]=('a'+i);   
      }
    }
  }while(tot<5);
  }

  if(!sbagliato){
    lcd.clear();
    lcd.print("GIUSTO!!!");
    tone(tono, 750, 200);
    digitalWrite(9,HIGH);
    delay(200);
    noTone(tono);
    tone(tono, 750, 200);
    digitalWrite(9,LOW);
    delay(200);
    noTone(tono);
    tone(tono, 750, 200);
    digitalWrite(9,HIGH);
    delay(200);
    noTone(tono);
    tone(tono, 750, 200);
    digitalWrite(9,LOW);
    delay(200);
    noTone(tono);
    digitalWrite(9,HIGH);
    delay(2200);
  }
  else {
    lcd.clear();
    lcd.print("RIPROVA!!!");
    tone(tono, 250, 1500);
    digitalWrite(8,HIGH);
    delay(1500);
    noTone(tono);
  }
  attuale[0]="";
  attuale[1]="";
  attuale[2]="";
  attuale[3]="";
  attuale[4]="";
  sbagliato=false;
  lettera='a';
  tot=0;
  digitalWrite(9,LOW);
  digitalWrite(8,LOW);
  ordinato=false;
  disordinato=false;
  }
avatar
Admin
♔ Amministratore

Messaggi Messaggi : 4311
Crediti Crediti : 12013
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Visualizza il profilo http://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Re: Gioco con Arduino: Sniper Words

Messaggio Da FrankyFRD42 il Mer Gen 24, 2018 7:43 pm

grazie Very Happy
avatar
FrankyFRD42
Sono un nuovo membro
Sono un nuovo membro

Messaggi Messaggi : 3
Crediti Crediti : 6
Reputazione Reputazione : 0
Data d'iscrizione Data d'iscrizione : 16.01.18
Età Età : 13
Località Località : san Cesario di Lecce

Visualizza il profilo

Torna in alto Andare in basso

Re: Gioco con Arduino: Sniper Words

Messaggio Da Admin il Gio Gen 25, 2018 9:12 am

Prego Wink
avatar
Admin
♔ Amministratore

Messaggi Messaggi : 4311
Crediti Crediti : 12013
Reputazione Reputazione : 187
Data d'iscrizione Data d'iscrizione : 08.03.11
Età Età : 19
Località Località : Brescia

Visualizza il profilo http://wikiinfo.forumattivo.it

Torna in alto Andare in basso

Torna in alto


 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum