D.D.Tap - interactieve Game Platform met behulp van verwerking, Arduino en Twitter


De D.D.Tap is een spel dat kan worden gespeeld met behulp van sensoren die zijn aangesloten op de Arduino en het aan het spel geproduceerd met verwerking interface. Het is een eenvoudige dans dans revolutie als spel dat punt accumuleert wanneer de speler de sensoren activeert of druk op de toetsen als de willekeurige pijlen bereikt de rode transparante balk. Het circuit gebouwd op Arduino is eenvoudig omdat ik had gebonden sensoren. Ik gebruikte de fotocellen in een pull-up configuratie om als sensoren fungeren. Ik heb geüpload de applet ook @http://www.openprocessing.org/visuals/?visualID=29670 , maar voor de Twitter functie werkt, moet u uw eigen sleutel van de consumenten enzovoort ontleend aan uw account OAuth op http://dev.twitter.com/apps . Laden op openprocessing.org is vrij lang als gevolg van het grote bestand dus overslaan, drukt u gewoon op "Broncode".
Ook, ik gebruikte het lied yeahx3 door Chris Brown aangezien er de pakkende beat voor de willekeurige pijlen ~

Het resultaat is OK, maar ik wil nog het probleem van de accumulatie van meer dan één bonus voor elke pijl op te lossen. Dit probleem was niet zo belangrijk wanneer gespeeld met het toetsenbord, maar toen haar Lees seriële data van de com-poort, de gegevenssnelheid zo snel was dat er wordt gegenereerd bonussen meer dan één keer voor elke pijl. Ik zou blij zijn als iemand met de codes van de verwerking helpen wil. Ik dacht aan het maken van een array om te controleren de bonussen, maar dat werkte niet goed. Dus, ik een of andere manier half dat probleem opgelost met behulp van vertraging in de code van de Arduino. Dit leidt natuurlijk andere problemen zoals; Als beide zijden van de pijl bereikt op hetzelfde moment, kon slechts één pijl bonus worden geclaimd. De video toont het voorbeeld van de interactie en dat als er een nieuwe highscore, de score zou worden geplaatst als een tweet op uw pagina. Ik ben bereid te accepteren upgrade suggesties.

Hier is de code!!! Zonder de twitter toets natuurlijk...
groep van pijlen
aanwijzer [] aanwijzers;
Boolean reset = true;
int num;
openbare statische float yPos, yPos2;

Twitter initialisatie
Tweet twitter;

Seriële communicatie
importeren van processing.serial.*;
Seriële poort;
String portname = "COM1";
int baudrate = 9600;
int lezing = 0;

PImage figuur, blueButton, rode toets;
initialiseren van spelen voor mp3
importeren van ddf.minim.*;
Minim minim;
AudioPlayer Ja;

initialiseren van variabelen
PFont lettertype;
int doel;
int niveau = 1;
int score = 0;
int ingeschreven;
int prestatie;
Booleaanse win = false;
Boolean verliezen = false;
PrintWriter output;
Tekenreeks [] bestand;
Tekenreeks [] waarden;
int [] waarde;

VOID Setup {}
grootte (600, 600);

initialiseren van de poort
poort = nieuwe Serial (deze, portname, baudrate);
println(Port);

afbeelding laden
afbeelding = loadImage("view.jpg");
blueButton = loadImage("bluebutton.png");
rode toets = loadImage("redbutton.png");

muziek
Minim = nieuwe Minim(this);
Ja = minim.loadFile("yes.mp3");
Yes.Play();

lettertype
lettertype = loadFont("BerlinSansFB-Bold-48.vlw");
textFont(font);

waarden = loadStrings("Values.txt"); belastingswaarden
waarde = nieuwe int[values.length];
for (int i = 0; ik < values.length; i ++) {}
println(values);
waarde [i] = Integer.valueOf(values[i]).intValue(); tekenreeks converteren naar getal
}

bestand = loadStrings("Highscore.txt"); laden van de vorige record
for (int i = 0; ik < file.length; i ++) {}
opgenomen = Integer.valueOf(file[i]).intValue(); tekenreeks converteren naar getal
}

frameRate(value[0]);
}

VOID draw() {}
yPos = 0; Reset pijl locatie
yPos2 = 0;
View(); achtergrondontwerp tekenen

niveau 1
Als (niveau == 1) {}
Als (reset) {}
make();
doelstelling = waarde [1];
}
Als ((millis() > = value[4]) & & (score > = doel)) {}
niveau = 2;
reset = true;
redraw();
}
anders als (millis() > = {value[4])}
verliezen = true;
}
}
niveau 2
anders als (niveau == 2) {}
Als (reset) {}
make();
doelstelling = waarde [2];
}
Als ((millis() > = value[5]) & & (score > = doel)) {}
niveau = 3;
reset = true;
redraw();
}
anders als (millis() > = {value[5])}
verliezen = true;
}
}
niveau 3
anders als (niveau == 3) {}
Als (reset) {}
make();
doelstelling = waarde [3];
}
Als ((millis() > = value[6]) & & (score > = doel)) {}
winnen = true;
}
anders als (millis() > = {value[6])}
verliezen = true;
}
}

instructies
textSize(40);
tekst ("Controls", 410, 50);
textSize(20);
tekst ("'a' te raken van de linker \n'l' te raken recht", 410, 100);
Tekenreeks beat = ("doelscore:" + doel);
tekst (beat, 405, 200);
tekst ("verstreken tijd:", 410, 250);
tekst (millis () / 1000, 410, 280);
String beatH = ("Vorige Highscore:\n" + opgenomen);
Text(beatH,410,320);

niveau en score
Fill(0);
Score = score + verwezenlijking;
textSize(40);
tekst ("Score", 420, 450);
tekst (score, 420, 480);
String lev = "niveau" + niveau;
tekst (lev, 420, 410);
prestatie = 0; prestatie resetten

pijl weergeven
for (int i = 0; ik < num; i ++) {}
aanwijzers [i] .arr (); //make de pijl
pointers[i].Motion();
}

Uitvoer van besturingselementen en acties als speler is alle rondes voltooid
Als (win) {}
vulling (255, 73 73, 190);
textSize(80);
tekst ("YOU WIN!!! \nPress ESC", 80, 300);
opslaan ("Tap score" partituur + ".jpg"); kan worden gebruikt als u wilt weergeven op de winnende opslaan

vergelijken van opgeslagen highscore en hoogste score opslaan
Als (score > = opgenomen) {}
Fill(0);
tekst ("\tNEW\nHIGHSCORE!", 20, 100);
uitvoer = createWriter("Highscore.txt");
output.println(Score);
output.Flush();
output.Close();

Stuur resultaat op twitter
Twitter = nieuwe tweet(score);
twitter.sendHighscore();
}
noLoop(); weergave stopzetten
}
anders als (verliezen) {}
vulling (255, 73 73, 190);
textSize(80);
tekst ("je verliest!!! \nTRY weer: P ", 50, 350);
noLoop();
}
lezen van de seriële poort
terwijl (port.available () > 0) {}
portRead();
}
}

VOID stop() //stop muziek
{
Minim audio klassen altijd sluiten als u klaar met hen bent
Yes.Close();
Minim altijd te stoppen voordat u afsluit
Minim.stop();
Super.stop();
}

VOID view() {//background ontwerp
Smooth();
noStroke();
Background(0); witte achtergrond instellen
Image(Picture,0,0);
vulling (151 16, 201, 90); //purple bar
Quad (15 450, 385, 450, 385, 490, 15, 490);
vulling (2,56,242,30), //side balken
Quad (400, 10, 590, 10, 590, 590, 400, 590);
Fill(242,2,79,30);
Quad (405, 15, 585, 15, 585, 585, 405, 585);
afbeelding (blueButton, 0,450);
afbeelding (rode toets, 200,450);
Fill(30);
}

