Code-Makers ha revivido. It's alive! Bienvenidos! Presentate aca!

Juego de Naves en C para Arduino LCD Display 16x2 (4bits)

Avatar de Usuario
JohnConnor
Nos vamos conociendo
Nos vamos conociendo
Mensajes: 89
Registrado: Mar Ene 05, 2016 12:59 am
Ubicación: Argentina
Contactar:

Juego de Naves en C para Arduino LCD Display 16x2 (4bits)

Mensajepor JohnConnor » Lun Dic 05, 2016 10:34 pm

Buenas CM! les traigo un video y el codigo de un jueguito que hice para matar el tiempo.

[video]


Código: Seleccionar todo

#include <LiquidCrystal.h>

// LCD GAME POWERED BY JOHNCONNOR
LiquidCrystal lcd(7, 8, 9, 10, 11 , 12);
int DirectX = 0;
int DirectY = 1;
int X, Y;
float oX = 16, oY = 0;
int posY = 0;
int posYo = 0;
int medioCaracter = 0;
int medioCaracterO = 1;
int medioCaracterM = 0;
int dTimer = 0;
bool blockDisp = false;
int OVNI_ANIM = 0;
int mX = 17, mY = 0;
bool GOver = false;
float velOvni = 0.2;
bool Iniciado = false;

//ASTEROIDES
float aX1 = -6, aY1 = 1;
float aX2 = 18, aY2 = 0;
int DirecYA1 = 0, DirecYA2 = 1;
int AnimA1 = 0, AnimA2 = 1;
byte NAVE_JUGADOR_ANIM0[8] = {
B10000,
B11000,
B01110,
B11000,
B10000,
B00000,
B00000,
B00000,
};
byte NAVE_JUGADOR_ANIM1[8] = {
B00000,
B00000,
B00000,
B10000,
B11000,
B01110,
B11000,
B10000,
};

byte OVNI_ANIM0[8] = {
B00000,
B01110,
B11111,
B10101,
B00000,
B00000,
B00000,
B00000,
};
byte OVNI_ANIM1[8] = {
B00000,
B01110,
B11111,
B01010,
B00000,
B00000,
B00000,
B00000,
};
byte OVNI_ANIM2[8] = {
B00000,
B00000,
B00000,
B00000,
B01110,
B11111,
B10101,
B00000,
};
byte OVNI_ANIM3[8] = {
B00000,
B00000,
B00000,
B00000,
B01110,
B11111,
B01010,
B00000,
};
byte MUNICION_ANIM0[8] = {
B00000,
B00000,
B00100,
B00000,
B00000,
B00000,
B00000,
B00000,
};

byte MUNICION_ANIM1[8] = {
B00000,
B00000,
B00000,
B00000,
B00000,
B00100,
B00000,
B00000,
};
void setup() {
pinMode(2,INPUT); //ARRIBA
pinMode(3,INPUT); //ABAJO
pinMode(4,INPUT); //IZQUIERDA
pinMode(5,INPUT); //DERECHA
pinMode(6,INPUT); //BOTON A "jesica soria"

Serial.begin(9600);

lcd.createChar(0, NAVE_JUGADOR_ANIM0);
lcd.createChar(1, NAVE_JUGADOR_ANIM1);
lcd.createChar(2, OVNI_ANIM0);
lcd.createChar(3, OVNI_ANIM1);
lcd.createChar(4, MUNICION_ANIM0);
lcd.createChar(5, MUNICION_ANIM1);
lcd.createChar(6, OVNI_ANIM2);
lcd.createChar(7, OVNI_ANIM3);


lcd.begin(16, 2);
X = 8;
Y = 1;
lcd.setCursor(X,Y);
}

