Anda di halaman 1dari 21

LAPORAN PRAKTIKUM

GAME TICTACTOE

PEMGORAMAN BERORIENTASI OBJEK


Disusun Oleh: Kelompok B2/4/2017
Dicky Wahyudi 1715025088
Retno Eka Safitri 1715025087
Dandi Nova Siswoyo 1715025095
Nur Aprilia 1715025102
Akmal Agung Saputra 1715025107

Asisten

Andra Aprianata Edwanda Arisandy


NIM. 1615025023 NIM. 1615025008

JURUSAN ILMU KOMPUTER


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI INFORMASI
UNIVERSITAS MULAWARMAN
SAMARINDA
2019

i
LEMBAR PENGESAHAN
Laporan Praktikum Pemograman Berorientasi Proyek atas nama Dicky
Wahyudi,Retno Eka Safitri,Dandi Nova Siswoyo,Nur Aprilia, dan Akmal Agung
Saputra Telah disetujui pada tanggal 07 Desember 2019 oleh:

Ketua Kelompok

Retno Eka Safitri


NIM. 1715025087
Asisten

Asisten 1 Asisten 2

Andra Aprianata Edwanda Arisandy


NIM. 1615025023 NIM. 161025008

Mengetahui,
Kepala Laboratorium
Fakultas Ilmu Komputer dan Teknologi Informasi

Joan Angelina Widian, M.Kom


NIP. 19770119 200812 2 001

ii
KATA PENGANTAR
Segala puji syukur kami panjatkan kehadirat Allah SWT, karena atas
limpahan rahmat dan hidayah-Nya penulis dapat menyelesaikan Project Akhir
Praktikum Pemrograman Berorientasi Objek.
Dalam penyusunan Project Akhir ini penulis banyak mendapat saran dan
bimbingan dari berbagai pihak yang dapat membukakan mata penulis bahwa
sesungguhnya pengalaman dan pengetahuan tersebut adalah guru yang terbaik
bagi penulis. Oleh karena itu dengan segala hormat dan kerendahan hati
perkenankanlah penulis mengucapkan terima kasih kepada :
1. Kepada Bapak Putut Pamilih, M.kom dan Bapak Sayekti Harits ,M.Kom,
selaku dosen pengampu mata kuliah Pemrograman Berorientasi Objek.
2. Kepada Ibu Joan Angelina Widian, M.kom, selaku ketua laboratorium
Fakultas Ilmu Komputer dan Teknologi Informasi.
3. Kepada Andra Aprianata dan Edwanda Arisandy selaku asisten praktikum
Pemrograman Berorientasi Objek yang selalu sabar dan perhatian
menghadapi kelompok kami selama praktikum.
Dalam penyusunan project akhir ini, penulis menyadari masih terdapat banyak
kekurangan yang dibuat baik sengaja maupun tidak sengaja, dikarenakan
keterbatasan ilmu pengetahuan dan wawasan serta pengalaman yang penulis
miliki. Untuk itu penulis mohon maaf atas segala kekurangan tersebut tidak
menutup diri terhadap segala saran dan kritik serta masukan yang bersifat
kontruktif bagi diri penulis.

Samarinda, 04 Desember 2019

Penulis

iii
DAFTAR ISI

LEMBAR PENGESAHAN .................................................................................... ii


KATA PENGANTAR ........................................................................................... iii
DAFTAR ISI .......................................................................................................... iv
DAFTAR GAMBAR & TABEL ............................................................................ v
BAB I PENDAHULUAN ....................................................................................... 1
1.1 Latar Belakang ............................................................................................. 1
1.2 Rumusan Masalah ........................................................................................ 1
1.3 Tujuan .......................................................................................................... 2
1.4 Manfaat ........................................................................................................ 2
BAB II PERENCANAAN ...................................................................................... 2
2.1 Analisis Program .......................................................................................... 2
2.2 Flowchart ..................................................................................................... 2
2.3 Konsep yang digunakan ............................................................................... 4
BAB III HASIL DAN PEMBAHASAN PROGRAM ............................................ 5
3.1 Implementasi Program ................................................................................. 5
3.2 Source Code ................................................................................................. 8
BAB IV PENUTUP .............................................................................................. 14
4.1 Kesimpulan ................................................................................................ 14
4.2 Saran ........................................................................................................... 14
DAFTAR PUSTAKA ........................................................................................... 15

