Game My AI Pong Part 2

Game My AI Pong adalah sebuah game arcade yang cukup menarik untuk dimainkan. Cara bermainnya mudah yaitu pemain (player) menggerakkan brick atau papan ke kiri dan ke kanan sesuai arah bola untuk memantulkan bola ke arah lawan. Pada game ini kita akan melawan sebuah artificial inteligent yang sudah di program. Game ini terinspirasi dari permainan bola ping-pong.
Artificial Inteligent atau kecerdasan buatan adalah ilmu yang mempelajari cara membuat komputer melakukan sesuatu seperti yang dilakukan manusia (Minsky, 1989). Definisi lain diungkapkan oleh H. A. Simon (1987), kecerdasan buatan merupakan kawasan penelitian, aplikasi dan instruksi yang terkait dengan pemrograman komputer untuk melakukan sesuatu hal yang dalam pandangan manusia adalah cerdas. Definisi kecerdasan buatan lainnya juga diungkapkan oleh Rich and Knight (1991), kecerdasan buatan merupakan sebuah studi tentang bagaimana membuat komputer melakukan hal-hal yang pada saat ini dapat dilakukan lebih baik oleh manusia. Dan definisi lainnya juga ditulis dalam Encyclopedia Britania, Kecerdasan Buatan (AI) merupakan cabang dari ilmu komputer yang dalam merepresentasi pengetahuan lebih banyak menggunakan bentuk simbol-simbol daripada bilangan, dan memproses informasi berdasarkan metode heuristic atau dengan berdasarkan sejumlah aturan.
Game ini dibuat dengan menggunakan Processing, yang merupakan sebuah software sederhana yang digunakan untuk coding di suatu komputer, penggunaannya hampir sama mudahnya dengan software text editor sederhana (seperti TextEdit atau Notepad) yang dikombinasikan dengan sebuah media player. Setiap sketsa (program pada Processing disebut dengan sketsa) memiliki sebuah nama file, sebuah tempat dimana kamu dapat membuat coding, dan beberapa tombol untuk menyimpan, membuka, dan menjalankan sketsa.
Berikut adalah langkah-langkah dalam proses pembuatan game My AI Pong :
1.        Membuat tampilan saat game dimainkan :
void gameScreen() {
  background(255);
  drawBall();
  keepBall();
  applySpeedVert();
  applySpeedHor();
  drawPong();
  bounceBallOnPong();
  bounceBallOnAIPong();
  drawAIPong();
  AIBehavior();
  printScore();

  touchGoalEnemy();
checkWin();
  drawPembatas();
  skillAdder();
  skillHandler();
}

2.        Membuat tampilan saat game berakhir :
void gameOverScreen() {
  background(0);
  fill(255, 0, 0);
  textAlign(CENTER);
  if (scorePong == 5 && gameScreen == 2) {
    textSize(30);
    text("Game Over, Player Win!", width/2, height/2);
    textSize(20);
    text("Player Score : " + scorePong, width/2, height/2 + 20);
  } else if (AIscorePong == 5 && gameScreen == 2) {
    textSize(30);
    text("Game Over, A.I Win!", width/2, height/2);
    textSize(20);
    text("A.I Score : " + AIscorePong, width/2, height/2 + 20);
  }
}

3.        Membuat objek bola AI yang dapat memberikan keuntungan maupun kerugian secara random :
void drawAIPong() {
  noStroke();
  fill(AIpongColor);
  rectMode(CENTER);
  rect(AIpongX, AIpongY, AIpongWidth, AIpongHeight);
}
void bounceBallOnAIPong() {
  if (((ballX+(ballSize/2) > AIpongX-(AIpongWidth/2)) && (ballX-(ballSize/2) < AIpongX+(AIpongWidth/2))) && ballColor == color(255, 0, 100)) {
    if (ballY-(ballSize/2) <= AIpongY) {
      makeBounceTop(AIpongY);
      ballSpeedHor = (ballX - AIpongX)/5;
      terpantul = true;
    }
  }
}
void AIBehavior() {
  if (ballY < height/2) {
    if (terpantul == false) {
      if (!(ballX+(ballSize/2) > AIpongX-(AIpongWidth/2))) {
        AIpongX = AIpongX + (AIpongSpeed * -1);
      } else if (!(ballX-(ballSize/2) < AIpongX+(AIpongWidth/2))) {
        AIpongX = AIpongX + (AIpongSpeed * 1);
      }
    } else {
      // do nothing
    }
  }
}

4.        Membuat objek bola pong, merupakan bola utama yang dimainkan :
void drawBall() {
  fill(ballColor);
  noStroke();
  ellipseMode(CENTER);
  ellipse(ballX, ballY, ballSize, ballSize);
}
void applySpeedHor() {
  ballX = ballX + ballSpeedHor;
}
void applySpeedVert() {
  ballY = ballY + ballSpeedVert;
}
void keepBall() {
  if (ballY+(ballSize/2) > height) {
    makeBounceBottom(height);
  }
  if (ballY-(ballSize/2) < 0) {
    makeBounceTop(0);
  }
  if (ballX-(ballSize/2) < 0) {
    makeBounceLeft(0);
  }
  if (ballX+(ballSize/2) > width) {
    makeBounceRight(width);
  }
}
void makeBounceBottom(float surface) {
  ballY = surface-(ballSize/2);
  ballSpeedVert *= -1;
  terpantul = false;
}
void makeBounceTop(float surface) {
  ballY = surface+(ballSize/2);
  ballSpeedVert *= -1;
  terpantulPong = false;
}
void makeBounceRight(float surface) {
  ballX = surface-(ballSize/2);
  ballSpeedHor *= -1;
}
void makeBounceLeft(float surface) {
  ballX = surface+(ballSize/2);
  ballSpeedHor *= -1;
}
void drawPong() {
  noStroke();
  fill(pongColor);
  rectMode(CENTER);
  rect(pongX, pongY, pongWidth, pongHeight);
}
void bounceBallOnPong() {
  if (((ballX+(ballSize/2) > pongX-(pongWidth/2)) && (ballX-(ballSize/2) < pongX+(pongWidth))) && ballColor == color(255, 0, 100)) {
    if (ballY+(ballSize/2) >= pongY) {
      makeBounceBottom(pongY);
      ballSpeedHor = (ballX - pongX)/5;
      terpantulPong = true;
    }
  }
}
void pongBehavior() {
  if (ballY > height/2) {
    if (terpantulPong == false) {
      if (!(ballX+(ballSize/2) > pongX-(pongWidth/2))) {
        pongX = pongX + (pongSpeed * -1);
      } else if (!(ballX-(ballSize/2) < pongX+(pongWidth/2))) {
        pongX = pongX + (pongSpeed * 1);
      }
    } else {
      // do nothing
    }
  }
}
5.        Membuat kondisi untuk pengecekkan apakah bola menyentuh brick atau tidak :
void touchGoalEnemy() {
  if (ballY-(ballSize/2) < 0) {
    scorePong();
  } else if (ballY+(ballSize/2) > height) {
    AIscorePong();
  }
}

6.        Membuat kondisi untuk pengecekkan apakah game sudah berakhir atau belum :
void checkWin() {
  if (scorePong == 10) {
    scorePong = 10;
    gameScreen = 2;
    gameOverScreen();
  } else if (AIscorePong == 10) {
    AIscorePong = 10;
    gameScreen = 2;
    gameOverScreen();
  }
}



Komentar

Postingan populer dari blog ini

Sistem Inferensi Fuzzy

Lyric Millions - Winner