Pages: [1]   Go Down
Author Topic: Piedra Papel Tijera  (Read 975 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Os dejo mi primer proyecto en arduino, comentado para torpes porque al principio he necesitado escribir todo para volver a coger el hilo. No seáis muy crueles,hacia casi 16 años que no escribía código en serio.

Para lcd de 128x64.
Code:

#include <glcd.h>
#include "fonts/Arial14.h"         // proportional font
#include "fonts/SystemFont5x7.h"   // system font
#include "bitmaps/jankenpon.h"     // bitmap
#include "bitmaps/piedra.h"     // bitmap
#include "bitmaps/papel.h"     // bitmap
#include "bitmaps/tijera.h"     // bitmap
#include "bitmaps/nada.h"     // bitmap
#include "bitmaps/win.h"     // bitmap
#include "bitmaps/lose.h"     // bitmap


int jugador;
int marcadorJugador = 0 ; //declaro marcadores
int marcadorMaquina = 0 ;//declaro marcadores
int maquina; //declaro decision de la maquina 0 1 o 2 que definire mas adelante
int zumbador = 12; //declaro zumbador a la salida 12

void setup ()
{
  GLCD.Init(NON_INVERTED);   // initialise the library
  GLCD.SelectFont(System5x7);       // select fixed width system font

  pinMode(zumbador, OUTPUT); //declaro el zumbador como salida
  GLCD.DrawBitmap(jankenpon, 0,0, BLACK); // pinta en pantalla el logo del jan ken pon
  delay(2000);
  GLCD.ClearScreen();
  digitalWrite (zumbador,LOW);// apago el zumbador
}

void loop(){
  GLCD.CursorTo(0,0);          
  GLCD.Puts("PLAYER=");        
  GLCD.PrintNumber(marcadorJugador);
  GLCD.CursorTo(11,0);            
  GLCD.Puts("ARDUINO=");      
  GLCD.PrintNumber(marcadorMaquina);

  if (marcadorJugador==3){
    GLCD.ClearScreen();
    GLCD.DrawBitmap(win, 0,0, BLACK); //ganaste!
    delay(1000);
    return;
    
  }
  else if (marcadorMaquina==3){
    GLCD.ClearScreen();
    GLCD.DrawBitmap(lose, 0,0, BLACK); // perdiste!
        delay(1000);
           return;
  }
  else{
    maquina=random(0, 3); //numero aleatorio del 0 al 2
    jugador=40;
    delay(1000);
    comienzoJuego();
    delay(1000);
    deteccionBoton();
    delay(1000);
    comprobarEstados();
    delay(1000);
  }
}

void comienzoJuego(){// comienza ciclo de 3 pitidos de la cancion y las palabras en la pantalla
  GLCD.CursorTo(0,7);              // positon cursor  
  GLCD.Puts("                     ");       //escribir en la pantalla "JAN"
  GLCD.DrawBitmap(nada, 10,10, BLACK);
  GLCD.DrawBitmap(nada, 70,10, BLACK);
  digitalWrite (zumbador,HIGH);
  GLCD.CursorTo(8,7);              // positon cursor  
  GLCD.Puts("JAN!");       //escribir en la pantalla "JAN"
  digitalWrite (zumbador,LOW);// apago el zumbador
  delay(1000);//espera segundos

  digitalWrite (zumbador,HIGH);
  GLCD.CursorTo(8,7);              // positon cursor  
  GLCD.Puts("KEN!");       //escribir en la pantalla "KEN"
  digitalWrite (zumbador,LOW);// apago el zumbador
  delay(1000);//espera segundos

  digitalWrite (zumbador,HIGH);
  GLCD.CursorTo(8,7);              // positon cursor  
  GLCD.Puts("PON!");       //escribir en la pantalla "PON"    
  digitalWrite (zumbador,LOW);// apago el zumbador
  delay(1000);//espera segundos

  GLCD.CursorTo(7,7);              // positon cursor  
  GLCD.Puts("LET´S GO!");       //escribir en la pantalla "A JUGAR!!"
  delay(1000);//espera segundos
}

void deteccionBoton(){  // comienza deteccion de entradas
  if (digitalRead(2)==HIGH)
  {
    jugador = 0;
    GLCD.DrawBitmap(piedra, 10,10, BLACK); // pinta en pantalla el logo del jan ken pon
  }
  else if (digitalRead(3)==HIGH)
  {
    jugador = 1;
    GLCD.DrawBitmap(papel, 10,10, BLACK); // pinta en pantalla el logo del jan ken pon
  }
  else if (digitalRead(4)==HIGH)
  {
    jugador = 2;
    GLCD.DrawBitmap(tijera, 10,10, BLACK); // pinta en pantalla el logo del jan ken pon
  }
}
void comprobarEstados (){
  GLCD.CursorTo(0,7);              // positon cursor  
  GLCD.Puts("                     ");       //escribir en la pantalla "JAN"
  if (jugador==40){
    GLCD.CursorTo(0,7);              // positon cursor  
    GLCD.Puts("PLEASE, PUSH A BUTTON");   //
  }
  else if (jugador==0 && maquina==0){ // si piedra es nulo y maquina
    GLCD.DrawBitmap(piedra, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(8,7);              // positon cursor  
    GLCD.Puts("DRAW");   // imprime en pantalla "EMPATE!"
  }
  else if(jugador==0 && maquina==1){
    GLCD.DrawBitmap(papel, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(7,7);              // positon cursor  
    GLCD.Puts("YOU LOSE");   // imprime en pantalla "PIERDES!"
    marcadorMaquina= marcadorMaquina + 1;//actualizo marcadores
  }
  else if(jugador==0 && maquina==2){
    GLCD.DrawBitmap(tijera, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(7,7);              // positon cursor  
    GLCD.Puts("YOU WIN");   // imprime en pantalla "GANAS!"
    marcadorJugador= marcadorJugador + 1; //actualizo marcadores
  }
  else if(jugador==1 && maquina==0){
    GLCD.DrawBitmap(piedra, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(7,7);              // positon cursor  
    GLCD.Puts("YOU WIN");   // imprime en pantalla "GANAS!"
    marcadorJugador= marcadorJugador + 1; //actualizo marcadores
  }
  else if(jugador==1 && maquina==1){
    GLCD.DrawBitmap(papel, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(8,7);              // positon cursor  
    GLCD.Puts("DRAW");   // imprime en pantalla "EMPATE!"
  }
  else if(jugador==1 && maquina==2){
    GLCD.DrawBitmap(tijera, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(7,7);              // positon cursor  
    GLCD.Puts("YOU LOSE");   // imprime en pantalla "PIERDES!"
    marcadorMaquina= marcadorMaquina + 1;//actualizo marcadores
  }
  else if(jugador==2 && maquina==0){
    GLCD.DrawBitmap(piedra, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(7,7);              // positon cursor  
    GLCD.Puts("YOU LOSE");   // imprime en pantalla "PIERDES!"
    marcadorMaquina= marcadorMaquina + 1;//actualizo marcadores
  }
  else if(jugador==2 && maquina==1){
    GLCD.DrawBitmap(papel, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(7,7);              // positon cursor  
    GLCD.Puts("YOU WIN");   // imprime en pantalla "GANAS!"
    marcadorJugador= marcadorJugador + 1; //actualizo marcadores
  }
  else if(jugador==2 && maquina==2){
    GLCD.DrawBitmap(tijera, 70,10, BLACK); // pinta en pantalla el logo del jan ken pon
    delay (500);
    GLCD.CursorTo(8,7);              // positon cursor  
    GLCD.Puts("DRAW");   // imprime en pantalla "EMPATE!"
  }
}

Os dejo los archivos ".h" por si queréis compilarlo.

Code:
http://rapidshare.com/files/438352101/jan_ken_pon_103.zip


Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 1
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muy bueno el programita!!, yo estoy intentado copiarlo(espero que no te importe) es que soy nuevo en esto y no me aclaro mucho.
Podrías postear alguna foto, para ver las conexiones de la pantalla glcd al arduino??

he conseguido que se enchufe la luz de retroiluminación pero no me aclaro con los datasheet que he encontrado en google..

Tengo un arduino mega, y un glcd de 128x64, que creo que es similar al tuyo.

Muchas gracias de antemano
Un saludo!
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 44
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

 :)Muy buen programa, muy original.
Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

en seguida le tiro unas fotos al lcd y las subo.

Os dejo un video del juego:

Logged

0
Offline Offline
Newbie
*
Karma: 0
Posts: 12
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

En la pagina de la libreria te dice como conectarlo, porque al hacer la foto, realmente no se ve nada mas que una maraña de cables.
Ten en cuenta que los pines del lcd se cuentan al REVES, es decir, segun miras el lcd, el de mas a la derecha es el numero 1, repito, el numero 1. Es un error muy común contar los pines desde el otro lado. Seguramente por eso no te funcione. A mi me pasaba lo mismo.

Cualquier cosa dime y te ayudare con mucho gusto. Yo en concreto funciono con la librería GLCD3 Beta.

Salud!

Code:
How to setup the library for the 128x64 LCD module:

1. Please check the website first:

http://www.arduino.cc/playground/Code/GLCDks0108

2. Download the zip file :

http://www.arduino.cc/playground/uploads/Code/ks0108GLCD.zip

3. If you use arduino-0021, put the "ks0108" folder under arduino-0021\libraries\
somethings like "\arduino-0021\libraries\ks0108"

4. under the "ks0108" , there is a file named "ks0108_Panel.h" , you may need to change the following line:

From : #define EN_DELAY_VALUE 6 // this is the delay value that may need to be hand tuned for slow panels
   To  : #define EN_DELAY_VALUE 8 // this is the delay value that may need to be hand tuned for slow panels

5. Then open the file : \arduino-0021\libraries\ks0108\examples\GLCDexample\GLCDexample.pde  
    by arduino IDE, compile and upload the program to the arduino mega. You can test the arduino KIT now.

PS: There is a GLCD3 Beta library , so after you complete the above instruction and get the lcd working. It is a great fun
to intall the GLCD3 library and other library (Time library for example) . The following link is to the GLCD3 beta library thread.

http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1279128237/0
Logged

Pages: [1]   Go Up
Jump to: