Membuat Game online 3.0

Agar data bisa disimpan ke dalam database, maka terlebih dahulu kita harus menginstall XAMPP. Untuk download dan instalasi XAMPP dapat dilihat di : http://www.apachefriends.org/en/xampp-windows.html
Oke, saya anggap sudah mendownload dan menginstall software tersebut dan pastikan kita dapat menjalankan PhpMyAdmin pada url (http://localhost/phpmyadmin).
phpmyadmin
phpmyadmin
Jika sudah, sekarang kita membuat databasenya :)

Pembuatan Database

  • Buat sebuah database baru misal dengan nama highscore_flash, kemudian tekan Create.
    Create Database
    Create Database
  • Kemudian tekan tekan tombol dan masukkan script berikut pada textarea yang disediakan.
    1CREATE TABLE `highscore_flash`.`tabel_highscore` (
    2`id` BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    3`date` DATETIME NOT NULL ,
    4`name` VARCHAR( 255 ) NOT NULL ,
    5`score` INT NOT NULL
    6) ENGINE = MYISAM ;
  • Maka akan terbentuk sebuah tabel baru pada database.
    Tabel untuk Highscore
    Tabel untuk Highscore
  • Oke, tahap pembuatan database sudah selesai :)

Pembuatan Script dengan PHP

PHP ini digunakan untuk menyimpan data dan juga dapat menampilkan data berupa xml.
  • Buat sebuah file dengan nama highscore.php, kemudian simpan pada direktori htdocs. Direktori ini dapat ditemukan pada <lokasi xampp>/xampp/htdocs. Karena saya menginstall pada C:, maka direktori di komputer saya adalah C:/xampp/htdocs/. Sehingga path lengkapnya adalah C:/xampp/htdocs/highscore.php
  • Edit file highscore.php tersebut dan isikan dengan script berikut :
    01<?php
    02    $dbHost     = "localhost";
    03    $dbName     = "highscore_flash";
    04    $dbUsername = "root";
    05    $dbPassword = "";
    06 
    07    $name = $_GET['name'];
    08    $score = $_GET['score'];
    09    $command = $_GET['command'];
    10 
    11    //Koneksi ke MySQL
    12    $conn = mysql_connect($dbHost, $dbUsername, $dbPassword);
    13    if (!$conn) {
    14        die('Tidak bisa terkoneksi : ' . mysql_error());
    15    }
    16 
    17    //Pilih database
    18    $dbSelected = mysql_select_db($dbName, $conn);
    19 
    20    if($command=="save"){
    21        if(isset($name)&&isset($score)){
    22            //Mencegah hacker
    23            $md5hash = md5($name."".$score."ubah_kode_rahasia_di_sini");
    24            if($md5hash != $_GET['hash']){
    25                die("Your hash is wrong.");
    26            }
    27        }
    28 
    29        //Melakukan proses penyimpanan
    30        $sql = "insert into tabel_highscore values(NULL, NOW( ), '".$name."', ".$score.")";
    31        $result = mysql_query($sql);
    32        if(mysql_affected_rows()>0){
    33            echo "Berhasil disimpan.";
    34        }
    35    }else if($command=="list"){
    36        //Mendapatkan list dari data
    37        header("Content-type: application/xml");
    38        echo "<datahighscore>\n";
    39        $result = mysql_query("SELECT id, name, max( score ) as score FROM tabel_highscore GROUP BY name ORDER BY max( score ) DESC LIMIT 0 , 10");
    40        //echo "Result : ".$result;
    41        while(($val = mysql_fetch_array($result,MYSQL_BOTH))!=NULL){
    42            $id = $val['id'];
    43            $name = $val['name'];
    44            $score = $val['score'];
    45            echo "  <data id=\"".$id."\" name=\"".$name."\" score=\"".$score."\" />\n";
    46        }
    47        echo "</datahighscore>";
    48    }
    49 
    50    mysql_close($conn);
    51?>
  • Setelah itu simpan file tersebut.

Script pada Flash

Sekarang kita beralih pada aplikasi highscore pada flash, intinya flash ini memanggil php kemudian dengan parameter nama dan score, menjadikannya menjadi kunci untuk php tersebut.
  • Buat sebuah dokumen flash baru, dan tentunya ActionScript 3.0
  • Kemudian buat desain seperti ini dan ketik nama-namanya.
    Tampilan Highscore (klik untuk memperbesar)
    Tampilan Highscore (klik untuk memperbesar)
  • Setelah itu masukkan script berikut pada Layer 1 pada Frame 1.
    01import flash.events.MouseEvent;
    02import flash.events.Event;
    03import hobbelt.ciphers.MD5;
    04 
    05//menambahkan event pada button
    06simpan_btn.addEventListener(MouseEvent.CLICK, onClick);
    07//menjalankan fungsi onClick
    08function onClick(e:MouseEvent){
    09    //deklarasi URLLoader
    10    var loader:URLLoader = new URLLoader();
    11    //memberikan event selesai pada loader
    12    loader.addEventListener(Event.COMPLETE, selesaiSimpan);
    13    //mendapatkan nama
    14    var nama:String = nama_txt.text;
    15    var score:String = score_txt.text;
    16    //mendapatkan hash dari md5
    17    var hash:String = MD5.calcMD5(nama+""+score+"ubah_kode_rahasia_di_sini");
    18    loader.load(new URLRequest("http://localhost/highscore.php?command=save&name="+nama+"&score="+score+"&hash="+hash));
    19}
    20//dijalankan ketika penyimpanan selesai
    21function selesaiSimpan(e:Event){
    22    //deklarasi URLLoader
    23    var loader:URLLoader = new URLLoader();
    24    //memberikan event selesai pada loader
    25    loader.addEventListener(Event.COMPLETE, selesaiDisplay);
    26    //angka random agar tidak tersangkut pada cache browser
    27    var angkaRandom:Number = Math.random()*2000;
    28    loader.load(new URLRequest("http://localhost/highscore.php?command=list&ran="+angkaRandom));
    29}
    30 
    31//dijalankan ketika sudah meload list data
    32function selesaiDisplay(e:Event){
    33    var loader:URLLoader = URLLoader(e.target);
    34    var xml:XMLDocument = new XMLDocument();
    35    //mengabaikan baris putih pada xmla
    36    xml.ignoreWhite = true;
    37    //melakukan parsing ke dalam document xml
    38    xml.parseXML(loader.data); 
    39 
    40    var strNama:String = "=";
    41    var strScore:String = "=";
    42 
    43    //firstchild represents first node, childNodes represent the nodes in the firstChild
    44    for(var i:int = 0; i < xml.firstChild.childNodes.length; i++){
    45        var o:Object = xml.firstChild.childNodes[i].attributes;
    46 
    47        strNama += o.name+"\n";
    48        strScore += o.score+"\n";
    49    }
    50 
    51    namahs_txt.text = strNama;
    52    scorehs_txt.text = strScore;
    53}
  • Di sini kita harus memasukkan import yaitu hobbelt.ciphers.MD5, package untuk mengenkripsi dengan fungsi md5 seperti pada PHP.
  • Sekarang kita test, maka hasilnya adalah seperti berikut :
    hasil
    hasil
Oke, cukup di sini saja tutorial kali ini..