VOID make() {//create pijlen
num = waarde [7]; aantal pijlen
Reset = false;
wijzers = nieuwe pointer [num];

pijlen maken
for (int i = 0; ik < num; i ++) {}
aanwijzers [i] = nieuwe aanwijzer (niveau); //make een nieuwe pijl
}
achtergrond (0); //show vernieuwen
delay(2000);
}

VOID portRead() {//acts bijna als een interrupt wanneer toetsen worden ingedrukt
Fill(255);
lezen = port.read();
Als (lezen == 'A') {}
ellips (100, 550, 80, 80);
for (int i = 0; ik < pointers.length; i ++) {}
Als ((yPos > = 450)) {}
prestatie = 100;
}
}
}
anders als (lezen == 'B') {}
ellips (300 550, 80, 80);
for (int i = 0; ik < pointers.length; i ++) {}
Als ((yPos2 > = 450)) {}
prestatie = 100;
}
}
}
Fill(30);
}

VOID keyPressed() {//acts in de buurt van een interrupt wanneer toetsen worden ingedrukt
Als (sleutel == 'a') {}
ellips (100, 550, 80, 80);
Als ((yPos > = 450)) {}
delay(5);
prestatie = 100;
}
}
anders als (sleutel == 'l') {}
ellips (300 550, 80, 80);
Als ((yPos2 > = 450)) {}
delay(5);
prestatie = 100;
}
}
}

klasse aanwijzer
{
float links, rechts;
PVector pos, pos2;
PVector vel;

aanwijzer (int v) {}
POS = nieuwe PVector (100, int (willekeurige (-12000, 0)));
pos2 = nieuwe PVector (300, int (willekeurige (-12000, 0)));
vel nieuwe PVector = (0, (v * 2) + 3); alleen in de y-richting te bewegen
}

ongeldig arr() {}
Fill(255);
strokeWeight(9);
beroerte (54,83,234, 160); //vary kleuren

pijl-links
Als (pos.y < = 490) {}
Als (pos.y > = yPos) {}
yPos = pos.y;
}
beginShape();
hoekpunt (pos.x-20, pos.y);
hoekpunt (pos.x, pos.y-20);
hoekpunt (pos.x, pos.y-10);
hoekpunt (pos.x+10, pos.y-10);
vertex (pos.x+10, pos.y+10);
vertex (pos.x, pos.y+10);
vertex (pos.x, pos.y+20);
endShape(CLOSE);
}

beroerte (13,242,2, 160); //vary kleuren
pijl-rechts
Als (pos2.y < = 490) {}
Als (pos2.y > = yPos2) {}
yPos2 = pos2.y;
}
beginShape();
vertex (pos2.x+20, pos2.y);
vertex (pos2.x, pos2.y+20);
vertex (pos2.x, pos2.y+10);
hoekpunt (pos2.x-10, pos2.y+10);
hoekpunt (pos2.x-10, pos2.y-10);
hoekpunt (pos2.x, pos2.y-10);
hoekpunt (pos2.x, pos2.y-20);
endShape(CLOSE);
}
}
VOID motion() {//move pijlen
POS.Add (vel); //add de snelheid vector naar uw positie
pos2.Add(vel);
}
}

klasse tweet {}
importeren van twitter4j.conf.*;
importeren van twitter4j.internal.async.*;
importeren van twitter4j.internal.org.json.*;
importeren van twitter4j.internal.logging.*;
importeren van twitter4j.json.*;
importeren van twitter4j.internal.util.*;
importeren van twitter4j.management.*;
importeren van twitter4j.auth.*;
importeren van twitter4j.api.*;
importeren van twitter4j.util.*;
importeren van twitter4j.internal.http.*;
importeren van twitter4j.*;
importeren van twitter4j.internal.json.*;

Koord msg = "tik tik spel nieuwe Highscore!!!:";
Boolean gezonden;
int de highscore;

TwitterFactory tf;

Tweet (int hscore) {}
highscore = hscore;
ConsumerKey koord = "***";
ConsumerSecret koord = "***";
Oauth_token koord = "***";
Oauth_token_secret koord = "***";

verzonden = false;

ConfigurationBuilder cb = nieuwe ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey(ConsumerKey)
.setOAuthConsumerSecret(ConsumerSecret)
.setOAuthAccessToken(oauth_token)
.setOAuthAccessTokenSecret(oauth_token_secret);
tf = new TwitterFactory(cb.build());
}

ongeldig sendHighscore() {}
Twitter twitter = tf.getInstance();
Probeer {}
Status st = twitter.updateStatus (msg + highscore + "op" + getDateTime());
println ("met succes bijgewerkte: [" + st.getText() + "].");
verzonden = true;
}
vangst (TwitterException e) {}
println(e.getStatusCode());
}
}

String getDateTime() {}
DateFormat dateFormat = nieuwe SimpleDateFormat ("JJJJ-MM-dd uu");
Datum datum = nieuwe Date();
Return dateFormat.format(date);
}
}

_____________________________________________________________________
Arduino Code

int ledPin = 13;
int waarde1; waarde2;

VOID Setup {}
Serial.begin(9600);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(ledPin,OUTPUT);
}

void loop {}
waarde1 = analogRead(A0);
waarde2 = analogRead(A1);

waarde1 = constrain(value1,0,1023);
waarde2 = constrain(value2,0,1023);
waarde1 = map(value1,0,1023,0,1);
waarde2 = map(value2,0,1023,0,1);

Als (waarde1 < = 10) {}
Serial.Print ("waarde1 =");
Serial.println(Value1);
Serial.println("A");
}

Als (waarde2 < = 10) {}
Serial.Print ("waarde2 =");
Serial.println(Value2);
Serial.println("B");
}
delay(200);
}

U moet twee txt-bestanden met de naam 'waarde' en highscore maken ' en als je de codes leest, moet u weten hoeveel velden er zijn. Succes!

Gerelateerde Artikelen

Het maken van uw eigen candy grabber machine met behulp van de Arduino & 1Sheeld

Het maken van uw eigen candy grabber machine met behulp van de Arduino & 1Sheeld

Eenvoudig, dit project is een candy grabber machine gecontroleerd met behulp van de Arduino en 1Sheeld via Game pad Shield.1Sheeld is een platform voor Arduino waarmee u om te onttrekken in de sensoren en de mogelijkheden van uw smartphone en u kunt
Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Remote controlled webcam met behulp van de Arduino, SensorMonkey, jQuery en Justin.tv

Web in te schakelen voor uw interactieve sensoren over desktop, smartphone en tablet apparaten.Deze tutorial beschrijft in detail hoe met de gratis SensorMonkey -service op afstand besturen van een pan en tilt webcam aangesloten op een Arduino met ni
DIY | Ambilight met behulp van de Arduino Nano

DIY | Ambilight met behulp van de Arduino Nano

In dit Instructable zal ik onderwijzen u hoe kunt u uw eigen (b) ambilight voor onder $40!Houd in gedachten dat de Ambilight werkt alleen op een PC met de Bambilight software.U moet de volgende onderdelen:Individueel adresseerbare RGB LED-strip - bes
Mening gecontroleerde licht met behulp van de Arduino || Arme man EEG sensor

Mening gecontroleerde licht met behulp van de Arduino || Arme man EEG sensor

