D.D.Tap - plataforma de juegos interactiva usando procesamiento, Arduino y Twitter

El D.D.Tap es un juego que se puede reproducir con sensores conectados a Arduino y la interfaz del juego produjo con el proceso. Es una simple danza baile revolución como juego que acumula puntos cuando el jugador activa los sensores o presione las teclas del teclado cuando las flechas al azar alcanza la barra transparente roja. El circuito construido en Arduino es simple como yo había limitado los sensores. Usé las fotocélulas en configuración pull-up para actuar como sensores. He subido el applet también @http://www.openprocessing.org/visuals/?visualID=29670 pero para que la función de Twitter trabajar, debe introducir su propia clave de consumo y así sucesivamente tomadas de su cuenta de OAuth en http://dev.twitter.com/apps . Carga en openprocessing.org es muy largo debido al gran archivo para saltarlo, solo presione "Código fuente".
También, usé el yeahx3 de la canción de Chris Brown ya que tiene el pegadizo ritmo de las flechas al azar ~

El resultado es aceptable pero aún me gustaría solucionar el problema de acumular más de un bono para cada flecha. Este problema no era tan importante cuando juega con el teclado pero cuando sus lectura serial de datos del puerto com, la tarifa de datos era tan rápida que provoca más de una vez los bonos para cada flecha. Alegraría que alguien ayudaría con los códigos de procesamiento. Pensé en crear un array para comprobar los bonos pero que no funcionaba muy bien. Así que, de alguna manera medio solucioné ese problema mediante el retraso en el código de Arduino. Esto por supuesto que te presenten otros problemas tales como; Si ambos lados de la flecha alcanza al mismo tiempo, sólo una flecha Bono podría ser reclamado. El video muestra el ejemplo de la interacción y que si había una nueva puntuación, la puntuación sería publicada como un tweet en tu página. Estoy dispuesto a aceptar cualquier sugerencia de mejora.

Aquí está el código!!! Sin el twitter clave por supuesto...
Grupo de flechas
punteros de puntero [];
restablece valor booleano = true;
int num;
flotación estática pública yPos, yPos2;

inicialización de Twitter
twitter Tweet;

Comunicación en serie
Import processing.serial.*;
Puerto serial;
String portname = "COM1";
int baudrate = 9600;
lectura de int = 0;

PImage imagen, blueButton, redButton;
inicializar el juego mp3
Import ddf.minim.*;
Mínima mínima;
AudioPlayer sí;

inicializar las variables
PFont fuente;
int blanco;
int nivel = 1;
int cuenta = 0;
int registrado;
logro del int;
Victoria boolean = false;
perder el boolean = false;
PrintWriter salida;
Archivo de String [];
String [] valores;
int [] valor;

void setup() {}
tamaño (600, 600);

inicializar el puerto
puerto = serie nueva (este, portname, velocidad en baudios);
println(Port);

Cargar imagen
imagen = loadImage("view.jpg");
blueButton = loadImage("bluebutton.png");
redButton = loadImage("redbutton.png");

música
mínima = nuevo Minim(this);
sí = minim.loadFile("yes.mp3");
Yes.Play();

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

valores = loadStrings("Values.txt"); valores de carga
valor = int[values.length nuevo];
para (int i = 0; i < values.length; i ++) {}
println(values);
valor [i] = Integer.valueOf(values[i]).intValue(); convertir string a entero
}

archivo = loadStrings("Highscore.txt"); cargar registro de previo
para (int i = 0; i < file.length; i ++) {}
grabado = Integer.valueOf(file[i]).intValue(); convertir string a entero
}

frameRate(value[0]);
}

void draw() {}
yPos = 0; restablecer la ubicación de la flecha
yPos2 = 0;
View(); dibujar el diseño del fondo

nivel 1
Si (nivel == 1) {}
Si {} (reset)
make();
destino = valor [1];
}
Si ((millis() > = value[4]) & & (puntuación > = objetivo)) {}
nivel = 2;
RESET = true;
REDRAW();
}
else if (millis() > = {value[4])}
perder = true;
}
}
nivel 2
else if (nivel == 2) {}
Si {} (reset)
make();
destino = valor [2];
}
Si ((millis() > = value[5]) & & (puntuación > = objetivo)) {}
Level = 3;
RESET = true;
REDRAW();
}
else if (millis() > = {value[5])}
perder = true;
}
}
nivel 3
else if (nivel == 3) {}
Si {} (reset)
make();
destino = valor [3];
}
Si ((millis() > = value[6]) & & (puntuación > = objetivo)) {}
ganar = true;
}
else if (millis() > = {value[6])}
perder = true;
}
}