void loop() {
if (digitalRead(6) == HIGH && GOver && Iniciado){
Resetear();
}
if (!Iniciado){
lcd.clear();
lcd.setCursor(2,0);
lcd.write("Alien Attack");
lcd.setCursor(1,1);
lcd.write("by John Connor");
if (digitalRead(6) == HIGH){
Iniciado = true;
}
} else {
if (!GOver){
if (OVNI_ANIM == 0) { OVNI_ANIM = 1; } else { OVNI_ANIM = 0;}
Teclado();
lcd.clear();
lcd.setCursor(X,Y);
lcd.write(byte(medioCaracter));
lcd.setCursor(mX,mY);
if (medioCaracterM == 0){
lcd.write(byte(4));
} else {
lcd.write(byte(5));
}
// DIBUJAR OVNIS
lcd.setCursor(int(oX),oY);
if (medioCaracterO == 0){
if (OVNI_ANIM == 0){
lcd.write(byte(2));
} else {
lcd.write(byte(3));
}
}
if (medioCaracterO == 1){
if (OVNI_ANIM == 0){
lcd.write(byte(6));
} else {
lcd.write(byte(7));
}
}
// DIBUJAR ASTEROIDES
if (DirecYA1 == 0){
aX1 = aX1 + 0.3;
if (aX1 > 16){
aX1 = 0 - rand() % 10;
aY1 = rand() % 2;
}
lcd.setCursor(int(aX1),aY1);
if (int(aX1) >= 0 && int(aX1) < 16){
if (AnimA1 == 0){
AnimA1 = 1;
lcd.write("+");
} else {
AnimA1 = 0;
lcd.write("x");
}
}
}
if (DirecYA2 == 1){
aX2 = aX2 - 0.3;
if (aX2 < 0){
aX2 = 16 + rand() % 10;
aY2 = rand() % 2;
}
lcd.setCursor(int(aX2),aY2);
if (int(aX2) >= 1 && int(aX2) < 16){
if (AnimA2 == 0){
AnimA2 = 1;
Serial.println(AnimA2);
lcd.write("+");
} else {
AnimA2 = 0;
Serial.println(AnimA2);
lcd.write("x");
}
}
}
// DASTE
velOvni = velOvni - 0.0001;
oX = oX - velOvni;
if (oX < 0){
GameOver();
}
// AGREGARRR!!! oY = rand() % 4;
if (mX < 16){
mX++;
}
if (Colision(X,oX,Y,oY)){
GameOver();
}
if (Colision(mX,oX,mY,oY) && medioCaracterO == medioCaracterM){
Puesto();
}

if (Colision(X,aX1,Y,aY1) || Colision(X,aX2,Y,aY2)) {
GameOver();
}
}//GOver
} // INICIADO
delay(100);
}

void Teclado(){
if (digitalRead(2) == HIGH){
posY--;
}
if (digitalRead(3) == HIGH){
posY++;
}
if (digitalRead(4) == HIGH){
X--;
}
if (digitalRead(5) == HIGH){
X++;
}
if (digitalRead(6) == HIGH){
Disparar();
}
if (X < 0){
X = 0;
}
if (X > 15){
X = 15;
}
if (posY > 3) {
posY = 3;
}
if (posY < 0) {
posY = 0;
}

if (posY == 0){
Y = 0;
medioCaracter = 0;
}
if (posY == 1){
Y = 0;
medioCaracter = 1;
}
if (posY == 2){
Y = 1;
medioCaracter = 0;
}
if (posY == 3){
Y = 1;
medioCaracter = 1;
}

}


void Disparar(){
mX = X;
mY = Y;
medioCaracterM = medioCaracter;
}

void GameOver(){
GOver = true;
lcd.clear();
lcd.setCursor(3,0);
lcd.write("Game Over!");
lcd.setCursor(1,1);
lcd.write("code-makers.es");
}

void Puesto(){
lcd.clear();
lcd.setCursor(oX,oY);
lcd.write("*");
delay(100);
oX = 17;
oY = rand() % 2;
medioCaracterO = rand() % 2;
}

void Resetear(){
asm volatile (" jmp 0");
}

bool Colision(int x1,int x2,int y1,int y2){
if (x1 == x2 && y1 == y2){
return true;
} else {
return false;
}
}


Saludos!


Imagen

EL QUE NO DICE LA VERDAD, ES PORQUE ESTA MINTIENDO
Avatar de Usuario
ni0
Arquitecto
Mensajes: 121
Registrado: Mar Nov 17, 2015 4:07 pm

Re: Juego de Naves en C para Arduino LCD Display 16x2 (4bits)

Mensajepor ni0 » Mar Dic 06, 2016 1:26 pm

Muy buena idea che! :D
ni0 escribió:como te habras dado cuenta para Stallman, Linus y todos los que los siguen se refieren al hacking a la accion de programar porque les (nos?) da orgasmos (cuak cuak)

ni0 [at] code-makers [dot] es

Volver a “C/C++”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado