/* Versión del juego clássico del SNAKE programado para el taller Processing y Arduino II en el CAMON de Alacant, que el autor impartido por Quelic Berga, Daniel García i Joan Soler-Adillon http://www.tucamon.es/contenido/workshop-arduino-processing-introduccion-herramientas-y-diseno-interaccion Autor: Joan Soler-Adillon Enero 2010 Licencia: Creative Commons, Attribution-Noncommercial-Share Alike 3.0 Unported http://creativecommons.org/licenses/by-nc-sa/3.0/ Este programa está diseñado para ser utilitzado tanto por usuarios noveles como avanzados. Para los primeros, existen una serie de variables al principio de todo (bajo el título de "variables principales" que determinan todos los aspectos importantes de juego. Sólo manipulando estos valores se verán cambios importantes en el juego. */ ////////////////////// // VARIABLES PRINCIPALES // //------PANTALLA------------: // //"Quadrícula-Vía" para la serpiente: empieza en: int gridStart = 25; //"Quadrícula-Vía" para la serpiente: cada cuantos píxels: int gridSpacing = 15; //"Quadrícula-Vía" para la serpiente: cuantas filas: int gridRows = 40; //"Quadrícula-Vía" para la serpiente: cuantas columnas: int gridColumns = 30; //color de los elemen //Ancho de la pantalla (dependiente de lo previo): int theWidth = gridStart*2+gridSpacing*gridRows; //Alto de la pantalla (dependiente de lo previo): int theHeight = gridStart*2+gridSpacing*gridColumns; //Color de los gráficos color screenColor = color(0,255,0); //color de fondo color backgroundColor = color(0); // //------JUEGO------------: // //Milisegundos de separación entre cada paso del juego (FPS del juego, o velocidad) //esto es lo que iría disminuyendo al aumentar el juego de nivel int gameSpeed =80; // //------SERPIENTE------------: // //Diámetro de la cabeza int headSize =13; //Diámetro de la cola int tailSize =9; //Largo inicial de la cola int tailLength =5; //velocidad int snakeSpeed = gridSpacing; // //------COMIDA-----------: // //Diámetro del elemento comida int foodSize = 6; //Frequencia a la que aparece la comida (en milisegundos) int foodFrequence =5000; //Tiempo que está la comida en pantalla (en milisegundos) //mejor si es menor al número anterior int foodLiveSpan =3500; // ////// FIN DE VARIABLES PRINCIPALES ////////////////////////////////////////////////// //creamos los objetos para el juego snake serp; //variable para controlar el tiempo:4 int tiempo, tiempoComida; //para guardar la comida... ArrayList foodArray = new ArrayList(); //Función de inicialización (SETUP); void setup(){ //establecemos tamaño de pantalla //size(theWidth,theHeight);ç size(650,500); //smooth para suavizar gráficos //smooth(); serp = new snake(headSize,tailSize,tailLength,snakeSpeed,gridStart, gridStart+(gridSpacing*gridColumns/2)); fill(screenColor); stroke(screenColor); // frameRate(5); //pintamos el fondo background(backgroundColor); serp.update(); drawWalls(); rectMode(CENTER); } //Función Bucle: void draw(){ // println(millis()+" --- "+tiempo+"_______"+gameSpeed); // println(millis()-tiempo > gameSpeed); //Si hay que hacer otro paso en el juego: if(millis()-tiempo > gameSpeed){ //pintamos el fondo background(backgroundColor); //dibujamos la cuadrícula (para debugging) //drawGrid(); drawWalls(); //Comida println(millis()-tiempoComida); println((millis()-tiempoComida > foodFrequence)); if(millis()-tiempoComida > foodFrequence){ println("menjar!"); foodArray.add(new food(foodSize,foodLiveSpan)); //y también pa la comida tiempoComida = millis(); } //más Comida for(int i=0; i