iv
DAFTAR GAMBAR

Gambar 3.1 Tampilan awal program ...................................................................... 5


Gambar 3.2 Muncul huruf X di dalam kotak permainan ........................................ 6
Gambar 3.2 Tampilan pengisian pemain kedua ...................................................... 6
Gambar 3.3 Tampilan winner ................................................................................. 7

v
2
BAB I

PENDAHULUAN
1.1 Latar Belakang
Game merupakan jenis hiburan yang disukai oleh semua orang dari usia
anak-anak, dewasa maupun tua. Selain digunakan untuk menghilangkan
kepenatan dalam beraktivitas, sebuah game juga dapat berfungsi untuk melatih
pola pikir seseorang untuk mencari solusi memecahkan suatu permasalahan yang
ada di sebuah game.
Dahulu game dimainkan secara tradisional seperti permainan kartu, catur, ular
tangga, petak umpet, dan lainnya. Seiring dengan berkembangnya teknologi,
permainan tersebut dikembangkan ke dalam teknologi yang lebih modern.
Sekarang banyak game baru yang memanfaatkan teknologi modern dalam
pembuatannya dan penggunaannya. Banyaknya jumlah dari jenis game yang
muncul, menyebabkan adanya pengelompokan genre dari game. Genre game juga
bertambah mengikuti perkembangan zaman, ada genre action games, strategy
games, role playing games, sport games, vehicle simulations, construction and
management simulations, adventure games, serta artificial life, board and puzzle.
Tic Tac Toe adalah permainan kertas dan pensil untuk dua pemain, X dan O,
yang bergiliran menandai ruang dalam kotak berukuran 3 × 3. Pemain yang
berhasil menempatkan tiga simbol mereka dalam baris horisontal, vertikal, atau
diagonal memenangkan permainan. Pada proses permainan tiap langkah dari tiap
pemain nantinya akan diberikan statement menang atau kalah.
Game yang akan dikembangkan ini merupakan perpaduan game classic
dengan fitur dan peraturan baru yang lebih menantang, sehingga dapat membawa
game ini menjadi game yang tidak kalah seru dengan game modern zaman
sekarang. Salah satunya pengembangan dari aplikasi ini sebuah permainan game
dimana awal dari permainan ini hanya sebuah permainan sederhana yang dapat
dimainkan pada smartphone.

1
2

1.2 Rumusan Masalah


Berdasarkan latar belakang diatas maka didapat rumusan masalah sebagai
berikut :
1. Bagaimana cara memainkan game Tictactoe?
2. Bagaimana cara memainkan game agar dapat dimainkan pada platform PC.
3. Bagaimaan caranya agar game ini dapat dimainkan secara offline

1.3 Tujuan
Adapun tujuan dari pembuatan game tictactoe adalah sebagai berikut :

1. Agar dapat memainkan game yang awalnya hanya ada di smartphone


menjadi bisa di mainkan di platform PC
2. Dapat dimainkan secara offline tanpa mengeluarkan kuota internet.
3. Permainan ini dapat mengenang masa lalu karena mirip dengan permainan
SOS yang dulu dimainkan melalui kertas saat masih kanak-kanak.
1.4 Manfaat
Manfaat yang diharapkan dari laporan game menggunakan aplikasi greenfoot
adalah sebagai berikut :

1. Dapat menikmati game snake menggunakan PC.


2. Mengisi waktu istirahat para pengguna computer pada khusunya.
3. Mengasah ketelitian dan kecepatan dalam berfikir.
BAB II

PERENCANAAN
2.1 Analisis Program
Sebuah program dirancang ataupun dieksekusi ketika mengalami masalah
yang memang diselesaikan dengan cara membuat program tersebut. Sama halnya
dengan game Tictactoe yang dibuat ini, game ini dibuat dengan tujuan agar
penikmat game dapat menikmatinya degan menggunakan PC.
Maka dari itu sebelum sebuah program dibuat atau program tersebut
terealisasi, maka diadakan analisis guna menganalisa program yang akan
dilaksanakan seperti apa nantinya. Langkah tersebut terjadi ketika perencanaan
program hingga program tersebut dapat berjalan.
Untuk membahas mengenai analisis dari game Tictactoe, jalannya program
ini sendiri sama dengan game sederhana pada umumnya dengan menjalankan
tombol atas,bawah,kanan dan kiri.
Dalam hal ini perlu diketahui bahwa game ini berjalan atau berfungsi
dikarenakan ada perintah-perintah yang terdapat didalamnya, yang tidak diketahui
oleh para penikmat game maka dari itu disini akan menganalisa mengenai
perintah-perintah tersebut.
Ketika game di run lalu kita mulai memainkan dengan menekan kotak yang
telah disediakan di papan permainan dan kemudian mendapatkan huruf X atau
huruf O ketika telah membuat garis vertical maupun huruf horizontal maka,
pemain yang terlebih dahulu membuatnya akan memenangkan permainan.
2.2 Flowchart
Dalam sebuah program pasti terdapat perencanaan atau rancangan dari alur
yang akan di lakukan pada saat project tersebut dieksekusi untuk dilaksanakan
atau dibuat programnya.
Dimana alur-alur tersebut sering dinamakan dengan flowchart, langkah ini
berguna agar pada saat program atau project tersebut dilaksanakan tidak terjadi
kesalahan dalam membuatnya.Berikut ini adalah alur rancangan program yang
telah dibuat dan dirancang untuk memahami alur program yang dibuat :

3
4

Gambar 2.1 Flowchart


2.3 Konsep yang digunakan
Penyusun membuat sebuah program untuk memenuhi tugas akhir dari
Praktikum Pemrograman Berorientasi Objek. Program yang dimaksud adalah
sebuah game yang di beri nama game Tictactoe. Berikut konsep yang digunakan
dalam game ini.
1. Metode Untuk Class MyWord
- addclicker berfungsi untuk menambahkan objek yang akan di klik
pada Word
- set(int) clicked, untuk mengetahui berapa kali klik pada objek
permainan.
2. Metode Untuk Class Clicker
- addedToWorld(greenfoot.Worldlatar) berfungsi untuk memasukkan
objek clicker
BAB III
HASIL DAN PEMBAHASAN PROGRAM
3.1 Implementasi Program
Sebuah game di buat atau di rancang pasti memiliki tujuan terhadap publik
yaitu mengimplementasikan program tersebut agar bisa digunakan atau di
manfaatkan oleh para masyarakat yang memerlukan. Berikut ini wujud dari
implementasi program yang telah di eksekusi :
Tampilan awal ketika program di belum di run ,lalu memainkan game dengan
menekan (klik) pada kotak yang telah disediakan

Gambar 3.1 Tampilan awal program

1. Lalu akan muncul huruf X pada kotak yang kita tuju, dan telah kita klik
tadi.

5
6

Gambar 3.2 Muncul huruf X di dalam kotak permainan


2. Ketika telah muncul huruf X untuk pemain pertama, maka selanjutnya
pemain kedua dapat menekan kotak yang nantinya akan diisi dengan
huruf O.

Gambar 3.2 Tampilan pengisian pemain kedua


3. Kedua pemain akan bergantian meletakkan huruf X dan O sampai
membentuk garis vertical,horizontal, maupun jumping. Yang duluan
membentuk garis akan menjadi pemenangnya.
7

Gambar 3.3 Tampilan winner


8

3.2 Source Code


/**
* Constructor for objects of class MyWorld.
*
*/
public MyWorld()
{
// Create a new world with 600x400 cells with a
cell size of 1x1 pixels.
super(3, 3, 300);
prepare();
Greenfoot.start();
}
public void prepare(){
Clicker clicker = new Clicker();
addObject(clicker,0,0);
Clicker clicker2 = new Clicker();
addObject(clicker2,1,0);
Clicker clicker3 = new Clicker();
addObject(clicker3,2,0);
Clicker clicker4 = new Clicker();
addObject(clicker4,0,1);
Clicker clicker6 = new Clicker();
addObject(clicker6,2,1);
Clicker clicker7 = new Clicker();
addObject(clicker7,2,2);
Clicker clicker8 = new Clicker();
addObject(clicker8,1,2);
Clicker clicker9 = new Clicker();
addObject(clicker9,0,2);
middleClicker = new Clicker();
addObject(middleClicker,1,1);
}

public boolean givexorO(){


return xorO;
}

public void changexorO(boolean xorO){


this.xorO = xorO;
}

public void win(boolean whoWon){


if(whoWon){
middleClicker.setImage("Xwon.png");
}else{
middleClicker.setImage("Owon.png");
}
}

public void draw(){


9

middleClicker.setImage("draw.png");
}

public void clicked(){


clicked++;
}

public int howManyClicked(){


return clicked;
}
}
import greenfoot.*; // (World, Actor, GreenfootImage,
Greenfoot and MouseInfo)

