• Tidak ada hasil yang ditemukan

4. IMPLEMENTASI SISTEM

N/A
N/A
Protected

Academic year: 2021

Membagikan "4. IMPLEMENTASI SISTEM"

Copied!
29
0
0

Teks penuh

(1)

Universitas Kristen Petra

44

4. IMPLEMENTASI SISTEM

4.1

Koneksi dan Membuat Database dan Table pada MySQL Server

Dalam pembuatan sistem ini menggunakan XAMPP Server untuk

melakukan koneksi pada MySQL server. Untuk menjalankan XAMPP Server

tekan start pada modul Apache dan MySQL seperti pada Gambar 4.1.

Gambar 4.1. Connect XAMPP Server

4.2

Setting MySQL

Dalam pembuatan database, diperlukan untuk mengisi nama database

pada form yang sudah disediakan dan kemudian mengklik tombol create seperti

pada Gambar 4.2.

Gambar 4.2. Pembuatan database MySQL

Langkah berikutnya adalah membuat tabel. Setelah pembuatan database,

maka akan ditampilkan menu untuk pembuatan tabel seperti pada Gambar 4.3.

(2)

Universitas Kristen Petra

45

Gambar 4.3. Pembuatan tabel MySQL

Pada menu untuk pembuatan tabel, user diminta untuk memasukkan nama

tabel, jumlah fields yang diinginkan, dan menekan tombol “go”. Selanjutnya akan

muncul tampilan seperti pada Gambar 4.4.

Gambar 4.4. Pengaturan field tabel

Pada form dalam Gambar 4.4 user diminta untuk mengisi nama field dan

pengaturan lainnya seperti type dari field tersebut.

4.3

Koneksi Database dari MySQL Server ke PHP My Admin

Jika ingin melakukan koneksi antara PHP dan MySQL Server diperlukan

coding seperti pada Segmen 4.1. Coding tersebut harus selalu ada setiap kali ingin

(3)

Universitas Kristen Petra

46

Segmen 4.1. Connect Database

4.4

Konfigurasi Database Server

Pada MySQL sebagai database server, dibuat database dengan rincian

sebagai berikut:

a. Nama database: skripsi

b. User: m26412107

c. Password: ryanhose

Database tersebut berisi tabel dan field yang telah didesain oleh penulis pada

bab sebelumnya.

4.5

Implementasi Program

Implementasi program merupakan penerapan rancangan dari desain

sistem yang telah dibuat. Berikut ini Tabel 4.1 yang menjelaskan function dalam

sistem dan keterangan beserta segmen yang berkaitan pada program.

Function dalam sistem

Tabel 4.1.

No

Function

Keterangan

1.

Main Menu

Menampilkan energy user, menu dan

background music

2.

Peta

Menampilkan google map dan mencari

posisi user serta menampilkan misi yang

tersedia di peta.

3.

Shop

Menampilkan barang yang dapat dibeli

oleh user.

4.

Inventory

Menampilkan barang yang dimiliki oleh

user.

5.

Character

Menampilkan equip user serta skill user.

<?php

session_start(); $conn=mysqli_connect

("localhost","m26412107","ryanhose","skripsi"); ?>

(4)

Universitas Kristen Petra

47

6.

Turnamen

Menampilkan daftar pemain lain yang

dapat ditantang.

4.5.1

Implementasi Main Menu

Main menu berisi menu yang dapat dipilih oleh user. Menu tersebut yaitu

peta, inventory, shop, character, turnamen. Pada halaman ini juga menampilkan

energy user. Halaman ini juga diberi background music.

Function Main Menu

Tabel 4.2.

No.

Function

Keterangan

Segmen

1.

Menu

Menampilkan button menu.

-

2.

Background music

Memutar lagu saat halaman

dibuka.

-

4.5.2

Implementasi Peta

Pada halaman peta, user dapat melihat hasil pencarian produk, melakukan

filter harga serta dapat melakukan sort dengan harga dan review. Terdapat

beberapa function dalam halaman produk.

Function

tersebut berguna untuk

mengambil data, menampilkan data yang telah diambil dan membandingkan

produk yang telah dipilih oleh user.

Function Peta

Tabel 4.3.

No.

Function

Keterangan

Segmen

1.

getMap

Mengambil data peta dari

Google Maps.

4.2, 4.3, 4.4

2.

LocationListener

Melihat posisi pemain,

menunjukkan posisi pemain,

serta memanggil misi

4.5

3.

AmbilMisi

Mengambil service misi

4.6

4.

MissionTask

Mengambil data musuh

4.9

Dalam function getMap terdapat beberapa

tahap

dalam pengambilan data.

(5)

Universitas Kristen Petra

48

Tahap pertama yaitu setting Google Maps pada AndroidManifest. Tahap kedua

yaitu mendeklarasi pada XML layout MapActivity. Tahap ketiga yaitu deklarasi

dan memodifikasi peta seperti layar dituju ke posisi pemain dan marker.

Segment 4.2. berisi cara untuk

