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
Posting Komentar