SELAMAT DATANG DI BLOGGER FITRI FITRIANI, BLOG INI HANYA UNTUK SHAREING PENGETAHUAN DAN PENGALAMAN.. !!! TRIMAKASIH SUDAH BERKUNJUNG DI BLOG FITRI FITRIANI...:)

Minggu, 10 Maret 2013

“Membuat Game Tetris Sederhana dengan menggunakan Macromedia Flash”



MULTIMEDIA
Study Kasus
“Pembuatan Game Tetris Sederhana dengan menggunakan
Macromedia Flash”

Laporan ini disusun untuk memenuhi salah satu tugas mata kuliah
Multimedia


Disusun Oleh :
PIPIT FITRIANI
NPM 1000012










JURUSAN TEKNIK KOMPUTER D3
SEKOLAH TINGGI TEKNOLOGI GARUT
2013
 
BAB I
PENDAHULUAN

1.1              Latar Belakang
Lahirnya teknologi multimedia adalah hasil dari perpaduan kemajuan teknologi elektronik, teknik komputer dan perangkat lunak. Kemampuan penyimpanan dan pengolahan gambar digital dalam belasan juta warna dengan resolusi tinggi serta reproduksi suara maupun video dalam bentuk digital. Multimedia merupakan konsep dan teknologi dari unsur - unsur gambar, suara, animasi serta video disatukan didalam komputer untuk disimpan, diproses dan disajikan guna membentuk interaktif yang sangat inovatif antara komputer dengan user. Teknologi Multimedia merupakan perpaduan dari teknologi komputer baik perangkat keras maupun perangkat lunak dengan teknologi elektronik, perkembangan serta pemanfaatan teknologi multimedia banyak digunakan hampir diseluruh aspek kegiatan.
Multimedia adalah suatu sarana (media) yang didalamnya terdapat perpaduan (kombinasi) berbagai bentuk elemen informasi, seperti teks, graphics, animasi, video, interaktif maupun suara sebagai pendukung untuk mencapai tujuannya yaitu menyampaikan informasi atau sekedar memberikan hiburan bagi target audiens-nya. Multimedia sering digunakan dalam dunia hiburan seperti game. Kata multimedia itu sendiri berasal dari kata multi (Bahasa Latin) yang berarti banyak dan katamedia (Bahasa Latin) yang berarti sesuatu yang dipakai untuk menyampaikan sesuatu

1.2              Tujuan
Adapun tujuan dari laporan pembuatan game tetris ini adalah untuk memperkenalkan bagaimana Cara permainan game Tetris ini, sehinga mempermudah user dalam penggunaannya.




BAB II
PEMBAHASAN

2.1               Concept
Game tetris ini bukanlah game yang baru di temukan oleh pembuat, namun saya mencoba membuat game ini karena pada awalnya game tetris ini sering kita jumpai / temukan dalam handephone atau sejenis geme yang sering digunakan anak – anak pada umumnya. Game tetris ini sangat mudah untuk dimaninkan karena tak juah beda pada game tetris yang ada di handphone. Yang membedakan mungkin hanya tampilannya saja.

Tabel 1.1 Deskripsi Konsep

Judul        :  Pembuatan Game Tetris Sederhana dengan menggunakan
Macromedia Flash”
Audiens         :  Anak-anak dan Umum
Durasi           :  Tidak Terbatas
Image            :  Gambar di gunakan dengan format Gif
Interaktivitas : Start, Pause dan Exit

2.2              Design/Perancangan
Untuk menggambarkan perancangan dari tiap-tiap page, perancangan storyboard untuk tahap ini harus di buat, penentuan tautan dari page satu ke page lain akan menggunakan struktur flowchart.

2.3              Storyboard
Hasil dari perancangan storyboard akan menjadi acuan dalam pembuatan tampilan pada tahap implementasi.



Tabel 1.2  Storyboard secara ringkas

Scene1    : Sebagai scene pembuka
Scene2    : Sebagai tampilan dari game
Scene2    :  Sebagai  tampilan pada saat  game over

Tabel 1.3  Storyboard Secara Lengkap

Judul Program
Tetris Game
Jenis Program
portable
Sistem Kendali
Keyboard, moseped Mouse
Background Setting
Multimedia
Sistem Aplikasi
Pada Tetris Game ini menggunakan Keyboard dengan arah pointer tanda panah ke atas, bawah, kiri, kanan. Dan dengan menggunakan mouse.
Jumlah halaman
Terdiri dari 2 halaman, Scene1 untuk tampilan awal game, Scene2 tampilan pada saat  game over