instrucciones
textSize(40);
texto ("controles", 410, 50);
textSize(20);
texto ("'a' para golpe izquierdo \n'l' para golpear la derecha", 410, 100);
Cadena compás = ("resultado de objetivo:" + destino);
texto (beat, 405, 200);
texto ("tiempo de Ellapsed:", 410, 250);
texto (millis () / 1000, 410, 280);
String City = ("Highscore:\n anterior" + grabado);
Text(beatH,410,320);

nivel y puntuación
Fill(0);
puntuación = puntuación + logro;
textSize(40);
texto ("Score", 420, 450);
texto (puntuación, 420, 480);
Cadena lev = "nivel" + nivel;
texto (lev, 420, 410);
logro = 0; restablecer el logro

flecha de la pantalla
para (int i = 0; i < num; i ++) {}
indicadores [i] .arr (); //make la flecha
Pointers[i].Motion();
}

Salida de controles y acciones cuando el jugador termina las rondas
Si {} (win)
relleno (255, 73, 73, 190);
textSize(80);
texto ("usted gana!!!!!! \nPress ESC", 80, 300);
Save ("Tap puntuación" + resultado + ".jpg"); se puede utilizar si desea guardar la pantalla al ganador

Comparar resultado almacenado y guardar la puntuación más alta
Si (puntuación > = grabado) {}
Fill(0);
texto ("\tNEW\nHIGHSCORE!!!", 20, 100);
salida = createWriter("Highscore.txt");
output.println(score);
output.Flush();
output.Close();

enviar resultado a twitter
Twitter = nuevo tweet(score);
twitter.sendHighscore();
}
noLoop(); pantalla STOP
}
else if (perder) {}
relleno (255, 73, 73, 190);
textSize(80);
texto ("pierdes!!!!!! \nTRY otra vez: P ", 50, 350);
noLoop();
}
leer puerto serie
mientras que (port.available () > 0) {}
portRead();
}
}

void stop() //stop música
{
cierre siempre las clases audio mínima Cuando acabes con ellos
Yes.Close();
siempre parada mínima antes de salir
Minim.STOP();
Super.STOP();
}

void view() {//background diseño
Smooth();
noStroke();
Background(0); establecer fondo blanco
Image(Picture,0,0);
relleno (151, 16, 201, 90), bar //purple
Quad (15, 450, 385, 450, 385, 490, 15, 490);
relleno (2,56,242,30); //side barras
Quad (400, 10, 590, 10, 590, 590, 400, 590);
Fill(242,2,79,30);
Quad (405, 15, 585, 15, 585, 585, 405, 585);
imagen (blueButton, 0,450);
imagen (redButton, 200.450);
Fill(30);
}

void make() {//create flechas
Num = valor [7]; número de flechas
RESET = false;
indicadores = nuevo puntero [num];

hacer flechas
para (int i = 0; i < num; i ++) {}
indicadores [i] = nuevo puntero (nivel); //make una nueva flecha
}
Fondo (0); //show actualización
Delay(2000);
}

void portRead() {//acts casi como una interrupción cuando se presionan las teclas
Fill(255);
lectura = port.read();
Si (leer == 'A') {}
elipse (100, 550, 80, 80);
para (int i = 0; i < pointers.length; i ++) {}
Si ((yPos > = 450)) {}
logro = 100;
}
}
}
else if (lectura == 'B') {}
elipse (300, 550, 80, 80);
para (int i = 0; i < pointers.length; i ++) {}
Si ((yPos2 > = 450)) {}
logro = 100;
}
}
}
Fill(30);
}

void keyPressed() {//acts cerca de una interrupción cuando se presionan las teclas
Si (clave == 'a') {}
elipse (100, 550, 80, 80);
Si ((yPos > = 450)) {}
Delay(5);
logro = 100;
}
}
else if (clave == 'l') {}
elipse (300, 550, 80, 80);
Si ((yPos2 > = 450)) {}
Delay(5);
logro = 100;
}
}
}

