Skip to content

Instantly share code, notes, and snippets.

@joachimhs
Last active August 29, 2015 14:17
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save joachimhs/0ff3ece45a3deba5d5ff to your computer and use it in GitHub Desktop.
Save joachimhs/0ff3ece45a3deba5d5ff to your computer and use it in GitHub Desktop.
PixelHunt
#include <Adafruit_NeoPixel.h>
int ledPin = 9;
int lamper = 64;
int spillerEnPosisjon = 0;
int spillerEnPoeng = 0;
int spillerEnX = 0;
int spillerEnY = 1;
int pixelPoeng[64];
int speed = 100;
Adafruit_NeoPixel strip = Adafruit_NeoPixel(lamper, ledPin, NEO_GRB + NEO_KHZ800);
void setup() {
for (int pixel = 0; pixel < lamper; pixel++) {
pixelPoeng[pixel] = 0;
}
strip.begin();
strip.show();
pinMode(ledPin, OUTPUT);
Serial.begin(9600);
}
int pixelNumber(int led) {
int kolonne = led / 8;
int rad = led % 8;
int realPixel = led;
if (kolonne % 2 != 0) {
realPixel = (8* kolonne) + (7 -rad);
}
return realPixel;
}
void setDisplayColor(int red, int green, int blue) {
for (int pixel = 0; pixel < lamper; pixel++) {
strip.setPixelColor(pixelNumber(pixel), red, green, blue);
}
}
void setColor(int pixel, int red, int green, int blue) {
strip.setPixelColor(pixelNumber(pixel), red, green, blue);
}
void step() {
setDisplayColor(0,0,0);
if (pixelPoeng[spillerEnPosisjon] > 0) {
spillerEnPoeng++;
pixelPoeng[spillerEnPosisjon] = 0;
}
for (int pixel = 0; pixel < lamper; pixel++) {
if (pixel < spillerEnPoeng) {
setColor(pixel, 0, 0, 5);
}
if (pixelPoeng[pixel] > 0) {
setColor(pixel, 0, 0, pixelPoeng[pixel]);
pixelPoeng[pixel]--;
}
if (pixel == spillerEnPosisjon) {
setColor(pixel, 0, 50, 0);
}
}
strip.show();
}
boolean kanFlytteOppover(int pixel) {
return pixel % 8 > 0;
}
boolean kanFlytteNedover(int pixel) {
return (pixel + 1) % 8 > 0;
}
boolean kanFlytteSteg(int pixel, int steg) {
int resultat = pixel + steg;
boolean kanFlytte = resultat >= 0 && resultat < lamper;
return kanFlytte;
}
void loop() {
int xEnVerdi = analogRead(spillerEnX);
int yEnVerdi = analogRead(spillerEnY);
Serial.print("x: ");
Serial.print(xEnVerdi);
Serial.print("y: ");
Serial.println(yEnVerdi);
boolean flyttSpillerEnVenstre = xEnVerdi > 600;
boolean flyttSpillerEnHoyre = xEnVerdi < 400;
boolean flyttSpillerEnOpp = yEnVerdi > 600;
boolean flyttSpillerEnNed = yEnVerdi < 400;
if (flyttSpillerEnVenstre && kanFlytteSteg(spillerEnPosisjon, -8)) {
spillerEnPosisjon -= 8;
} else if (flyttSpillerEnHoyre && kanFlytteSteg(spillerEnPosisjon, 8)) {
spillerEnPosisjon += 8;
}
if (flyttSpillerEnOpp && kanFlytteOppover(spillerEnPosisjon)) {
spillerEnPosisjon--;
} else if (flyttSpillerEnNed && kanFlytteNedover(spillerEnPosisjon)) {
spillerEnPosisjon++;
}
if (random(100) > 50) {
pixelPoeng[random(63)] = random(25);
}
step();
delay(speed);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment