D.D.Tap - interaktiva spel plattform med bearbetning, Arduino och Twitter



D.D.Tap är ett spel som kan spelas med hjälp av sensorer kopplade till Arduino och gränssnitt till spelet producerade med bearbetning. Det är en enkel dance dance revolution som spel som ackumuleras punkt när spelaren aktiverar sensorerna eller tryck på tangentbordet för när slumpmässiga pilarna når den röda genomskinlig bar. Banan byggdes på Arduino är enkel eftersom jag hade begränsad sensorer. Jag använde fotoceller i en pull-up konfiguration som sensorer. Jag laddade upp appleten för @http://www.openprocessing.org/visuals/?visualID=29670 men för Twitter funktionen ska fungera, måste du ange din egen konsumenten nyckel och så vidare tas från kontot OAuth på http://dev.twitter.com/apps . Lastning på openprocessing.org är ganska lång på grund av den stora filen så att hoppa över den, tryck bara på "Source Code".
Också, jag använde låten yeahx3 av Chris Brown som det har catchy beat för slumpmässiga pilarna ~

Resultatet är OK men jag skulle ändå vilja åtgärda problemet med ackumulera mer än en bonus för varje pil. Problemet var inte så betydande när spelade med tangentbordet men när dess läsa data från com-porten, datahastigheten var så snabbt att det utlöser bonusar mer än en gång för varje pil. Jag skulle bli glad om någon vill hjälpa till med koderna som behandling. Jag trodde att skapa en array för att kontrollera bonusar men som inte fungerade ganska bra. Så, jag på något sätt hälften löst det problemet med hjälp av försening i Arduino koden. Detta introducerade naturligtvis andra problem såsom; om båda sidor av pilen når samtidigt, kunde bara en pil bonus begäras. Videon visar exemplet interaktion och att om det fanns en ny highscore, poängen skulle bokföras som en tweet till din sida. Jag är villig att acceptera någon uppgradering förslag.

Här är koden! Utan twitter nyckel naturligtvis...
grupp av pilar
pekaren [] tips;
Boolean återställa = sant;
int num;
offentliga statisk float yPos, yPos2;

Twitter initiering
Tweet twitter;

Seriell kommunikation
import processing.serial.*;
Seriell port;
Sträng portname = "COM1";
int baudvärde = 9600;
int läsa = 0;

PImage bild, blueButton, röda;
initiera spela för mp3
import ddf.minim.*;
Minim minim;
AudioPlayer Ja;

initiera variabler
PFont teckensnitt;
int mål;
int nivå = 1;
int poäng = 0;
int registreras.
int mål uppnås.
booleska win = false;
Boolean förlora = false;
PrintWriter utgång;
String [] fil;
[] Strängvärden;
int [] värde;

void setup() {
storlek (600, 600);

initiera port
Port = ny följetong (här, portname, baudvärde);
println(port);

Ladda bilden
bild = loadImage("view.jpg");
blueButton = loadImage("bluebutton.png");
redButton = loadImage("redbutton.png");

musik
Minim = nya Minim(this);
Ja = minim.loadFile("yes.mp3");
Yes.Play();

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

värden = loadStrings("Values.txt"); Ladda värden
värde = nya int[values.length];
för (int jag = 0; jag < values.length; i ++) {
println(Values);
värde [i] = Integer.valueOf(values[i]).intValue(); konvertera sträng till heltal
}

Fil = loadStrings("Highscore.txt"); Ladda tidigare rekordet
för (int jag = 0; jag < file.length; i ++) {
spelade in = Integer.valueOf(file[i]).intValue(); konvertera sträng till heltal
}

frameRate(value[0]);
}