setting

Google Maps

pada

AndroidManifest. Sebelumnya perlu mengambil API_KEY dari google dahulu.

Setelah mendapatkan API_KEY, dimasukkan ke dalam AndroidManifest.

Segmen 4.2. Setting pada AndroidManifest.xml

Segmen 4.3 berisi layout google maps pada content_map.xml untuk

digunakan pada android java.

Segmen 4.3. Layout pada content_map.xml

Segment 4.4 berisi deklarasi google maps untuk dipakai pada MapActivity.

Segmen 4.4. Deklarasi Googe Maps pada MapActivity

Segment 4.5 berisi pemakaian google maps. Layar akan langsung menuju

ke posisi pemain. Posisi pemain akan ditandai oleh marker. Halaman ini juga akan

mengambil data misi, serta menempatkan posisi misi pada peta.

<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="AIzaSyD-5_5GcBCWqx7qH_eHAClYyYLW4QlzzCs" /> <fragment android:id="@+id/map" android:layout_width="match_parent" android:layout_height="wrap_content" class="com.google.android.gms.maps.SupportMapFragment" /> SupportMapFragment sm = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map); sm.getMapAsync(this);

(6)

Universitas Kristen Petra

49

Segmen 4.5. LocationListener

Pada segmen 4.6 sampai segmen 4.8 berisikan pengambilan data misi.

Function ambilMisi dipanggil saat user memilih misi untuk dijalankan. Function

ambilMisi akan terhubung ke database dengan menggunakan service

request_mission seperti pada segment 4.7 dan segmen 4.8.

private LocationListener listener = new LocationListener() { @Override

public void onLocationChanged(Location location) { // TODO Auto-generated method stub

posSaatIni=new LatLng(location.getLatitude(),location.getLongitude()); //pos=new LatLng( location.getLatitude(),location.getLongitude()); if (m==null) {

m=googleMap.addMarker(new MarkerOptions() .position(posSaatIni)

.title("Posisi anda")); } else { m.setPosition(posSaatIni); } if (first) { first=false; CameraUpdate center= CameraUpdateFactory.newLatLngZoom(posSaatIni, 15); googleMap.moveCamera(center); if (!missionLoaded) { missionLoaded=true; ambilMisi(); } } }

(7)

Universitas Kristen Petra

50

Segmen 4.6. Function ambilMisi

Segmen 4.7. Service request_mission.php

Segmen 4.8. Service request_mission.php (lanjutan)

public void ambilMisi() {

try {

MissionTask lg = new MissionTask(); String url =

IP.server+"/request_mission.php?id="+IP.userID+"&lat="+posSaatI ni.latitude+"&lng="+posSaatIni.longitude;

System.out.println(url); lg.execute(url); } catch (Exception e) { e.printStackTrace(); } } <?php include "connect.php"; include "create_mission.php";

function distance($lat1, $lon1, $lat2, $lon2, $unit) { $theta = $lon1 - $lon2;

$dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return ($miles * 1.609344); } else if ($unit == "N") { return ($miles * 0.8684); } else { return $miles; } } $lat=$_GET["lat"]; $lng=$_GET["lng"]; $id=$_GET["id"];

(8)

Universitas Kristen Petra

51

4.5.3

Implementasi Shop

Menu shop berfungsi untuk menampilkan barang yang tersedia ditoko dalam

permainan serta user dapat membeli barang jika memiliki gold yang cukup.

$id=$_GET["id"]; $dataUser=array();

$q="SELECT * FROM user WHERE id_user='". $id ."'"; $res=mysqli_query($conn,$q);

$dataUser=mysqli_fetch_assoc($res);

$daftarEnemy=array();

$q="SELECT e.*,l.*,e2.enemy_name,e2.Gambar,e2.baseHP as HP,e2.baseGOLD as GOLD,e2.baseEXP as EXP,e2.baseATK as

ATK,e2.baseINIT as INIT, e2.baseDEF as DEF, e2.baseEVA as EVA, e2.baseHIT as HIT ".

"FROM enemy_today e ". "INNER JOIN location l ON (e.location_id=l.id_location) ".

"INNER JOIN enemy e2 ON (e2.id_enemy=e.enemy_id) ". "WHERE e.id_enemy_today NOT IN (SELECT enemy_today_id FROM enemy_today_defeat WHERE user_id='". $id . "') AND

DATE_FORMAT(SYSDATE(),'%d-%M-%Y')=DATE_FORMAT(tanggal,'%d-%M-%Y')"; $res=mysqli_query($conn,$q); //echo $q; while ($row=mysqli_fetch_assoc($res)) { $row["HP"]=($dataUser["user_level"]+1)*$row["HP"]; $row["ATK"]=(($dataUser["user_level"]+1)*5)+$row["ATK"]; $row["DEF"]=(($dataUser["user_level"]+1)*5)+$row["DEF"]; $row["HIT"]=(($dataUser["user_level"]+1)*2)+$row["HIT"]; $row["EVA"]=(($dataUser["user_level"]+1)*1)+$row["EVA"]; $row["Jarak"]=number_format(distance($lat,$lng,$row["lat"],$row ["lng"],"K"),2); array_push($daftarEnemy,$row); } echo json_encode($daftarEnemy); ?>

(9)

Universitas Kristen Petra

52

Function shop

Tabel 4.4.

No. Function

Keterangan

Segmen

1.

loadItem

Mengambil data item shop.

4.9

2.

ItemTask

Menampilkan item pada shop.

4.12

3.

buyItem

Membeli barang pada shop.

4.14

Segmen 4.9 adalah function untuk mengambil data item shop dari

database. Function loadItem akan menggunakan service shop_item.php untuk

mengambil data dari database.

Segmen 4.9. Function loadItem

Segmen 4.10. Service shop_item.php

public void loadItem() {

try {

ItemTask lg = new ItemTask();

String url = IP.server+"/shop_item.php?id="+IP.userID; System.out.println(url);

lg.execute(url); } catch (Exception e) { e.printStackTrace(); } } <?php include "connect.php"; $dataInventory=array(); $q="SELECT * ". "FROM equip"; $res=mysqli_query($conn,$q); while ($row=mysqli_fetch_assoc($res)) { $type=""; if ($row["equip_type"]=="1") { $type="Weapon"; } else if ($row["equip_type"]=="2") { $type="Item"; }

(10)

Universitas Kristen Petra

53

Segmen 4.11. Service shop_item.php (lanjutan)

Pada segmen 4.12 akan berisi function ItemTask. Berfungsi untuk

penataan penulisan data-data pada halaman shop dan format penulisan harga.

Segmen 4.12. Function ItemTask

else if ($row["equip_type"]=="3") { $type="Armor"; } else { $type="Accessories"; } $row["type"]=$type; array_push($dataInventory,$row); } $data["inventory"]=$dataInventory; $id=mysqli_real_escape_string($conn,$_GET["id"]); $q="SELECT * FROM user WHERE id_user='". $id ."'"; $res=mysqli_query($conn,$q);

$data["user"]=mysqli_fetch_assoc($res); echo json_encode($data);

?>

public class ItemTask extends AsyncTask<String, Void, String> {

@Override

protected void onPreExecute() { }

@Override

protected String doInBackground(String... url) { String readStream="";

try {

URL urlx = new URL(url[0]);

HttpURLConnection con = (HttpURLConnection) urlx.openConnection();

readStream = readStream(con.getInputStream()); }

catch (Exception ex) {

ex.printStackTrace(); }

return readStream; }

private String readStream(InputStream in) { StringBuilder sb = new StringBuilder(); try {

BufferedReader reader = new BufferedReader(new

InputStreamReader(in));

(11)

Universitas Kristen Petra

54

Segmen 4.13. Function ItemTask (lanjutan)

String nextLine = "";

while ((nextLine = reader.readLine()) != null) { sb.append(nextLine); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } @Override

protected void onPostExecute(String result) { try {

JSONObject obj=new JSONObject(result); JSONArray ja=obj.getJSONArray("inventory"); JSONObject user=obj.getJSONObject("user"); DecimalFormat formatter = new

DecimalFormat("#,###,###");

int iGold=user.getInt("user_gold"); int iCash=user.getInt("user_cash"); String gold = formatter.format(iGold); String cash = formatter.format(iCash); goldUser=iGold;

cashUser=iCash;

tv.setText("Gold : "+gold+", Cash : "+cash); data.clear();

lobj=new ArrayList<JSONObject>(); for (int i = 0;i<ja.length();i++) { JSONObject jo = ja.getJSONObject(i); HashMap<String,String> item=new

HashMap<String,String>();

item.put("equip_name",jo.getString("equip_name")); lobj.add(jo);

String price =

formatter.format(jo.getInt("equip_price")); item.put("equip_price",price);

item.put("type",jo.getString("type")); data.add(item);

}

adapter.notifyDataSetChanged(); }

catch (Exception ex) {

ex.printStackTrace(); }

} }

(12)

Universitas Kristen Petra

55

Segmen 4.14 berisi function buyItem untuk membeli barang. Function ini

terhubung ke database dengan menggunakan servince_buy.php seperti pada

segmen 4.15.

Segmen 4.14. Function buyItem

Segmen 4.15. Service service_buy.php

public void buyItem(View v) {

try {

BuyTask lg = new BuyTask();

JSONObject jo=lobj.get(posPilih);

String itemID=jo.getString("id_equip"); String url =

IP.server+"/service_buy.php?id="+IP.userID+"&item_id="+jo.getSt ring("id_equip");

System.out.println(url); lg.execute(url); } catch (Exception e) { e.printStackTrace(); } } <?php include "connect.php"; $dataInventory=array(); $id=$_GET["id"]; $id_item=$_GET["item_id"];

$q="SELECT * FROM inventory WHERE user_id='". $id ."' AND equip_id='". $id_item ."'";

$res=mysqli_query($conn,$q);

if ($row=mysqli_fetch_assoc($res)) {

$q="UPDATE inventory SET

total_inventory=total_inventory+1 WHERE id_inventory='". $row["id_inventory"] ."'";

//echo $q;

mysqli_query($conn,$q); }

else {

$q="INSERT INTO inventory

(user_id,equip_id,total_inventory) VALUES ('". $id ."','". $id_item ."',1)";

mysqli_query($conn,$q); }

$q="SELECT * FROM equip WHERE id_equip='". $id_item ."'"; //echo $q;

$res=mysqli_query($conn,$q);

$dataItem=mysqli_fetch_assoc($res);

(13)

Universitas Kristen Petra

56

Segmen 4.16. Service service_buy.php (lanjutan)

4.5.4

Implementasi Inventory

Menu inventory berfungsi untuk menampilkan barang yang dimiliki oleh user

dan dapat menjual barang yang dimiliki untuk mendapatkan gold.

Function Inventory

Tabel 4.5.

No. Function

Keterangan

Segmen

1.

sell

Menjual barang inventory

4.17

2.

SellTask

Meng-refresh setelah menjual barang.

4.20

3.

loadItem

Mengambil data inventory user

4.21

Segmen 4.17 adalah function untuk menjual barang inventory user.

Menggunakan service player_sell.php.

Segmen 4.17. Function sell

$q="UPDATE user SET

user_gold=user_gold-".$dataItem["equip_price"]." WHERE id_user='". $id ."'"; //echo $q;

mysqli_query($conn,$q);

$q="SELECT * FROM user WHERE id_user='". $id ."'"; $res=mysqli_query($conn,$q);

$data=mysqli_fetch_assoc($res); echo json_encode($data);

?>

public void sell(View v) {

try {

SellTask lg = new SellTask(); String itemID="";

JSONObject jo=lobj.get(posPilih); itemID=jo.getString("equip_id");

int jumlah_i=jo.getInt("total_inventory"); String jumlah="";

EditText et=(EditText)findViewById(R.id.etJumlah); jumlah=et.getText().toString();

int iJumlah=Integer.parseInt(jumlah); if (iJumlah>0 && iJumlah<=jumlah_i) {

(14)

Universitas Kristen Petra

57

Segmen 4.18. Function sell (lanjutan)

Segmen 4.19. Service player_sell.php

Segmen 4.20 berisi function SellTask yang berfungsi untuk meng-refresh

halaman setelah user melakukan penjualan barangnya.

String url =

IP.server+"/player_sell.php?id="+IP.userID+"&item_id="+ite mID+"&jumlah="+jumlah;

System.out.println(url); lg.execute(url);

} else {

Toast.makeText(getApplicationContext(),"Jumlah

barang tidak mencuupu",Toast.LENGTH_LONG).show();

} } catch (Exception e) { e.printStackTrace(); } } <?php include "connect.php"; $userID=$_GET["id"]; $itemID=$_GET["item_id"]; $jumlah=$_GET["jumlah"];

$q="UPDATE inventory SET total_inventory=total_inventory-". $jumlah ." WHERE user_id='total_inventory=total_inventory-". $userID ."' and equip_id='total_inventory=total_inventory-". $itemID ."'";

mysqli_query($conn,$q);

$q="DELETE FROM inventory WHERE total_inventory<=0"; mysqli_query($conn,$q);

$q="SELECT * from equip WHERE id_equip = '". $itemID ."'";

$res = mysqli_query($conn,$q); $dataItem=mysqli_fetch_assoc($res);

$total=($dataItem["equip_price"]/2)*$jumlah;

$q="UPDATE user SET user_gold=user_gold+". $total ." WHERE id_user='". $userID ."'";

mysqli_query($conn,$q); ?>

(15)

Universitas Kristen Petra

58

Segmen 4.20. Function SellTask

Segment 4.21 berisikan function loadItem yang berguna untuk mengambil

data barang invetory milik user. Menggunakan service player_invetory.php.

Segmen 4.21. Function loadItem

public class SellTask extends AsyncTask<String, Void, String> {

@Override

protected void onPreExecute() { }

@Override

protected String doInBackground(String... url) { String readStream="";

try {

URL urlx = new URL(url[0]);

HttpURLConnection con = (HttpURLConnection) urlx.openConnection();

readStream = readStream(con.getInputStream()); }

catch (Exception ex) {

ex.printStackTrace(); }

return readStream; }

private String readStream(InputStream in) { StringBuilder sb = new StringBuilder(); try {

BufferedReader reader = new BufferedReader(new

InputStreamReader(in));

String nextLine = "";

while ((nextLine = reader.readLine()) != null) { sb.append(nextLine); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } @Override

protected void onPostExecute(String result) { try {

loadItem(); }

catch (Exception ex) {

} } }

(16)

Universitas Kristen Petra

59

Segmen 4.22. Service player_inventory.php

Segmen 4.23. Service player_inventory.php (lanjutan)

public void loadItem() {

try {

ItemTask lg = new ItemTask(); String url =

IP.server+"/player_inventory.php?id="+IP.userID; System.out.println(url);

lg.execute(url); } catch (Exception e) { e.printStackTrace(); } } <?php include "connect.php"; $dataInventory=array(); $id=$_GET["id"]; $q="SELECT e.*,i.total_inventory,i.equip_id ". "FROM inventory i ".

"INNER JOIN equip e ON (i.equip_id=e.id_equip) ". "WHERE i.user_id='". $id ."'";

//echo $q; $res=mysqli_query($conn,$q); while ($row=mysqli_fetch_assoc($res)) { $type=""; if ($row["equip_type"]=="1") { $type="Weapon"; } else if ($row["equip_type"]=="2") { $type="Item"; } else if ($row["equip_type"]=="3") { $type="Armor"; } else { $type="Accessories"; } $row["type"]=$type; array_push($dataInventory,$row); } $data["inventory"]=$dataInventory; echo json_encode($data); echo json_encode($data); //echo json_encode($retVal); ?>

(17)

Universitas Kristen Petra

60

4.5.5

Implementasi Character

Menu berguna character berfungsi untuk menampilkan informasi equip

user serta skill yang dimiliki oleh user serta user juga dapat meningkatkan skill

jika memiliki poin yang cukup.

Function Character

Tabel 4.6.

No. Function

Keterangan

Segmen

1.

equip

Meng-update data equip user jika

diganti.

4.24

2.

EquipTask

Menampilkan equip pemain.

4.26

3.

loadCharacter

Mengambil data character user.

4.27

4.

Simpan

Meng-update skill setelah

ditingkatkan

4.30

5.

SimpanTask

Menampilkan skill user.

4.32

6.

CharacterTask

Menentukan skill character user

berdasarkan job user.

4.34

Segmen 4.24 berisi function equip untuk meng-update data equip user

jika diganti. Menggunakan service player_equip_2.php.

Segmen 4.24. Function equip

public void equip(int position) {

try {

EquipTask lg = new EquipTask(); JSONObject jo=lobj.get(position); String url =

IP.server+"/player_equip_2.php?id="+IP.userID+"&type="+active+ "&id_e="+jo.getString("id_equip");

System.out.println(url); lg.execute(url);

} catch (Exception e) { e.printStackTrace(); }

(18)

Universitas Kristen Petra

61

Segmen 4.25. Service player_equip_2.php

Segmen 4.26 berisi function EquipTask. Berfungsi untuk menampilkan

equip user yang saat ini sedang dipakai.

<?php include "connect.php"; $type=$_GET["type"]; $userID=$_GET["id"]; $id_equip=$_GET["id_e"]; if ($type=="weapon") {

$q="UPDATE user SET weapon_id='". $id_equip."' WHERE id_user='". $userID ."'";

mysqli_query($conn,$q); }

else if ($type=="acc") {

$q="UPDATE user SET acc_id='". $id_equip."' WHERE id_user='". $userID ."'";

mysqli_query($conn,$q); }

else if ($type=="armor") {

$q="UPDATE user SET armor_id='". $id_equip."' WHERE id_user='". $userID ."'";

mysqli_query($conn,$q); }

(19)

Universitas Kristen Petra

62

Segmen 4.26. Function EquipTask

Segmen 4.27 berisi function loadCharacter yang berfungsi untuk

mengambil data character user. Menggunakan service character.php.

Segmen 4.27. Function loadCharacter

public class EquipTask extends AsyncTask<String, Void, String> {

@Override

protected void onPreExecute() { }

@Override

protected String doInBackground(String... url) { String readStream="";

try {

URL urlx = new URL(url[0]);

HttpURLConnection con = (HttpURLConnection) urlx.openConnection();

readStream = readStream(con.getInputStream()); }

catch (Exception ex) {

ex.printStackTrace(); }

return readStream; }

private String readStream(InputStream in) { StringBuilder sb = new StringBuilder(); try {

BufferedReader reader = new BufferedReader(new

InputStreamReader(in));

String nextLine = "";

while ((nextLine = reader.readLine()) != null) { sb.append(nextLine); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } @Override

protected void onPostExecute(String result) { try {

dialog.dismiss(); loadCharacter(); }

catch (Exception ex) {

} } }

(20)

Universitas Kristen Petra

63

Segmen 4.28. Service character.php

Segmen 4.29. Service character.php (lanjutan)

public void loadCharacter() {

try {

CharacterTask lg = new CharacterTask(); String url =

IP.server+"/character.php?id="+IP.userID; System.out.println(url);

lg.execute(url); } catch (Exception e) { e.printStackTrace(); } } <?php include "connect.php"; $retVal=array(); $id=mysqli_real_escape_string($conn,$_GET["id"]); $q="SELECT u.*,COALESCE(a.equip_name,'Nothing') as armor,COALESCE(w.equip_name,'Nothing') as weapon,COALESCE(ac.equip_name,'Nothing') as acc ". "FROM user u ".

"LEFT JOIN equip w ON (w.id_equip=u.weapon_id) ". "LEFT JOIN equip a ON (a.id_equip=u.armor_id) ". "LEFT JOIN equip ac ON (ac.id_equip=u.acc_id) ". "WHERE id_user='$id'"; $res=mysqli_query($conn,$q); $dataUser=mysqli_fetch_assoc($res); $dataUser["ATK"]=0; $dataUser["HP"]=0; $dataUser["DEF"]=0; $dataUser["EVA"]=0; $dataUser["HIT"]=0; $dataUser["INIT"]=0; if ($dataUser["user_job"]=="1") { $dataUser["HP"]=200; $dataUser["ATK"]=7; $dataUser["DEF"]=10; $dataUser["EVA"]=10; $dataUser["HIT"]=75; $dataUser["INIT"]=3; } if ($dataUser["user_job"]=="2") { $dataUser["HP"]=150; $dataUser["ATK"]=10; $dataUser["DEF"]=5; $dataUser["EVA"]=5;

(21)

Universitas Kristen Petra

64

Segmen 4.30 berisi function simpan untuk menyimpan user skill.

Menggunakan service save_skill.php.

Segmen 4.30. Function simpan

$dataUser["EVA"]=5; $dataUser["HIT"]=60; $dataUser["INIT"]=4; } if ($dataUser["user_job"]=="3") { $dataUser["HP"]=100; $dataUser["ATK"]=20; $dataUser["DEF"]=5; $dataUser["EVA"]=5; $dataUser["HIT"]=90; $dataUser["INIT"]=2; } /*$dataUser["HP"]=$dataUser["HP"]*$dataUser["user_level"]; */ $dataUser["ATK"]=$dataUser["ATK"]*$dataUser["user_level"]; $dataUser["DEF"]=$dataUser["DEF"]*$dataUser["user_level"]; echo json_encode($dataUser); ?>

public void simpan(View v) {

try {

SimpanTask lg = new SimpanTask(); String url =

IP.server+"/save_skill.php?id="+IP.userID+"&skill1="+lvlSk ill1+"&skill2="+lvlSkill2+"&skill3="+lvlSkill3+"&skill4="+ lvlSkill4+"&skillpoint="+skillPoint;

System.out.println(url); lg.execute(url);

} catch (Exception e) { e.printStackTrace(); }

(22)

Universitas Kristen Petra

65

Segmen 4.31. Service save_skill.php

Segmen 4.32 berisi function SimpanTask yang berfungsi untuk

menampilkan skill setelah ditambah.

Segmen 4.32. Function SimpanTask

<?php include "connect.php"; $skill1=$_GET["skill1"]; $skill2=$_GET["skill2"]; $skill3=$_GET["skill3"]; $skill4=$_GET["skill4"]; $skillpoint=$_GET["skillpoint"]; $id=$_GET["id"];

$q="UPDATE user SET user_skill_point=$skillpoint, skill_1=$skill1, skill_2=$skill2, skill_3=$skill3, skill_4=$skill4 WHERE id_user='$id'";

mysqli_query($conn,$q); echo json_encode("success"); ?>

public class SimpanTask extends AsyncTask<String, Void, String> {

ProgressDialog ld; @Override

protected void onPreExecute() { }

@Override

protected String doInBackground(String... url) { // TODO Auto-generated method stub

//StringBuilder builder = new StringBuilder(); //DefaultHttpClient client = new

DefaultHttpClient();

//HttpGet httpGet = new HttpGet(url[0]);

String readStream="";

try {

URL urlx = new URL(url[0]);

HttpURLConnection con = (HttpURLConnection) urlx.openConnection();

readStream = readStream(con.getInputStream()); }

catch (Exception ex) {

ex.printStackTrace(); }

return readStream; }

private String readStream(InputStream in) { StringBuilder sb = new StringBuilder(); try {

(23)

Universitas Kristen Petra

66

Segmen 4.33. Function SimpanTask (lanjutan)

Segmen 4.34 berisi function CharacterTask yang berfungsi untuk

menampilkan skill user sesuai job user.

Segmen 4.34. Function CharacterTask

try {

BufferedReader reader = new BufferedReader(new

InputStreamReader(in));

String nextLine = "";

while ((nextLine = reader.readLine()) != null) { sb.append(nextLine); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } @Override

protected void onPostExecute(String result) { //Log.e("result setup",result);

loadCharacter();

} }

public class CharacterTask extends AsyncTask<String, Void, String> {

ProgressDialog ld; @Override

protected void onPreExecute() {

ld = new ProgressDialog(CharacterActivity.this); ld.setTitle("Loading");

ld.setMessage("Pengambilan data karakter"); ld.setCancelable(true);

ld.show(); }

@Override

protected String doInBackground(String... url) { // TODO Auto-generated method stub

//StringBuilder builder = new StringBuilder(); //DefaultHttpClient client = new

DefaultHttpClient();

//HttpGet httpGet = new HttpGet(url[0]);

String readStream="";

try {

URL urlx = new URL(url[0]);

HttpURLConnection con = (HttpURLConnection) urlx.openConnection();

readStream = readStream(con.getInputStream()); }

(24)

Universitas Kristen Petra

67

Segmen 4.35. Function CharacterTask (lanjutan 1)

catch (Exception ex)

{

ex.printStackTrace(); }

return readStream; }

private String readStream(InputStream in) { StringBuilder sb = new StringBuilder(); try {

BufferedReader reader = new BufferedReader(new

InputStreamReader(in));

String nextLine = "";

while ((nextLine = reader.readLine()) != null) { sb.append(nextLine); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } @Override

protected void onPostExecute(String result) { //Log.e("result setup",result);

ld.dismiss();

System.out.println("hasil : "+result); try

{

JSONObject jo=new JSONObject(result); if (jo.getString("user_job").equals("1")) {

skill1="DEF Up"; skill2="EVA Up"; skill3="HP Up"; skill4="Quick Shot"; InputStream ims = getAssets().open("chars_1.jpg"); Drawable d = Drawable.createFromStream(ims, null); im1.setImageDrawable(d); }

if (jo.getString("user_job").equals("2")) {

skill1="ATK Up"; skill2="INIT Up"; skill3="HP Up";

skill4="Suppress Shot"; InputStream ims = getAssets().open("chars_2.jpg"); Drawable d = Drawable.createFromStream(ims, null); im1.setImageDrawable(d); }

(25)

Universitas Kristen Petra

68

Segmen 4.36. Function CharacterTask (lanjutan 2)

if (jo.getString("user_job").equals("3")) {

skill1="HIT Up"; skill2="ATK Up"; skill3="EVA Up"; skill4="Snipe Shot"; InputStream ims = getAssets().open("chars_3.jpg"); Drawable d = Drawable.createFromStream(ims, null); im1.setImageDrawable(d); }

lvlSkill1=jo.getInt("skill_1"); lvlSkill2=jo.getInt("skill_2"); lvlSkill3=jo.getInt("skill_3"); lvlSkill4=jo.getInt("skill_4");

lvlSkillAsli1=lvlSkill1;

lvlSkillAsli2=lvlSkill2; lvlSkillAsli3=lvlSkill3; lvlSkillAsli4=lvlSkill4;

skillPoint=jo.getInt("user_skill_point");

btnArmor.setText(jo.getString("armor")); btnWeapon.setText(jo.getString("weapon")); btnAcc.setText(jo.getString("acc"));

setSkillText(); }

catch (Exception ex) {

ex.printStackTrace();

// Toast.makeText(MainActivity.this, "Gagal menemukan server", Toast.LENGTH_LONG).show();

}

} }

(26)

Universitas Kristen Petra

69

4.5.6

Implementasi Turnamen

Menu turnamen berfungsi untuk user memilih lawan dalam turnamen

untuk meningkatkan rating user.

Function Turnamen

Tabel 4.7.

No. Function

Keterangan

Segmen

1.

loadData

Mengambil data pemain lain untuk

ditantang di turnamen

4.37

2.

LoadTask

Menampilkan pemain yang dapat

ditantang.

Segmen 4.37 adalah function untuk mengambil data pemain lain dari

database dengan menggunakan service turnamen.php.

Segmen 4.37. Function loadData

public void loadData() {

try {

LoadTask lg = new LoadTask(); String url =

IP.server+"/turnamen.php?id="+IP.userID; System.out.println(url);

lg.execute(url); } catch (Exception e) { e.printStackTrace(); }

(27)

Universitas Kristen Petra

70

Segmen 4.38. Service turnamen.php

<?php

include "connect.php"; $dataUser=array();

$q="SELECT * FROM user WHERE id_user='". $_GET["id"] ."'";

$res=mysqli_query($conn,$q);

$dataUser=mysqli_fetch_assoc($res);

$q="SELECT * FROM user WHERE id_user<>'". $_GET["id"] ."'"; $res=mysqli_query($conn,$q); $daftarEnemy=array(); while ($row=mysqli_fetch_assoc($res)) { $diff=abs($dataUser["user_pr"]-$row["user_pr"]); if ($diff<=20) { $q="SELECT u.*,COALESCE(a.equip_name,'Nothing') as armor,COALESCE(w.equip_name,'Nothing') as weapon,COALESCE(ac.equip_name,'Nothing') as acc ". "FROM user u ".

"LEFT JOIN equip w ON (w.id_equip=u.weapon_id) ".

"LEFT JOIN equip a ON (a.id_equip=u.armor_id) ".

"LEFT JOIN equip ac ON (ac.id_equip=u.acc_id) ".

"WHERE id_user='". $row["id_user"] ."' ". "LIMIT 1"; $res2=mysqli_query($conn,$q); $dataUser=mysqli_fetch_assoc($res2); $dataUser["ATK"]=0; $dataUser["HP"]=0; $dataUser["DEF"]=0; $dataUser["EVA"]=0; $dataUser["HIT"]=0; $dataUser["INIT"]=0; if ($dataUser["user_job"]=="1") { $dataUser["HP"]=200; $dataUser["ATK"]=7; $dataUser["DEF"]=10; $dataUser["EVA"]=10; $dataUser["HIT"]=75; $dataUser["INIT"]=2; } if ($dataUser["user_job"]=="2") { $dataUser["HP"]=150; $dataUser["ATK"]=10; $dataUser["DEF"]=5;

(28)

Universitas Kristen Petra

71

Segmen 4.39. Service turnamen.php (lanjutan)

Segmen 4.40 berisi function LoadTask yang berfungsi untuk menampilkan

pemain yang dapat ditantang di turnamen.

Segmen 4.40. Function LoadTask

$dataUser["DEF"]=5; $dataUser["EVA"]=5; $dataUser["HIT"]=60; $dataUser["INIT"]=3; } if ($dataUser["user_job"]=="3") { $dataUser["HP"]=100; $dataUser["ATK"]=20; $dataUser["DEF"]=5; $dataUser["EVA"]=5; $dataUser["HIT"]=90; $dataUser["INIT"]=1; } array_push($daftarEnemy,$dataUser); } } // echo count($daftarEnemy); //print_r($daftarEnemy); echo json_encode($daftarEnemy); ?>

public class LoadTask extends AsyncTask<String, Void, String> {

ProgressDialog ld; @Override

protected void onPreExecute() {

ld = new ProgressDialog(TurnamentActivity.this); ld.setTitle("Loading");

ld.setMessage("Pengambilan daftar musuh"); ld.setCancelable(true);

ld.show(); }

@Override

protected String doInBackground(String... url) { // TODO Auto-generated method stub

//StringBuilder builder = new StringBuilder(); //DefaultHttpClient client = new

DefaultHttpClient();

//HttpGet httpGet = new HttpGet(url[0]);

String readStream="";

try {

URL urlx = new URL(url[0]);

HttpURLConnection con = (HttpURLConnection) urlx.openConnection();

(29)

Universitas Kristen Petra

72

Segmen 4.41. Function LoadTask (lanjutan)

readStream = readStream(con.getInputStream()); }

catch (Exception ex) {

ex.printStackTrace(); }

return readStream; }

private String readStream(InputStream in) { StringBuilder sb = new StringBuilder(); try {

BufferedReader reader = new BufferedReader(new

InputStreamReader(in));

String nextLine = "";

while ((nextLine = reader.readLine()) != null) { sb.append(nextLine); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } @Override

protected void onPostExecute(String result) { //Log.e("result setup",result);

ld.dismiss();

System.out.println("hasil : "+result); try

{

JSONArray jb=new JSONArray(result); dataPlayer.clear();

ljo=new ArrayList<JSONObject>(); for (int i=0;i<jb.length();i++) {

JSONObject jo=jb.getJSONObject(i); ljo.add(jo);

Player p=new Player();

p.playerNane=jo.getString("username"); p.playerLevel=jo.getString("user_level"); p.playerJob=jo.getString("user_job"); dataPlayer.add(p);

}

adapter.notifyDataSetChanged(); }

catch (Exception ex) {

ex.printStackTrace();

}

} }

Gambar

Gambar 4.2.  Pembuatan database MySQL
Gambar 4.4.  Pengaturan field tabel

Referensi

Dokumen terkait

Aplikasi perancangan dan pembuatan Sistem Manajemen Notulen berbasis web Fakultas Teknologi Industri (FTI) Universitas Kristen Petra (UKP) telah dibuat, namun

Panduan Membuat Aplikasi Database dengan PHP 5.. Universitas

Pengaruh komunikasi yang baik antara mahasiswa dan dosen sebagai variabel service quality terhadap perceived value Program Manajemen Pemasaran Universitas Kristen Petra.. Pengaruh

Berdasarkan Gambar 4.13 dapat diketahui bahwa kebiasaan yang mempengaruhi kondisi keuangan mahasiswa aktif S1 Universitas Kristen Petra sebanyak 86 responden

Jika pada kartu yang dibuang tidak di pong oleh pemain lain, maka akan dicek jalan yang bisa dilakukan oleh pemain selanjutnya.. Pemain dapat memilih perintah-perintah untuk

37 Universitas Kristen Petra Pada bangunan penunjang, bangunan dibuat terbuka, dengan dinding yang rendah pada keempat sisinya serta minim sekat dalam bangunan, sehingga

Demi pengembangan ilmu pengetahuan, menyetujui untuk memberikan kepada Universitas Kristen Petra Hak Bebas Royalti Non-Ekslusif (Non-Exclusive Royalty-Free Right)

Source code dari proses excecute terdapat dalam segmen program 4.7, dalam segmen program 4.8 juga akan dijelaskan semua fungsi yang mendukung untuk evolusi kurva, seperti