INITIAL STATE
Game ini terdiri dari sebuah
bola oranye dan ring untuk memasukkan bola sehingga tampak seperti olahraga
basket. Permainan ini dimainkan oleh satu orang. Pemain harus menekan tombol
kiri mouse kemudian arahkan lemparan sehingga bola masuk ke dalam ring, jika
bola tepat melewati ring dari atas ring ke bawah ring maka score akan bertambah
1.
Tampilan Permainan
ATURAN
PERMAINAN
- Pemain melempar bola dengan menekan tombol kiri
mouse serta menggeser cursor.
- Jika bola melewati ring, yaitu jatuh dari atas ring
menuju bawah ring pada garis horizontal merah maka score akan bertambah
satu.
LISTING
PROGRAM
// untuk deklarasi variabel
float Vx = 5;
float Vy = 1;
float xPosition = 50;
float yPosition = 50;
float Pbola = 40;
float Tbola = 40;
int nilai = 0;
PImage bola;
void setup()
{
size(610, 400);
background(255);
smooth();
bola = loadImage ("bola.png");
}
void draw()
{
// untuk membuat tulisan di sisi kiri
fill(0,0,255);
text("Kecepatan
arah X ", 20,30);
text(Vx, 130,30);
text("Kecepatan
arah Y ", 20,50);
text(Vy, 130,50);
text("Tinggi
Pantulan ", 20,70);
text(-(yPosition-380), 130,70);
text("Score:
"+nilai, 20, 90);
// untuk membuat ring
fill(255,0,0);
rect(500,100,100,10);
rect(600,40,500,80);
fill(0,0,0);
rect(605,120,610,400);
// untuk membuat jaring-jaring ring
line(500,110,520,200);
line(510,110,530,200);
line(520,110,540,200);
line(530,110,550,200);
line(540,110,560,200);
line(550,110,570,200);
line(560,110,580,200);
line(570,110,585,180);
line(580,110,590,160);
line(600,110,580,200);
line(590,110,570,200);
line(580,110,560,200);
line(570,110,550,200);
line(560,110,540,200);
line(550,110,530,200);
line(540,110,520,200);
line(530,110,515,180);
line(520,110,510,160);
// untuk membuat layar tidak menyisakan bayangan
fill(255,150);
rect(0, 0,width,
height);
// untuk membuat bola
image(bola,xPosition-25, yPosition-35,60,68);
//deklarasi kecepatan dari posisi bola awal saat aplikasi
dijalankan dan saat bola bergerak
Vy +=.5;
Vx *=1;
xPosition += Vx;
yPosition += Vy;
// Arah mantul ke kiri
if (xPosition > width-Pbola/2)
{
xPosition = width-Pbola/2;
Vx = -Vx;
}
// Arah mantul ke kanan
if (xPosition < Pbola/2)
{
xPosition = Pbola/2;
Vx = -Vx;
}
// Arah mantul dari atas
if (yPosition < Tbola/2)
{
yPosition = Tbola/2;
Vy = -Vy*.5;
}
// Pantulan gravitasi
if (yPosition > height-Tbola/2)
{
yPosition = height-Tbola/2;
Vy = -Vy*.9;
}
// Perlambatan bola
if (yPosition > height-Tbola/2-1)
{
Vx *=.9;
}
//penambahan nilai
if (xPosition >= 520
&& yPosition < 110 && yPosition > 105)
{
yPosition=111;
if ( Vy <= 0)
{
Vy = -Vy;
}
else
{
nilai+=1;
}
}
//membuat bola tidak masuk dari bawah ring
if (((xPosition>=480
&& xPosition < 520) || (xPosition>=580 && xPosition <
600)) && yPosition > 100 && yPosition < 200)
{
Vx = -Vx;
if (xPosition > 480 && yPosition <
110 && yPosition > 105)
{
Nilai +=1;
}
}
}
// lempar bola
void mouseDragged()
{
xPosition = mouseX;
yPosition = mouseY;
Vx = mouseX - pmouseX;
Vy = mouseY - pmouseY;
}
LOGIKA PROGRAM
LOGIKA PROGRAM
Pertama adalah pendeklarasian dari variabel-variabel yang
digunakan, yaitu
1.
Vx
dan Vy sebagai nilai untuk menggerakan bola.
2.
xPosition
dan yPosition merupakan letak bola yang nantinya akan dipengaruhi oleh variabel
Vx dan Vy untuk memindahkan posisi bola.
3.
Pbola
dan Tbola merupakan ukuran bagian bola yang akan memantul atau dapat disebut
dengan ukuran jari-jari dari bola yang dibuat.
4.
Variabel
nilai digunakan untuk score yang ditampilkan saat bola melewati ring.
Kemudian dibuat method – method untuk setiap fungsi.
-
Void
setup, merupakan method untuk
pengaturan – pengaturan yang diproses pada layar tampilan aplikasi, yaitu
ukuran window adalah 610x400, warna background
putih dan menggunakan fungsi smoth().
Gambar
Kondisi Window
-
Void
draw, merupakan method untuk membuat fungsi fungsi yang ada di dalam layar
yaitu membuat tulisan sebagai keterangan, membuat garis untuk dijadikan ring
dan lingkaran untuk dijadikan bola. Didalam void draw disisipkan statement
kondisi untuk mengondisikan agar bola terlihat bergerak dan memantul.
o
Membuat ring
Untuk membuat ring digunakan sintaks line(titikX1, titikY1, titikX2, titikY2); yaitu untuk membuat garis di mana nilai X dan Y dilihat
seperti pada gambar di bawah ini, untuk membuat persegi gunakan metode yang
sama seperti membuat garis namun dengan mengubah line dengan rect.
o
Membuat bola
Untuk membuat bola di gunakan sintaks image di mana sebelumnya
dideklarasikan variable image dengan tipe data PImage dan pada setup
dideklarasikan bahwa variable gambar tersebut memuat gambar apa dengan sintaks
loadImage. Untuk memanggil gambar yang sudah dideklarasikan gunakan sintaks
image(variabel gambar, X1, Y1, panjang, tinggi);
Setelah bentuk
dari latar dan bolanya sudah dibentuk maka selanjutnya adalah membuat kondisi –
kondisi untuk memindahkan bola dan memantulkannya saat berbenturan dengan sisi
window. Batasan batasan yang dibuat adalah batasan ke bagian atas, kanan, kiri,
dan bawah window yang memantulkan bola dengan mengubah arah kecepatan bola ke
arah sebaliknya, misal kecepatan horizontal bola adalah 100 kemudian saat
dipantulkan kecepatannya diubah menjadi -100 yaitu dengan mengalikan nilai
kecepatan dengan negatif satu (-1). Untuk menanggulangi terjadinya pantulan
yang terus berulang – ulang maka posisi bola harus diatur ulang saat memantul.
- Posisi bola akan berada pada xPosition dan yPosition. Anggap jika letak layar berupa diagram cartesius (x,y), misal nilai posisi awal adalah (100,100) dan pergerakan posisi pada x adalah berubahnya lokasi x dengan penambahan 0.5 secara konstan.
- Jika posisi bola (xPosition,yPosition) berada pada ujung sisi window maka nilai Vx atau Vy akan dikalikan negatif satu jadi bola akan berbalik ke arah sebelumnya.
- Jika posisi bola memantul di sisi height maka nilai Vy akan dikalikan dengan 0.5 setiap kali bola berada di posisi height.
Download filenya disini