void draw() {
yPos = 0; återställa pil läge
yPos2 = 0;
View(); Rita bakgrund

nivå 1
om (nivå == 1) {
om (reset) {
make();
Target = värde [1].
}
om ((millis() > = value[4]) & & (score > = target)) {
Level = 2;
återställa = sant;
redraw();
}
annars om (millis() > = value[4]) {
förlora = sant;
}
}
nivå 2
annars om (nivå == 2) {
om (reset) {
make();
Target = värde [2].
}
om ((millis() > = value[5]) & & (score > = target)) {
Level = 3.
återställa = sant;
redraw();
}
annars om (millis() > = value[5]) {
förlora = sant;
}
}
nivå 3
annars om (nivå == 3) {
om (reset) {
make();
Target = värde [3].
}
om ((millis() > = value[6]) & & (score > = target)) {
vinna = sant;
}
annars om (millis() > = value[6]) {
förlora = sant;
}
}

instruktioner
textSize(40);
text ("kontroller", 410, 50);
textSize(20);
text (""a"att slå vänster \n'l" att slå rätt ", 410, 100);
Sträng beat = ("målet poäng:" + mål);
text (beat, 405, 200);
text ("Ellapsed tid:", 410, 250);
text (millis () / 1000, 410, 280);
Sträng beatH = ("Tidigare Highscore:\n" + inspelade);
text(beatH,410,320);

nivå och poäng
Fill(0);
poäng = poäng + mål uppnås.
textSize(40);
text ("Score", 420, 450);
text (poäng, 420, 480);
Sträng lev = "nivå" + nivå.
text (lev, 420, 410);
prestation = 0; återställa prestation

Visa pilen
för (int jag = 0; jag < num; i ++) {
pekare [i] .arr (); //make på pilen
pointers[i].Motion();
}

Styr produktionen och åtgärder när spelare kommer alla ronder
om (win) {
fyllning (255, 73, 73, 190);
textSize(80);
text ("du vinner!!! \nPress ESC", 80, 300);
Spara ("Tap poäng" + poäng + ".jpg"); kan användas om du vill spara display på vinnande

jämföra lagrade highscore och spara högsta poäng
om (score > = inspelad) {
Fill(0);
text ("\tNEW\nHIGHSCORE!!!", 20, 100);
output = createWriter("Highscore.txt");
output.println(score);
output.flush();
output.Close();

Skicka resultatet till twitter
Twitter = nya tweet(score);
twitter.sendHighscore();
}
noLoop(); stoppa display
}
annars om (förlora) {
fyllning (255, 73, 73, 190);
textSize(80);
text ("du FÖRLORAR! \nTRY igen: P ", 50, 350);
noLoop();
}
Läs seriell port
samtidigt (port.available () > 0) {
portRead();
}
}

void stop() //stop musik
{
alltid nära Minim ljud klasser när du är klar med dem
Yes.Close();
alltid stoppa Minim innan spännande
Minim.stop();
Super.stop();
}

void view() {//background design
Smooth();
noStroke();
Background(0); använda vit bakgrund
Image(Picture,0,0);
fyllning (151, 16, 201, 90), //purple bar
Quad (15, 450, 385, 450, 385, 490, 15, 490);
fyllning (2,56,242,30); //side barer
Quad (400, 10, 590, 10, 590, 590, 400, 590);
Fill(242,2,79,30);
Quad (405, 15, 585, 15, 585, 585, 405, 585);
bild (blueButton, 0,450);
bild (röda, 200,450);
Fill(30);
}

void make() {//create pilar
NUM = värde [7]. antalet pilar
återställa = false;
pekare = nya pointer [num];

göra pilar
för (int jag = 0; jag < num; i ++) {
pekare [i] = nya pointer (nivå); //make en ny pil
}
bakgrund (0), //show uppdatera
Delay(2000);
}

void portRead() {//acts nästan som ett avbrott när tangenter trycks ned
Fill(255);
läsning = port.read();
om (läser == "A") {
ellips (100, 550, 80, 80);
för (int jag = 0; jag < pointers.length; i ++) {
om ((yPos > = 450)) {
prestation = 100;
}
}
}
annars om (läser == 'B') {
ellips (300, 550, 80, 80);
för (int jag = 0; jag < pointers.length; i ++) {
om ((yPos2 > = 450)) {
prestation = 100;
}
}
}
Fill(30);
}

void keyPressed() {//acts nära ett avbrott när tangenter trycks ned
om (nyckel == "a") {
ellips (100, 550, 80, 80);
om ((yPos > = 450)) {
Delay(5);
prestation = 100;
}
}
annars om (nyckel == "l") {
ellips (300, 550, 80, 80);
om ((yPos2 > = 450)) {
Delay(5);
prestation = 100;
}
}
}

klass pekaren
{
flyttal vänster, höger;
PVector pos, pos2;
PVector vel;

pekaren (int v) {
POS = nya PVector (100, int (random (-12000, 0)));
POS2 = nya PVector (300, int (random (-12000, 0)));
Vel = nya PVector (0, (v * 2) + 3); bara flytta i y-riktningen
}

void arr() {
Fill(255);
strokeWeight(9);
stroke (54,83,234, 160); //vary färger

vänster pil
om (pos.y < = 490) {
om (pos.y > = yPos) {
yPos = pos.y;
}
beginShape();
vertex (pos.x-20, pos.y);
vertex (pos.x, pos.y-20);
vertex (pos.x, pos.y-10);
vertex (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);
}

stroke (13,242,2, 160); //vary färger
höger pil
om (pos2.y < = 490) {
om (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);
vertex (pos2.x-10, pos2.y+10);
vertex (pos2.x-10 pos2.y-10);
vertex (pos2.x, pos2.y-10);
vertex (pos2.x, pos2.y-20);
endShape(CLOSE);
}
}
void motion() {//move pilar
POS.Add (vel); //add velocity vektorn till din position
POS2.Add(Vel);
}
}

klass tweet {
import twitter4j.conf.*;
import twitter4j.internal.async.*;
import twitter4j.internal.org.json.*;
import twitter4j.internal.logging.*;
import twitter4j.json.*;
import twitter4j.internal.util.*;
import twitter4j.management.*;
import twitter4j.auth.*;
import twitter4j.api.*;
import twitter4j.util.*;
import twitter4j.internal.http.*;
import twitter4j.*;
import twitter4j.internal.json.*;

Sträng msg = "Tap Tap spel ny Highscore!:";
Booleskt värde skickas;
int highscore;

TwitterFactory tf;

Tweet (int hscore) {
highscore = hscore;
String ConsumerKey = "***";
String ConsumerSecret = "***";
String oauth_token = "***";
String oauth_token_secret = "***";

skickade = false;

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

void sendHighscore() {
Twitter twitter = tf.getInstance();
försök {
Status st = twitter.updateStatus (msg + highscore + "till" + getDateTime());
println ("framgångsrikt uppdaterade: [" + st.getText() + "].");
skickade = sant;
}
fånga (TwitterException e) {
println(e.getStatusCode());
}
}

Sträng getDateTime() {
DateFormat dateFormat = nya SimpleDateFormat ("åååå-MM-dd hh");
Datum-datum = nya Date();
återvända dateFormat.format(date);
}
}

_____________________________________________________________________
Arduino kod

int ledPin = 13.
int värde1, värde2;

void setup() {
Serial.BEGIN(9600);
pinMode(A0,INPUT);
pinMode(A1,INPUT);
pinMode(ledPin,OUTPUT);
}

void loop() {
värde1 = analogRead(A0);
value2 = analogRead(A1);

värde1 = constrain(value1,0,1023);
value2 = constrain(value2,0,1023);
värde1 = map(value1,0,1023,0,1);
value2 = map(value2,0,1023,0,1);

om (värde1 < = 10) {
Serial.Print ("värde1 =");
Serial.println(value1);
Serial.println("A");
}

om (värde2 < = 10) {
Serial.Print ("Value2 =");
Serial.println(value2);
Serial.println("B");
}
Delay(200);
}

Du måste skapa två txt filer som heter "värde" och highscore "och om du läser koder, bör du veta hur många fält det är. Lycka till!

Relaterade Ämnen

Kontrollera en RC servomotor med en Arduino och två momentan växlar

namnet säger allt. Kontrollera en RC bil servomotor med en Arduino och några motstånd, hoppare ledningar och två taktil switchar. Jag gjorde detta den andra dagen jag fick min Arduino, så jag är ganska stolt över mig själv.Steg 1: Reservdelslista Oke...

Spela ljud med Intel Edison och Arduino använder en Bluetooth-högtalare

Detta är en kort introduktion om hur man spelar ljud genom Intel Edison styrelsen när du använder Arduino som en programmeringsmiljö.Sedan Arduino styrelsen för Intel Edison inte har någon ljud capbabilities, vi använder en billigt Bluetooth-högtalar...

Spela mp3 med din arduino (lätt)

Du kan spela mp3-filer med din arduino!du behöver bara en Ethernet-shield och en micro sd-kort!Steg 1: materialdu behöver bara dessa saker:-mikro-sd-sköld med sd-kortplats-Talarens-arduino (jag använde en uno)-Vissa trådSteg 2: hur?Titta på denna vid...

Göra en bärbara streckkodsläsare med en arduino och en cuecat

runt om vänden av århundradet, det var ett företag vars affärsmodell ingår ger bort gratis streckkodsläsare som emulerar tangentbord. En relativt enkel mod till dessa cuecat skannrar bort krypteringen och gjorde dem lämpliga för skanning av streckkod...

Med en matrisskrivare LED med en Arduino och SKIFT registrera

The Siemens DLO7135 Dot matrix LED är en fantastisk optoelektronik. Det har faktureras som en 5 x 7 matrisskrivare Intelligent Display (r) med minne/dekoder/Driver. Tillsammans med detta minne, den har en 96-teckens ASCII-display set med övre och små...

Att göra en hypnotisk disk med en Arduino och små DC motor.

Min uppmärksamhet blev tillfångatagen av en gammal film jag såg nyligen. Det visade en snurrande spiral disk som sätter människor i en hypnotisk trance. Så, jag bestämde mig att bygga en. Naturligtvis, har min "hypnotiska" disk inte hypnotiserad...

Styra en kamera med en Arduino och RS232 sköld

Denna handledning visar dig hur du kan styra många olika aspekter av en kameror drift med en Arduino. Dessa operation kan vara pan och tilt kamera, zoom och fokus lins, och RGB egenskaper. Arduinoen kommer att utnyttja en RS232 sköld och skicka hexad...

Motion Tracker med PIRs, Arduino och en Servo

detta är min motion tracking huvudet med fyra PIRs (passiva infraröda sensorer), en Arduino Uno styrelse och en servo.Det är ett enkelt sätt att ge intryck av att huvudet (birdy) faktiskt följer rörelsen.Det är mycket lätt att bygga men lite tidskräv...

Väderstation med SAMIIO, Arduino och Raspberry Pi

Den här artikeln visas hur du använder SAMISKA med enkla, off-the-shelf sensorer och hårdvara. Specifikt, blir vi insamling klimatdata från en billig temperaturgivare och vidarebefordra dessa data till molnet via SAMI APIs. Därifrån kan vi analysera...

Hur man mäter temperaturen mycket noggrant med en Arduino och en TSYS01 temperatur Sensor styrelse.

Medan de studerar på universitetet var vi ifrågasätts som en del av en kurs arbete på att designa en låda med mycket exakt temperaturkontroll. Om projektet lyckas, skulle flera boxar byggas och används i ett forskningsprojekt som studerar effekten av...

ZAPpelin, eller hur du tränar din luftskepp med en Arduino och IR-fjärrkontroll

är det flyger sigill? En flaxande främmande?Nej det är en ZAPpelin, en Arduino kontrollerade inomhus luftskepp, setup att lära i signalerna från en IR-fjärr att befalla det.Detta projekt kom till liv på den tredje Arduino Jam Februari 15 to17th 2013,...

Arduino / bearbetning - HC-SR04 RADAR med bearbetning & Arduino

Hej världen! Idag gjorde jag en cool liten MiNi RADAR upptäcker objekt och visar den på datorn med hjälp av den bearbetning IDE & Arduino. Kolla in nästa steg för den schematiska reservdelslista & koder.Du behöver 2 IDE.Arduino IDEBearbetning IDEI...

CupBots - 3D tryckt Robotic plattform för Arduino och Raspberry Pi

Här är en stor helg robotics projekt att genomföra med vänner eller folk på din lokala maker utrymme. Behöver du en 3D-skrivare händig till 3D tryck STL filer bifogas som en del av stegen nedan och en kopp, i mitt fall, jag använder en venti kopp frå...

Kör en Stepper Motor med en Arduino och en A4988 Stepstick/Pololu drivrutin

Det finns flera sätt att göra en stegmotor som kör, och det bästa sättet beror på tillämpningen, motor och elektronik tillgängliga. För att köra en stegmotor från en Arduino är dessa de huvudsakliga sätt att gå1. en ULN2003 Darlington förare ombord....

Styra två lysdioder med en Arduino och bitVoicer

Så vad jag vill göra här är att göra flera saker med två lysdioder med taligenkänningJag använder bitvoicer kan du få det härSteg 1: Del förteckningSå jag gör detta med som lite delar som jag kan, är här listan:Grön LEDRöd LEDSkärbräda1k ResistorStar...

Ponghatduino: Spela pong med din hatt

medan dess inte exakt OCZ NIA. Pong-hatt-duino är sätt att spela pong med bara kraften i ditt sinne. Tja, ögonbrynen iaf...Detta är i grunden en ändring av Tom Igoe Monski Pong projektet från den utmärkta boken Att göra saker prata (O'Reilly). När ja...

MAME spel bord med Raspberry Pi

inspirerad av liknande projekt online, jag har jobbat med en granne att bygga ett par soffbord MAME-baserade retro gaming tabeller. Den mer kompakt är mitt; den större med två kontroller är hans. Bilder ofboth används i detta instructable.Dessa använ...

Carduino - A enkla Arduino robotics plattform med ett eget bibliotek

detta är, som titeln säger, en Arduino-baserad robotics plattform, med ett eget bibliotek. "Standard"-modellen kommer med två tillbaka motorer, två omni-hjul fram, och en distansera sensor monterad på framsidan. Det har också bakbord utrymme på...

TV KONTROLLERBAR fjärrdatorn MP3 spelare använder ARDUINO och bearbetning

Hej var och en. här visar jag min projekt TV kontrollerbar fjärrdatorn MP3 spelare med bearbetning programvara och arduino ombord. Denna projektidé är baserad på att kontrollera datorn med TV-fjärrkontrollen. I detta projekt skapade jag egna MP3-spel...