viernes, 12 de mayo de 2017

Proyecto snake

Aquí os dejo el proyecto que más tarde hemos realizado ya que es una programación mucho mas laboriosa y por ello hemos tenido que buscar más información. En este juego se usa todo tiempo de estructuras en lo cual se demuestra lo aprendido a lo largo del curso.

Snake
Aquí os dejo el código:

int angulo=0;
int largura=5;
int tiempo=0;
int[] cabezax= new int[2500];
int[] cabezay= new int[2500];
int comidax=(round(random(47))+1)*8;
int comiday=(round(random(47))+1)*8;
boolean rehacer=true;
boolean terminar=false;
void setup()
{
  reiniciar();
  size(400,400);
  textAlign(CENTER);
}
void draw()
{
  if (terminar)
  {
  }
  else
  {
 
  tiempo+=1;
  fill(255,0,0);
  stroke(0);
  rect(comidax,comiday,8,8);
  fill(0);
  stroke(0);
  rect(0,0,width,8);
  rect(0,height-8,width,8);
  rect(0,0,8,height);
  rect(width-8,0,8,height);
 
  if ((tiempo % 5)==0)
  {
    desplazamiento();
    ampliar();
    muerte();
  }
  }
}
void keyPressed()
{
  if (key == CODED)
  {
 
    if (keyCode == UP && angulo!=270 && (cabezay[1]-8)!=cabezay[2])
    {
      angulo=90;
    }
    if (keyCode == DOWN && angulo!=90 && (cabezay[1]+8)!=cabezay[2])
    {
      angulo=270;
    }if (keyCode == LEFT && angulo!=0 && (cabezax[1]-8)!=cabezax[2])
    {
      angulo=180;
    }if (keyCode == RIGHT && angulo!=180 && (cabezax[1]+8)!=cabezax[2])
    {
      angulo=0;
    }
    if (keyCode == SHIFT)
    {
      reiniciar();
    }
  }
}
void desplazamiento()
{
  for(int i=largura;i>0;i--)
  {
    if (i!=1)
    {
      cabezax[i]=cabezax[i-1];
      cabezay[i]=cabezay[i-1];
    }
    else
    {
      switch(angulo)
      {
        case 0:
        cabezax[1]+=8;
        break;
        case 90:
        cabezay[1]-=8;
        break;
        case 180:
        cabezax[1]-=8;
        break;
        case 270:
        cabezay[1]+=8;
        break;
      }
    }
  }
 
}
void ampliar()
{
  if (cabezax[1]==comidax && cabezay[1]==comiday)
  {
    largura+=round(random(3)+1);
    rehacer=true;
    while(rehacer)
    {
      comidax=(round(random(47))+1)*8;
      comiday=(round(random(47))+1)*8;
      for(int i=1;i<largura;i++)
      {
       
        if (comidax==cabezax[i] && comiday==cabezay[i])
        {
          rehacer=true;
        }
        else
        {
          rehacer=false;
          i=1000;
        }
      }
    }
  }
  stroke(destello(1),destello(0),destello(.5));
  fill(0);
  rect(cabezax[1],cabezay[1],8,8);
  fill(255);
  rect(cabezax[largura],cabezay[largura],8,8);
 
}
void muerte()
{
  for(int i=2;i<=largura;i++)
  {
    if (cabezax[1]==cabezax[i] && cabezay[1]==cabezay[i])
    {
      fill(255);
      rect(125,125,160,100);
      fill(0);
      text("Has perdido",200,150);
      text("Para volver a jugar presione Shift.",200,200);
      terminar=true;
    }
    if (cabezax[1]>=(width-8) || cabezay[1]>=(height-8) || cabezax[1]<=0 || cabezay[1]<=0)
    {
      fill(255);
      rect(125,125,160,100);
      fill(0);
      text("HAS PERDIDO",200,150);
      text("Para volver a jugar presione Shift.",200,200);
      terminar=true;
    }
  }
}
void reiniciar()
{
  background(255);
  cabezax[1]=200;
  cabezay[1]=200;
  for(int i=2;i<1000;i++)
  {
    cabezax[i]=0;
    cabezay[i]=0;
  }
  terminar=false;
  comidax=(round(random(47))+1)*8;
  comiday=(round(random(47))+1)*8;
  largura=5;
  tiempo=0;
  angulo=0;
  rehacer=true;
}
float destello(float percent)
{
  float slime=(sin(radians((((tiempo +(255*percent)) % 255)/255)*360)))*255;
  return slime;
}