/**
* Write a description of class Clicker here.
*
* @author Paddy
* @version 16.08.2018
*/
public class Clicker extends Actor
{
private int xorO = 0; //0 = neither; 1 = X; 2 = O
private boolean alreadyClicked = false;

/**
* Act - do whatever the Clicker wants to do. This
method is called whenever
* the 'Act' or 'Run' button gets pressed in the
environment.
*/
public void act()
{
clicked();
checkWin();
checkDraw();
}

public void clicked(){


MyWorld world = (MyWorld)getWorld();
if(Greenfoot.mouseClicked(this) &&
!alreadyClicked){
if(world.givexorO()){
this.setImage("Frame_X.png");
this.xorO = 1;
alreadyClicked = true;
world.clicked();
world.changexorO(false);
}else{
this.setImage("Frame_O.png");
this.xorO = 2;
10

alreadyClicked = true;
world.clicked();
world.changexorO(true);
}
}
}

public void checkWin(){


if(sameUp() && sameDown()){
win();
}else if(sameLeft() && sameRight()){
win();
}else if(sameLeftUp() && sameRightDown()){
win();
}else if(sameLeftDown() && sameRightUp()){
win();
}
}

public void checkDraw(){


MyWorld world = (MyWorld)getWorld();

if(world.howManyClicked() >= 9){


world.draw();
}
}

private boolean sameUp(){


Clicker clicker = (Clicker)getOneObjectAtOffset(0,-
1,Clicker.class);
if(clicker != null){
if(this.xorO == 1 && clicker.givexorO() == 1){
return true;
}else if(this.xorO == 2 && clicker.givexorO()
== 2){
return true;
}else{
return false;
}
}
return false;
}

private boolean sameDown(){


Clicker clicker =
(Clicker)getOneObjectAtOffset(0,1,Clicker.class);
if(clicker != null){
if(this.xorO == 1 && clicker.givexorO() == 1){
return true;
}else if(this.xorO == 2 && clicker.givexorO()
== 2){
11

return true;
}else{
return false;
}
}
return false;
}
private boolean sameLeft(){
Clicker clicker = (Clicker)getOneObjectAtOffset(-
1,0,Clicker.class);
if(clicker != null){
if(this.xorO == 1 && clicker.givexorO() == 1){
return true;
}else if(this.xorO == 2 && clicker.givexorO()
== 2){
return true;
}else{
return false;
}
}
return false;
}
private boolean sameRight(){
Clicker clicker =
(Clicker)getOneObjectAtOffset(1,0,Clicker.class);
if(clicker != null){
if(this.xorO == 1 && clicker.givexorO() == 1){
return true;
}else if(this.xorO == 2 && clicker.givexorO()
== 2){
return true;
}else{
return false;
}
}
return false;
}

private boolean sameLeftUp(){


Clicker clicker = (Clicker)getOneObjectAtOffset(-
1,-1,Clicker.class);
if(clicker != null){
if(this.xorO == 1 && clicker.givexorO() == 1){
return true;
}else if(this.xorO == 2 && clicker.givexorO()
== 2){
return true;
}else{
return false;
}
}
12

return false;
}

private boolean sameRightUp(){


Clicker clicker = (Clicker)getOneObjectAtOffset(1,-
1,Clicker.class);
if(clicker != null){
if(this.xorO == 1 && clicker.givexorO() == 1){
return true;
}else if(this.xorO == 2 && clicker.givexorO()
== 2){
return true;
}else{
return false;
}
}
return false;
}

private boolean sameLeftDown(){


Clicker clicker = (Clicker)getOneObjectAtOffset(-
1,1,Clicker.class);
if(clicker != null){
if(this.xorO == 1 && clicker.givexorO() == 1){
return true;
}else if(this.xorO == 2 && clicker.givexorO()
== 2){
return true;
}else{
return false;
}
}
return false;
}
private boolean sameRightDown(){
Clicker clicker =
(Clicker)getOneObjectAtOffset(1,1,Clicker.class);
if(clicker != null){
if(this.xorO == 1 && clicker.givexorO() == 1){
return true;
}else if(this.xorO == 2 && clicker.givexorO()
== 2){
return true;
}else{
return false;
}
}
return false;
}
public int givexorO(){
return xorO;
13

}
private void win(){
MyWorld world = (MyWorld)getWorld();

if(xorO == 1){
world.win(true);
}else if(xorO == 2){
world.win(false);
}
}
14

BAB IV

PENUTUP

3.1 Kesimpulan
Sebuah program dirancang dan juga dilaksanakan karena memiliki tujuan dan
juga manfaat yang bisa dirasakan, sama halnya dengan program game tictactoe
ini, program tersebut di eksekusi karena memiliki tujuan yaitu untuk
mempermudah penikmat game khususnnya jika ingin memainkannya bisa
menggunakan PC atau laptop. Game Tictactoe dengan mudah dimainkan dengan
membuat garis horizontal.vertical maka pemain akan berhasil menang memainkan
game, dan karena game ini menggunakan greenfoot jadi dapat digunakan secara
offline supaya memudahkan para pemain, karena tidak terhubung ke koneksi
internet.
4.2 Saran
Semoga progam ini diharapkan bisa diperbaiki ataupun disempurnakan oleh
pembaca yang nantinya akan membuat program yang sama. Diharapkan para
pembaca bisa ataupun dapat menyempurnakan lagi di bagian penambahan level
maupun penggunaan fitur-fitur di dalam tersebut. Setiap program yang dibuat
pasti memiliki kekurangan dan kelebihannya tersendiri. Begitupun, dengan
program yang kami buat di program ini memiliki kekurangan yang diharapakan
bisa diperbaiki di penelitian program kedepannya.
15

DAFTAR PUSTAKA

Bachtiar Sulaiman. (2014, Januari Selasa). LAPORAN PRAKTIKUM DASAR


PEMROGRAMAN 1. Dipetik Desember Kamis, 2017,

Kelompok16. (2014, November Minggu). makalah algoritma dalam program


sistem. Dipetik Desember Rabu, 2017, dari blogspot.co.id:

Linkedln Learning . (2010, September Wednesday). Pembahasan


Pendahuluan,Pembahasan dan Penutup Dalam Sebuah Laporan.

Mediaaprina. (2014, Mei Jum'at). Kasir. Dipetik Desember Rabu, 2017, dari
www.scribd.com: https://www.scribd.com/doc/221696426/KASIR

Pulung Aguswanto, S.T. (2012, March 12). ULUNG SATRIA. Diambil kembali
dari Contoh Laporan Praktikum Pemograman Dasar :
http://ulungsatria.webs.com/apps/blog/show/12972794-laporan-praktikum-
dasar-pemrograman

Taruna, A. (2015, Februari Selasa). LAPORAN AKHIR PERENCANA. Dipetik


Desember Rabu, 2017, dari www.scribd.com:
https://www.scribd.com/doc/79166163/LAPORAN-AKHIR-
PERENCANA

Anda mungkin juga menyukai