2.4  Struktur Navigasi / Flowchart

Gambar 2.1 Struktur Game Tetris

Ketika kita mulai menggunakan game Tetris ini kita masuk ke interface game tetris dan menggunakannya sesuai dengan keinginan kita karena durasinya tidak terbatas, ketika kita sedang menggunakan game tetris ini dan game over kita bisa mengakhiri permainan ini atau kita ulang kembali ke permainan awal.

2.5              Perangkat yang di gunakan
            Pada pembuatan game ini, perangkat yang digunakan untuk adalah perangkat keras dan perangkat lunak. Perangkat keras yang di gunakan mempunyai spesifikasi sebagai berikut :
1.      Processor               : Intel Pentium (2.00GHz)
2.      RAM                     : 1 GHz
3.      Vga 250 MB
4.      Mouse
5.      Keyboard
6.      Hardisk 250 GB

Pada perangkat lunak ini menggunakan :
1.      Windows 7 Ultimate
2.      Macromedia Flash 8

2.6              Interface
2.6.1        Proses Pembuatan Game Tetris


Gambar 2.2 Proses Pembuatan  Tahap 1


Gambar 2.3 Proses Pembuatan  Tahap 2

Pada proses pembuatan Game tahap 3 ini hampir sama dengan tahap 2 tetapi yang membadakannya pada tahap 3 ini yang di aktifkan yang “Action Mask”

Gambar 2.4 Proses Pembuatan  Tahap 3

Pada proses pembuatan Game tahap 4 ini hampir sama dengan tahap 3 tetapi yang membadakannya pada tahap 4  ini yang di aktifkan hanya “Action” saja



 

Gambar 2.5  Proses Pembuatan  Tahap 4

Pada proses pembuatan Game tahap 5 ini menambahkan layar baru untuk menambahkan icon-icon yang ada di dalam tetris. Dan di simpan di bawah “Action”, maka akan muncul icon pada layar seperti di dibawah ini

Gambar 2.6  Proses Pembuatan  Tahap 5

Pada proses pembuatan Game tahap 6 ini yang di aktifkan layar Background, untuk menambhkan icon – icon dan nilai score, maka akan muncul icon pada layar seperti di dibawah ini


Gambar 2.7  Proses Pembuatan  Tahap 6

Pada proses pembuatan Game tahap 7 ini yang di aktifkan layar Action dan Background untuk memberikan nama “Click Strart” dan menambahkahn lsiting program.


Gambar 2.8  Proses Pembuatan  Tahap 7

Pada proses ini adalah proses trakhir sebelum di isi listing program


Gambar 2.9  Proses Pembuatan  Tahap 8






Ø    Listing Progam Game Tetris