Het zou niet geweldig om te schakelen dingen in- of uitschakelen met je geest... !!!Zoals de Puzlebox baan Mobile Edition (http://www.amazon.com/Puzzlebox-Puzlebox-Orbit-Mob... ) of de coole Star Wars Science - Force Trainer ( http://www.amazon.com/S
Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

Maak een Web aangesloten Robot (voor ongeveer $500) (met behulp van een Arduino en Netbook)

dit Instructable zal u tonen hoe te bouwen van uw eigen Web aangesloten Robot (met behulp van een Arduino micro-controller en de Asus eee pc).Waarom zou u een Web aangesloten Robot willen? Om mee te spelen natuurlijk. Rijd uw robot van hele kamer of
Ik hou van u teken met behulp van een Arduino

Ik hou van u teken met behulp van een Arduino

dit is een leuke project dat een decoratief doel fungeert. Mijn vrouw vond het geweldig toen ik gaf het aan haar voor Valentijnsdag. Haar woorden waren, "Als u niet had vertelde me dat je dit hebt gemaakt, ik zou hebben gedacht was uit de winkel!&quo
Met behulp van de Arduino Uno naar programma ATTINY84-20PU

Met behulp van de Arduino Uno naar programma ATTINY84-20PU

Met behulp van de Arduino Uno naar programma ATTINY84-20PU (Newark item # 68T3783). Dit Instructable laat zien hoe met de Arduino platform om te werken met fysiek kleiner processors, zoals de ATtiny84 (84/44/24), ATtiny85 (85/45/25), en ATtiny2313. I
LED licht met behulp van een Arduino

LED licht met behulp van een Arduino

Een Arduino is een open-source van de computerhardware, open-source software en microcontroller-gebaseerde kits voor het bouwen van digitale apparaten en interactieve objecten die kunnen voelen en aansturen van fysieke apparaten. Er zijn verschillend
De ESP8266 WeMos-D1R2 programmeren met behulp van de Arduino software/IDE

De ESP8266 WeMos-D1R2 programmeren met behulp van de Arduino software/IDE

In dit Instructable begeleidt ik u door de benodigde stappen voor het installeren, configureren en het bestuur van de WeMos-D1R2 met behulp van de Arduino IDE program.WeMos-D1R2 is dat een ESP8266-12 WiFi ingeschakeld microprocessor eenheid gebaseerd
Seriële monitor ATtiny met behulp van de arduino walkthrough

Seriële monitor ATtiny met behulp van de arduino walkthrough

Allllllllllright dudes en dudets. Hier is whats up, we gonna attiny en arduino beste vrienden maken.Als u ooit hebt gewerkt met capacitieve switches weet u hoeveel het maakt je wilt je gezicht in een muur breken... Nu veronderstellen u hebben geen ma
Indringende en een PCB met behulp van een Arduino-Based CNC frezen

Indringende en een PCB met behulp van een Arduino-Based CNC frezen

Tot onlangs PCB sonderen met behulp van een Arduino was gebaseerde CNC machine maar een loutere droom. Dankzij de mensen van Chilipeppr.com we nu hebben gebaseerde een bankje van de web-gebaseerde tool voor al onze Arduino CNC producten. Het beste de
Projector IR controle met behulp van de Arduino Uno

Projector IR controle met behulp van de Arduino Uno

Tijdens Halloween en Kerstmis, I-project video op een venster bij mijn huis. Het systeem maakt gebruik van een LED-projector die virtuele personages op een venster wordt weergegeven. Het effect maakt het verschijnen alsof het teken (s) echt in uw hui
Programmeren van uw chipkit dp32 met behulp van de Arduino IDE

Programmeren van uw chipkit dp32 met behulp van de Arduino IDE

chipKIT platen hebben meestal veel meer geheugen en rekenkracht dan vele Arduino boards Arduino boards, en dientengevolge, ze zijn zo veel beter in het manipuleren van gegevens.Aan de andere kant is de Arduino IDE gemakkelijk te gebruiken en te begri
ESP8266 ESP-12E NodeMCU met behulp van de Arduino IDE - een Tutorial programmering

ESP8266 ESP-12E NodeMCU met behulp van de Arduino IDE - een Tutorial programmering

NodeMCU Dev Board is gebaseerd op grote schaal onderzocht esp8266 systeem op Spaander van Expressif. Het gecombineerde functies van WIFI accesspoint en station + microcontroller en gebruikt eenvoudige LUA gebaseerde programmeertaal. ESP8266 NodeMCU a