puntero de la clase
{
flotador hacia la izquierda, derecha;
PVector pos, pos2;
Vel de PVector;

puntero (int v) {}
pos = PVector nuevo (100, int (random (-12000, 0)));
POS2 = PVector nueva (300, int (random (-12000, 0)));
Vel = PVector nuevas (0, (v * 2) + 3); sólo avanzando en dirección y
}

void arr() {}
Fill(255);
strokeWeight(9);
movimiento (54,83,234, 160); //vary colores

flecha izquierda
Si (pos.y < = 490) {}
Si (pos.y > = yPos) {}
yPos = pos.y;
}
beginShape();
vértice (pos.x-20, pos.y);
vértice (pos.x, pos.y-20);
vértice (pos.x, pos.y-10);
vértice (pos.x+10, pos.y-10);
vértice (pos.x+10, pos.y+10);
vértice (pos.x, pos.y+10);
vértice (pos.x, pos.y+20);
endShape(CLOSE);
}

movimiento (13,242,2, 160); //vary colores
flecha derecha
Si (pos2.y < = 490) {}
Si (pos2.y > = yPos2) {}
yPos2 = pos2.y;
}
beginShape();
vértice (pos2.x+20, pos2.y);
vértice (pos2.x, pos2.y+20);
vértice (pos2.x, pos2.y+10);
vértice (pos2.x-10, pos2.y+10);
vértice (pos2.x-10 pos2.y-10);
vértice (pos2.x, pos2.y-10);
vértice (pos2.x, pos2.y-20);
endShape(CLOSE);
}
}
void motion() {//move flechas
pos.Add (vel); //add el vector de velocidad a su posición
POS2.Add(vel);
}
}

clase 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.*;

String msg = "Tap Tap juego nueva puntuación más alta!:";
Boolean enviado;
int resultado;

TwitterFactory tf;

Tweet (int hscore) {}
puntuación = hscore;
Cadena ConsumerKey = "***";
Cadena ConsumerSecret = "***";
Cadena oauth_token = "***";
Cadena oauth_token_secret = "***";

enviar = false;

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

void sendHighscore() {}
Twitter twitter = tf.getInstance();
trate de {}
Estado st = twitter.updateStatus (msg + resultado + "en" + getDateTime());
println ("actualizados correctamente: [" + st.getText() + "].");
envió = true;
}
catch (TwitterException e) {}
println(e.getStatusCode());
}
}

String getDateTime() {}
DateFormat dateFormat = new SimpleDateFormat ("yyyy-MM-dd HH");
Fecha fecha = new Date ();
volver dateFormat.format(date);
}
}

_____________________________________________________________________
Código de Arduino

int ledPin = 13;
int valor1, valor2;

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

void loop() {}
valor1 = analogRead(A0);
valor2 = analogRead(A1);

valor1 = constrain(value1,0,1023);
valor2 = constrain(value2,0,1023);
valor1 = map(value1,0,1023,0,1);
valor2 = map(value2,0,1023,0,1);

Si (valor1 < = 10) {}
Serial.Print ("valor1 =");
Serial.println(value1);
Serial.println("A");
}

Si (valor2 < = 10) {}
Serial.Print ("Value2 =");
Serial.println(value2);
Serial.println("B");
}
Delay(200);
}

Tienes que crear dos archivos de txt llamados 'valor' y la puntuación más alta ' y si usted lee los códigos, usted debe saber cuantos campos hay son. ¡Buena suerte!

Artículos Relacionados

: Rápido 5 Min No soldadura tapa-toque timbre juego

: Rápido 5 Min No soldadura tapa-toque timbre juego

Esto le da los planes para instalar la versión más rápida de un sistema de timbre tipo quiz show que he visto. Sólo necesita un par LEDs, algunos clips de gator y un Arduino, y usted tendrá un sistema de timbre para 4 personas en menos de 5 minutos!
Plataforma de juegos de la consola

Plataforma de juegos de la consola

Para todos nosotros los jugadores entendemos que organización y pantalla pueden ser un poco de un puñado a veces. Alcanzar la última pantalla/colección es una batalla continua.Mi objetivo era crear una plataforma de juegos de consola que muestra mi f
Usando la Arduino Uno al programa ATTINY84-20PU

Usando la Arduino Uno al programa ATTINY84-20PU