for (i=0; i<7; i++) {
       _root["Tet"+i]._visible = false;
       _root["Tmp"+i]._visible = false;
       _root["Prev"+i]._visible = false;
}
dep = Brick_0_0.getDepth();
duplicateMovieClip("GameOver", "GameOver", dep+300);
this.createEmptyMovieClip("Grid", dep+210);
Grid.lineStyle(0, 0x808080);
for (i=80; i<=180; i += 10) {
       Grid.moveTo(i, 20);
       Grid.lineTo(i, 220);
}
for (i=20; i<=220; i += 10) {
       Grid.moveTo(80, i);
       Grid.lineTo(180, i);
}
for (i=0; i<10; i++) {
       for (j=0; j<20; j++) {
              duplicateMovieClip("Brick_0_0", "Brick_"+i+"_"+j, dep++);
              _root["Brick_"+i+"_"+j]._visible = false;
              _root["Brick_"+i+"_"+j]._x = 80+i*10;
              _root["Brick_"+i+"_"+j]._y = 20+j*10;
       }
}
delete dep;
function makeObject() {
       activeObject._visible = false;
       activeObject = _root["Tet"+previewObject];
       tempObject = _root["Tmp"+previewObject];
       activeObject._x = 130;
       activeObject._y = 10;
       activeObject._visible = true;
       _root["Prev"+previewObject]._visible = false;
       previewObject = random(7);
       _root["Prev"+previewObject]._visible = true;
}
previewObject = random(7);
makeObject();
function gameRun() {
       if (Key.isDown(Key.LEFT) && !move) {
              if (canLeft()) {
                     goal = activeObject._x-10;
                     move = 1;
              }
       }
       if (Key.isDown(Key.RIGHT) && !move) {
              if (canRight()) {
                     goal = activeObject._x+10;
                     move = 2;
              }
       }
       if (Key.isDown(Key.UP) && !move) {
              if (canRotate()) {
                     goal = activeObject._currentframe+4;
                     if (goal>13) {
                           goal = 1;
                     }
                     move = 3;
                     activeObject.play();
              }
       }
       if (Key.isDown(Key.DOWN) && !move) {
              while (canDown(10)) {
                     activeObject._y += 10;
              }
              while (canDown(1)) {
                     activeObject._y += 1;
              }
              move = 7;
       }
       switch (move) {
       case 1 :
              if (activeObject._x == goal) {
                     move = 4;
              } else {
                     activeObject._x -= 2;
              }
              break;
       case 2 :
              if (activeObject._x == goal) {
                     move = 4;
              } else {
                     activeObject._x += 2;
              }
              break;
       case 3 :
              if (activeObject._currentframe == goal) {
                     move = 4;
              }
              break;
       case 7 :
              if (!Key.isDown(Key.DOWN)) {
                     move = 0;
              }
              break;
       default :
              if (move) {
                     move++;
              }
              if (move>5) {
                     move = 0;
              }
              if (!(wait--)) {
                     wait = 2;
                     if (canDown(1)) {
                            activeObject._y += 1;
                     } else {
                           makeItDie();
                           makeObject();
                           getLineFull();
                           addLine(numLine);
                           clearInterval(runID);
                           if (!numLine) {
                                  animCount = 0;
                           } else {
                                  animCount = 10;
                           }
                           animID = setInterval(animateRemoval, 75);
                     }
              }
       }
}
//setInterval(gameRun, 20);
function validPos(obj) {
       var pnt = obj.getBounds(_root);
       var OK = (pnt.xMin>79 && pnt.xMax<181 && pnt.yMax<221);
       if (OK) {
              var x0 = (pnt.xMin-80)/10;
              var y0 = Math.ceil((pnt.yMin-20)/10);
              var y00 = Math.floor((pnt.yMin-20)/10);
              var bp = new Array();
              bp = obj.getBrickPos();
              for (j=0; j<bp.length; j++) {
                     var bpx = new array();
                     bpx = bp[j];
                     for (i=0; i<bpx.length; i++) {
                           if (bpx[i]) {
                                  OK &= !_root["Brick_"+(x0+i)+"_"+(y0+j)]._visible;
                                  OK &= !_root["Brick_"+(x0+i)+"_"+(y00+j)]._visible;
                           }
                     }
              }
       }
       return (OK);
}
function canDown(down) {
       tempObject.gotoAndStop(activeObject._currentframe);
       tempObject._x = activeObject._x;
       tempObject._y = activeObject._y+down;
       return (validPos(tempObject));
}
function canLeft() {
       tempObject.gotoAndStop(activeObject._currentframe);
       tempObject._x = activeObject._x-10;
       tempObject._y = activeObject._y;
       return (validPos(tempObject));
}
function canRight() {
       tempObject.gotoAndStop(activeObject._currentframe);
       tempObject._x = activeObject._x+10;
       tempObject._y = activeObject._y;
       return (validPos(tempObject));
}
function canRotate() {
       var frm = activeObject._currentframe;
       if (frm<13) {
              tempObject.gotoAndStop(frm+4);
       } else {
              tempObject.gotoAndStop(1);
       }
       tempObject._x = activeObject._x;
       tempObject._y = activeObject._y;
       return (validPos(tempObject));
}
function makeItDie() {
       var pnt = activeObject.getBounds(_root);
       var x0 = (pnt.xMin-80)/10;
       var y0 = Math.ceil((pnt.yMin-20)/10);
       var bp = new Array();
       bp = activeObject.getBrickPos();
       for (j=0; j<bp.length; j++) {
              var bpx = new array();
              bpx = bp[j];
              for (i=0; i<bpx.length; i++) {
                     if (bpx[i]) {
                           _root["Brick_"+(x0+i)+"_"+(y0+j)]._visible = true;
                     }
              }
       }
}
function isLineFull(j) {
       var r = 0;
       for (i=0; (i<10) && (r == 0); i++) {
              if (!_root["Brick_"+i+"_"+j]._visible) {
                     r++;
              }
       }
       return (r);
}
function getLineFull() {
       lineFull = new Array(-1, -1, -1, -1);
       numLine = 0;
       for (j=19; (j>=0) && (numLine<=4); j--) {
              if (isLineFull(j) == 0) {
                     lineFull[numLine++] = j;
              }
       }
}
function copyLine(dest, source) {
       if (dest == source) {
              return;
       }
       if (source>=0) {
              for (i=0; i<10; i++) {
                     _root["Brick_"+i+"_"+dest]._visible = _root["Brick_"+i+"_"+source]._visible;
              }
       } else {
              for (i=0; i<10; i++) {
                     _root["Brick_"+i+"_"+dest]._visible = false;
              }
       }
}
function removeFullLine() {
       if (numLine == 0) {
              return;
       }
       var delta = 1;
       var dest = lineFull[0];
       numLine--;
       while (dest>=0 && numLine>0) {
              if (delta<4) {
                     while (dest-delta == lineFull[delta]) {
                           delta++;
                           numLine--;
                     }
              }
              copyLine(dest, dest-delta);
              dest--;
       }
       while (dest>=0) {
              copyLine(dest, dest-delta);
              dest--;
       }
}
score = 0;
line = 0;
scoreTable = [1, 3, 6, 10];
function addLine(ln) {
       line += ln;
       score += scoreTable[ln-1];
}
function gameOverTest() {
       if (!canDown(5)) {
              clearInterval(runID);
              GameOver.text = "Game Over";
              GameOver._visible = true;
              btStart._visible = true;
              messageID = setInterval(flashMessage, 350);
       }
}
function flashMessage() {
       GameOver._visible = !GameOver._visible;
}
messageID = setInterval(flashMessage, 350);
function animateRemoval() {
       if (animCount--) {
              for (j=0; j<numLine; j++) {
                     for (i=0; i<15; i++) {
                           _root["Brick_"+i+"_"+lineFull[j]]._alpha -= 10;
                     }
              }
       } else {
              for (j=0; j<numLine; j++) {
                     for (i=0; i<15; i++) {
                           _root["Brick_"+i+"_"+lineFull[j]]._alpha = 100;
                     }
              }
              clearInterval(animID);
              runID = setInterval(gameRun, 20);
              removeFullLine();
              gameOverTest();
       }
}

   
BAB III
KESIMPULAN DAN SARAN

3.1                          Kesimpulan
Pada dasarnya multimedia adalah suatu sarana (media) yang didalamnya terdapat perpaduan / kombinasi berbagai bentuk elemen informasi. Dan kebanyakan dari multimedia ini digunakan untuk memediai sarana yang menunjang hiburan orang dewasa pada umumnya. serta untuk menunjang hiburan dan edukasi anak – anak.

3.2                          Saran
Diharapkan media dan progmraming game lebih memperhatikan edukasi kalangan anak – anak yang sedang berkembang dalam pengetahuannya. Karena game itu tidak memberikan dampak negative saja tetapi dampak postif . agar otak anak – anak lebih berfikir dalam  memecahkan suatu masalah,




23 komentar:

  1. wahhh keren juga tuchhh

    thank;s dachh

    BalasHapus
  2. wahhh bolehhh juga nichhh
    sukses ajh dach

    BalasHapus
  3. minta detail langkah2nya dong

    BalasHapus
  4. wis mantep nih, share yang laen juga dong.
    sebelumnya makasih..

    BalasHapus
  5. Praktek dulu gan !!! kalau berminat saya tunggu kunbalnya ya!!!

    BalasHapus
  6. minta source code fla nya dong... hihihhi
    newbie ni

    BalasHapus
    Balasan
    1. itu ada mas...:)..Via Email sja mas...

      Hapus
    2. ka, minta dong file nya. kalau boleh kirim ke egydzulfahmi@gmail.com yah :D terimakasih.

      Hapus
  7. ka kirem dong projek nya , ane mau belajar ni

    muhammad.zubirr@gmail.com

    BalasHapus
  8. ka bisa jelasin script programnya gak?

    BalasHapus
  9. trimakasih artikelnya membantu,tp ada program yg eror mohon bantuanya trimakasih untuk hari ini

    BalasHapus
  10. thanks, infonya sangat membantu

    BalasHapus
  11. gan ane minta source code nya dong, ini email ane grandturangan@gmail.com

    BalasHapus
  12. Terimakasih tutorialnya bermanfaat banget,

    Ingin bisa desain grafis? Tapi bingung minta bantuan siapa? Belajar sendiri aja yuk.. kita lihat tutorialnya di
    tutorial-tutorial gratis

    BalasHapus
  13. ada software requirement spesification nya gk?

    BalasHapus
  14. Langkah" proses tahapan pembuatan dan penggunaan tool" nya mana kak ? kirim lah

    BalasHapus
  15. aku mau dong ..aku minta kode dan contoh proposalnya ya..aku buat TA kirimin ke email aku sadinsani1@gmail.com
    makasih

    BalasHapus