Pengunjung

Minggu, 09 Juni 2013

Membuat Game Sederhana dengan Menggunakan Bahasa Processing


Processing adalah bahasa pemrograman dan lingkungan pemrograman (development environment) open source untuk memrogram gambar, animasi, dan interaksi. Digunakan oleh pelajar, seniman, desainer, peneliti untuk belajar, membuat prototipe, dan produksi. Processing digunakan untuk mengajarkan dasar - dasar pemrograman komputer dalam konteks rupa dan berfungsi sebagai buku sketsa perangkat lunak dan tool produksi profesional. Selain itu, bahasa Processing juga dapat digunakan sebagai bahasa pemrograman pembuatan game. Berikut adalah halaman awal teks editor bahasa pemrograman Processing.


Disini saya akan mencoba membuat game sederhana dengan menggunakan bahasa Processing. Ketikkan listing program berikut ini ke dalam teks editor bahasa Processing.

/* OpenProcessing Tweak of *@*http://www.openprocessing.org/sketch/4528*@* */
/* !do not delete the line above, required for linking your tweak if you re-upload */
//public int upgradeInterval = int(random(3000,4000));
//int upgradeCounter = upgradeInterval-1000;
PVector vel = new PVector();
PVector loc = new PVector(30,50);
boolean playing = false;
boolean titleScreen = true;
boolean falling = true;
float score;
int lifes = 5;
PFont font;
//ArrayList upgrades = new ArrayList();
void setup()
{
  frameRate(200);
  falling = true;
  lifes = 5;
  score = 0;
  vel.x = random(1,3);
  vel.y = random(5,7);
  font = createFont("Algerian",40);
  noStroke();
  fill(0);
  textFont(font);
  size(300,400);
  background(210,110,10);
  playing = false;
  titleScreen = true;
  cursor(ARROW);
  loc.x = 30;
  loc.y = 50;  
}
void draw()
{
  background(100,10,190);
  if (titleScreen)
    text("Main Ping Pong",1,200);
  else if (playing)
    play();
  else if (!playing&&!titleScreen)
    background(210,110,10);
}
void ellipse()
{
  noStroke();
  fill(0);
  ellipse(loc.x,loc.y,40,40);
}
void rect()
{
  noStroke();
  fill(140,220,80);
  rect(mouseX-40,height-40,80,20);
}
void update()
{
  loc.x+=vel.x;
  loc.y+=vel.y;  
}
void play()
{
  /*if (upgradeCounter <= upgradeInterval)
  {  
    upgradeCounter++;
  }
  else
  {
    upgradeCounter = 0;
    upgrades.add(new Upgrade(random(30,270)));
    for (int num = 0; num < upgrades.size(); num++)
    {
      ((Upgrade)upgrades.get(num)).fall();  
    }
  }*/
  font = loadFont("ArialMT-20.vlw");
  textFont(font);
  text("Nilai: " + int(score),170,30);
  text("Nyawa: " + lifes,20,30);
  noCursor();
  ellipse();
  rect();
  update();
  if (get(int(loc.x),int(loc.y+20)) == color(140,220,80))
  {
    if (falling)
    {
      score+=(6*abs(vel.y));
      vel.y*=-1.02;
      if (vel.x < 0)
        vel.x = -(random(1,10));
      else if (vel.x > 0)
        vel.x = random(1,10);
      falling = false;
    }
  }
  else if (loc.y-20<=0)
  {
    vel.y*=-1;
    falling = true;
  }
  else if (loc.x-20<=0)
    vel.x*=-1;
  else if (loc.x+20>=width)
    vel.x*=-1;
  else if (loc.y-20>=height)
    if (lifes>1)
    {  
      lifes--;
      loc.x = 30;
      loc.y = 50;
      vel.x = random(1,3);
      vel.y = random(5,7);
      score-=score/2;
    }
    else
    {
      playing = false;
      titleScreen = false;
      redraw();
      delay(2000);
      setup();
    }
}
void mousePressed()
{
  if (titleScreen)
  {
    if (mouseX >= 40 && mouseY >= 170 && mouseX <= 250 && mouseY <= 200)
    {
      titleScreen = false;
      playing = true;
    }
  }
  if (!titleScreen)
  {
    if (vel.y > 0)
      vel.y+=2;
    else if (vel.y < 0)
      vel.y-=2;    
  }
}
void keyPressed()
{
  if (key == ' ')
    setup();
}

Game sederhana yang saya buat ini adalah game yang menyerupai olahraga Tenis Meja atau Ping Pong. Pada game nya terdapat bola yang memantul - mantul serta sebuah balok untuk menjaga pantulan bola agar tidak melewati batas. Tiap pantulannya akan mendapatkan sejumlah nilai (score) dan pemain diberikan 5 kesempatan (nyawa) dalam game ini. Bila nyawa nya sudah habis (sudah gagal 5 kali dalam mengamankan pantulan bola) maka permainan berakhir. Untuk memulai game kembali pada saat kondisi kalah, tekan tombol "r" pada keyboard maka game secara otomatis akan mulai lagi. Berikut adalah tampilan game yang sudah berhasil dijalankan.








Tidak ada komentar:

Posting Komentar