Kamis, 13 Juni 2013

Game Shoot in Space dengan Processing

  PImage img;
  PFont fontA;
  int sphereDiameter = 10;
  boolean shoot = false;
 
  int randx()
  {
    return int(random(600));
  }
 
  int[] sphereXCoords = { randx(), randx(), randx(), randx(), randx() };
  int[] sphereYCoords = { 0, 0, 0, 0, 0 };
 
  void setup()
  {
    size(600,620);
    size(600,620);
  // Make a new instance of a PImage by loading an image file
  img = loadImage("tes.png");
  }
 
  void draw()
  {
    background(0);
    // Draw the image to the screen at coordinate (0,0)
    image(img,0,0);
    fill(color(0,255,0));
    stroke(color(0,255,0));
    triangle(mouseX-8, 580, mouseX+8, 580, mouseX, 565);
    fill(color(255,0,0));
    stroke(color(255,0,0));
 
    if(shoot==true)
    {
      sphereKiller(mouseX);
      shoot = false;
    }
 
    sphereDropper();
    gameEnder(); 
  }
 
  void mousePressed()
  {
    shoot = true;
  }
 
  void sphereDropper()
  { 
    stroke(255);
    fill(255);
    for (int i=0; i<5; i++)
    {
      ellipse(sphereXCoords[i], sphereYCoords[i]++,
              sphereDiameter, sphereDiameter);
    }
  }
 
  void sphereKiller(int shotX)
  {
    boolean hit = false;
    for (int i = 0; i < 5; i++)
    {
      if((shotX >= (sphereXCoords[i]-sphereDiameter/2)) &&
         (shotX <= (sphereXCoords[i]+sphereDiameter/2)))
      {
        hit = true;
        line(mouseX, 565, mouseX, sphereYCoords[i]);
        ellipse(sphereXCoords[i], sphereYCoords[i],
                sphereDiameter+25, sphereDiameter+25);
        sphereXCoords[i] = randx();
        sphereYCoords[i] = 0;
      }   
    }
 
    if(hit == false)
    {
      line(mouseX, 565, mouseX, 0);
    } 
 
  }
 
  void gameEnder()
  {
    for (int i=0; i< 5; i++)
    {
      if(sphereYCoords[i]==600)
      {
        fill(color(255,0,0));
        noLoop();
      }
    }
  }


  PImage img;
  PFont fontA;
  int sphereDiameter = 10;
  boolean shoot = false;
 
pertama-tama kita mulai dengan mendeklarasikan semua variable dan tipe data yang akan kita gunakan dalam pembuat program game ini.

  void setup()
  {
    size(600,620);
    size(600,620);
  // Make a new instance of a PImage by loading an image file
  img = loadImage("tes.png");
  }
 
Dari potongan kode-kode diatas kita dapat mengetahui hal-hal apa saja yang kita mulai saat program akan dijalankan. Dimulai dari pembentukan layout, bahwa ukuram layout yang dibuat untuk area game ini 600 x 620, serta kita juga menambahkan sebuah background gambar agar tampilan game ini tidak monoton.

  void draw()
  {
    background(0);
    // Draw the image to the screen at coordinate (0,0)
    image(img,0,0);
    fill(color(0,255,0));
    stroke(color(0,255,0));
    triangle(mouseX-8, 580, mouseX+8, 580, mouseX, 565);
    fill(color(255,0,0));
    stroke(color(255,0,0));
 
    if(shoot==true)
    {
      sphereKiller(mouseX);
      shoot = false;
    }
 
    sphereDropper();
    gameEnder(); 
  }

Pada image(img,0,0); kita gunakan untuk menampilkan background dari gambar yang akan kita input.
Selanjutnya triangle(mouseX-8, 580, mouseX+8, 580, mouseX, 565); potongan program ini adalah untuk merubah pointer mouse menjadi bentuk segitiga yang nantinya akan kita gunakan sebagai pesawat untuk menembak-nembak dalam permainan ini.
Sedangkan pada
    sphereDropper();
    gameEnder();
 digunakan untuk mengakhiri game, dimana kondisinya bila bola-bola yang jatuh mencapai dasar dari layout.

  void sphereDropper()
  { 
    stroke(255);
    fill(255);
    for (int i=0; i<5; i++)
    {
      ellipse(sphereXCoords[i], sphereYCoords[i]++,
              sphereDiameter, sphereDiameter);
    }
  }
Disini kita memberikan kondisi dimana permainan akan berakhir bila bola-bola yang jatuh mencapi dasar dari layout yang kita buat.

  void sphereKiller(int shotX)
  {
    boolean hit = false;
    for (int i = 0; i < 5; i++)
    {
      if((shotX >= (sphereXCoords[i]-sphereDiameter/2)) &&
         (shotX <= (sphereXCoords[i]+sphereDiameter/2)))
      {
        hit = true;
        line(mouseX, 565, mouseX, sphereYCoords[i]);
        ellipse(sphereXCoords[i], sphereYCoords[i],
                sphereDiameter+25, sphereDiameter+25);
        sphereXCoords[i] = randx();
        sphereYCoords[i] = 0;
      }   
    }
 
    if(hit == false)
    {
      line(mouseX, 565, mouseX, 0);
    }   
  }
Potongan program diatas digunakan untuk memberikan kondisi dimana saat kita mengklik mouse maka laser berwarna merah akan ditembakkan untuk menghancukkan bola-bola yang berjatuhan.

  void gameEnder()
  {
    for (int i=0; i< 5; i++)
    {
      if(sphereYCoords[i]==600)
      {
        fill(color(255,0,0));
        noLoop();
      }
    }
  }
Terakhir bila bola telah jatuh dan sampai kebawah dasar layout, maka game akan diakhiri.

Test Game :
Disini kita akan menguji coba game yang telah kita buat.

Tampilan Pada Processing :
Tampilan saat kita memulai permainan :


Tampilan Saat Game Berakhir :

Tidak ada komentar:

Posting Komentar