Usando la Arduino Uno al programa ATTINY84-20PU (Newark item # 68T3783). Este Instructable muestra cómo utilizar la plataforma de Arduino para trabajar con procesadores físicamente más pequeños, como el ATtiny84 (84-44-24), ATtiny85 (85-45-25) y el A
Portable juego de arcade de Arduino

Portable juego de arcade de Arduino

En este proyecto mostrará usted cómo hacer una máquina de arcade portable fácil usando la Arduino UNO y una LCD de Nokia 5110Esta es la versión 2 de "juego de jugadores de Arduino 2"Paso 1: Piezas y herramientasAbajo hay una lista de piezas y he
Simple remoto datos trazar usando Android / Arduino / pfodApp

Simple remoto datos trazar usando Android / Arduino / pfodApp

Simple remoto datos trazar usando Android / Arduino / pfodApp Este Instructable muestra cómo trazar datos del sensor Arduino en tu móvil Android y captura para posteriormente descargar a su ordenador.  Estas instrucciones están también disponibles en
Juego archivo usando arduino

Juego archivo usando arduino

este es un circuito simple para reproducir archivos wav usando arduino Nano V3.0, consta de 4 botones, cada uno reproducir archivo wav específico cargado a la tarjeta SD.Paso 1: partes 1-Arduino Nano V3.0 (yo usé la versión de chino llamada Funduino
Plataforma mesa juego de tronos - Tutorial DIY

Plataforma mesa juego de tronos - Tutorial DIY

¿Quieres saber cómo se puede convertir en una mesa con un mapa de Poniente en la parte superior una plataforma? Pues bien, en suerte!Elementos necesarios:SierraMartilloPata de cabraConjunto PlazaPlumaLápizDestornilladorCintaMapa de Poniente en el tam
Das Blinken Bonken! Una bola de arduino lanza plataforma de juego.

Das Blinken Bonken! Una bola de arduino lanza plataforma de juego.

Este es un divertido y fácil proyecto que he construido como un regalo de Navidad para mi hijo que le encanta tirar cosas. Mira el video para ver lo que puede hacer.Está construido de un Arduino UNO regular, sensores de presión de velostat y tira del
Ponghatduino: Juego pong usando su sombrero

Ponghatduino: Juego pong usando su sombrero

mientras que no exactamente el OCZ NIA. Pong-sombrero-duino es jugar pong utilizando sólo el poder de tu mente. Bueno, las cejas de todos modos...Esto es básicamente una modificación del proyecto de Monski Pong de Tom Igoe del excelente libro Hacer c
Mano robótica interactiva usando arduino...

Mano robótica interactiva usando arduino...

Esta mano robótica es construida utilizando cuatro servomotores y cuatro potenciómetros como sensores de posición. los sensores de posición se unen a un guante para que se utiliza para controlar el brazo robótico interactivo. La mano robótica represe
Magpi: La interfaz de plataforma de juegos Micro Arduino

Magpi: La interfaz de plataforma de juegos Micro Arduino

Aquí es una consola de juegos portátil retro que construí con mi hijo. Utiliza un microcontrolador de Arduino, una pequeña pantalla LCD, botones, caso impreso 3D y tablero de caseros "PC". Es realmente bastante fácil de soldadura y poner junto.
Reemplazo pierna tapas para tablero de rotafolio (usando Sugru)

Reemplazo pierna tapas para tablero de rotafolio (usando Sugru)

Reemplace los tapones de la pierna para su Junta de rotafolio (o tablero blanco, silla etc.) usando Sugru. Es muy simple. Usé un paquete mini de Sugru por la pierna. Sólo rodar la Sugru dentro de una esfera, aplanarla y adjuntarlo a la pierna. Utilic
Mi plataforma de juegos de azar.

Mi plataforma de juegos de azar.

Here's my gaming rig I built in February of 2012. Las especificaciones son:Cooler master Haf 912 caso.Tarjeta de gráficos de Radeon 6870.Procesador de AMD fx-8120.8 gigabytes de Ram de rip-quijada G-habilidadASRock am3 extreme3 Motherboard, Tarjeta m
Juego de zombies de Arduino en Detector

Juego de zombies de Arduino en Detector

La siguiente actividad se basa en una lección para los profesores que utilizan el espacio Ardusat del Kit (http://ardusat.com). Sin embargo, esta actividad funcionará para cualquiera con un Arduino, sensor de luminosidad (estamos usando el SparkFun T