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.
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
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.
<?phpsession_start(); $conn=mysqli_connect
("localhost","m26412107","ryanhose","skripsi"); ?>
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.
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);
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(); } } }
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"];
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); ?>
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"; }
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));
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(); }
} }
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);
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) {
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); ?>
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) {
} } }
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); ?>
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(); }
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); }
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) {
} } }
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;
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(); }
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 {
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()); }
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); }
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();
}
} }
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(); }
Universitas Kristen Petra
70
Segmen 4.38. Service turnamen.php
<?phpinclude "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;
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();
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();
}
} }