Los comandos del juego son los siguientes:
-El movimiento de la serpiente se realiza con las flechas del teclado.
-El juego consiste en coger el máximo número de cuadraditos rojos(representan manzanas). Estos aumentan el tamaño de la serpiente.
-Se pierde al tocar los lados de la pantalla.
















Proyecto ping-pong individual

Aquí os dejo parte del proyecto. Este juego lo realizamos inicialmente, por lo tanto es el mas simple. Conseguimos realizarlo buscando información en internet e implementando técnicas adquiridas a lo largo del curso como puede ser el uso del random a la hora de cambiar el color de la bola y el desplazable pulsando el tabulador.

Ping-pong individual

Y aquí os dejo el código:


float a,b,c;
int grosor=30;
int x,y,puntuacion=0;
int cambiarX=-5;
int cambiarY=-5;
int perdido=0;
void setup()
{
  size(800, 700);
  x=(int)random(width);
  y=height-grosor;
}
void draw()
{
  if(perdido==0)
  {
  background(24,120,85);
  fill(a,b,c);
  if (keyPressed){
  a = random (0,255);
  b = random (0,255);
  c = random (0,255);
}
  text("Puntuación:"+puntuacion+"00",width/2,height/2);
  rect(mouseX,height-grosor,200,grosor);
  ellipse(x,y,10,10);
  x=x+cambiarX;
  y=y+cambiarY;
  if(x<0 | x>width)
  {
    cambiarX=-cambiarX;
  }
  if(y<0)
  {
    cambiarY=-cambiarY;
  }
  if(y>height-grosor)
  {
   
    if(x>mouseX && x<mouseX+200)
    {
      cambiarY=-cambiarY;
      puntuacion++;
    }
    else
    {
      finjuego();
    }
  }
  }
  else
  {
    background(100,100,200);
    text("¡Has perdido!",width/2,height/2);
    text("Haz click para volver a jugar",width/2,height/2+20);
  }
}
void finjuego()
{
  perdido=1;
}
void mouseClicked()
{
  cambiarY=-cambiarY;
  puntuacion=0;
  perdido=0;
}

Proyecto

Hoy es el último día de clase en el cual he acabado el proyecto del snake y el ping-pong sigue en desarrollo. Esperamos terminarlo a tiempo.

Proyecto

Estos últimos días no he subido diario debido a que acabábamos muy justos de tiempo y no teníamos tiempo a subir una entrada en el blog. Hemos realizado el juego de ping-pong individual y a partir de este estamos desarrollando uno para dos jugadores. Ademas de esto hemos buscado informacion poco a poco y hemos conseguido confeccionar el juego del snake.

jueves, 4 de mayo de 2017

Proyecto

Alvaro y yo estamos realizando juegos en processing, mas concretamente el Ping Pong. Primero realizaremos uno individual ya que es mas simple y a continuación realizaremos el de dos jugadores.El comienzo del proyecto de dos jugadores se puede observar en el blog de Alvaro. Actualmente estamos pensando si nos dará tiempo a realizar algún juego mas o no.

lunes, 17 de abril de 2017

Proccesing ejercicio final beginners

En este ejercicio hemos usado todos los conocimientos adquiridos en los tutoriales de beginners. He realizado todo desde cero, por ello no he buscado nada en ninguna otra pagina web. En este trabajo he incorporado un titulo al programa, un color de fondo, un capturador de pantalla si se presiona la letra a (ya sea mayúscula o minúscula) y un juego interactivo de dos elipses las cuales cambian de color simultáneamente si se presiona cualquier botón del ratón.

Aquí tenéis el código:

float a,b,c;
void setup() {
  size(500, 500);
   noStroke();
}
void draw() {
  float x = mouseX;
  float y = mouseY;
  float ix = width - mouseX; // Inverse X
  float iy = height - mouseY; // Inverse Y

 
  background(150,300,5);

 
  fill(a,b,c);
  if (mousePressed){
  a = random (0,255);
  b = random (0,255);
  c = random (0,255);
 }
  ellipse(x, height/2, y, y);
 
 
  fill(a,b,c);
   if (mousePressed){
  a = random (0,255);
  b = random (0,255);
  c = random (0,255);
 }
  ellipse(ix, height/2, iy, iy);
 
 
  textSize(32);
  fill(250,50,100);
text("Processing", 160,30);

if ((keyPressed == true) && ((key == 'a') || (key == 'A'))) {
    saveFrame ("output-####.png");
}
}



Y aquí el enlace para descargar el programa;

viernes, 24 de marzo de 2017

Processing ejercicio 1

Aquí tenéis el primer ejercicio en el cual he aprendido a camiar el tamaño, los colores de la figura y del fondo, la forma de la figura y que esta vaya incrementando su tamaño progresivamente.