Anda di halaman 1dari 6

Membuat Matching Game

Buatlah sebuah symbol movie clip, yang berisi 9 keyframe, setiap frame berisi gambar yang berbeda-
beda dengan ukuran dan posisi yang sama, pada frame terakhir yaitu frame 9 isi dengan gambar
kotak.

Buka panel action kemudian buat perintah seperti ini:

import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;

var first_tile:emo;
var second_tile:emo;
var pause_timer:Timer;
var game_timer:Timer;
var maxTime:int = 30;
var deck:Array = new Array(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8);
var skor:int = 0;
var jumKotak:int = 16;
var gameOver:gameover = new gameover();
var gameComplete:gamecomplete = new gamecomplete();

maksud perintah diatas adalah untuk mengimport class reference yang akan digunakan, dan
mendeklarasikan variabel yang akan digunakan pada pembuatan game.

Selanjutnya tambahkan perintah dibawah ini:

game_timer = new Timer(1000,maxTime);
game_timer.start();
tampilkan_emo();
function tampilkan_emo() {
for (var posX:int = 1; posX<=4; posX++) {
for (var posY:int = 1; posY<=4; posY++) {
//Menampilkan object secara random
var random_emo = Math.floor(Math.random()*deck.length);

var tile:emo = new emo();
tile.col = deck[random_emo];
deck.splice(random_emo,1);
tile.gotoAndStop(9);
tile.x = ((posX-1)*66) + 130;
tile.y = ((posY-1)*66) + 50;
addChild(tile);
}
}
}

Perintah diatas berfungsi untuk menampilkan movie clip ke dalam stage secara berulang, jika
perintahnya benar pada stage akan tampil seperti gambar di bawah ini:


Kemudian tambahkan event pada obj. tile yang dibuat dengan script diatas, berikut perintahnya:

tile.addEventListener(MouseEvent.CLICK, klik_tile);

Perintah diatas disimpan pada fungsi tampilkan_emo.

Selanjutnya buat fungsi klik_tile berikut perintahnya:
function klik_tile(e:MouseEvent):void{
var clicked:emo = (e.currentTarget as emo);
if(first_tile == null){
first_tile = clicked;
first_tile.gotoAndStop(clicked.col);
}
else if(second_tile == null && first_tile != clicked){
second_tile = clicked;
second_tile.gotoAndStop(clicked.col);
if(first_tile.col == second_tile.col){
pause_timer = new Timer(1000,1);
//trace('Cocok');
pause_timer.addEventListener(TimerEvent.TIMER,remove_tile);
pause_timer.start();
}
else{
pause_timer = new Timer(1000,1);
pause_timer.addEventListener(TimerEvent.TIMER,reset_tile);
pause_timer.start();
}
}
}

Pada perintah diatas terdapat 2 fungsi baru(yg ditandai dgn blok warna kuning yaitu fungsi
remove_tile dan reset_tile) yang dimasukan pada obj. pause_timer.

Selanjutnya buat 2 fungsi tsb. Berikut adalah perintahnya:
function reset_tile(e:TimerEvent):void{
first_tile.gotoAndStop(9);
second_tile.gotoAndStop(9);
first_tile = null;
second_tile = null;
pause_timer.removeEventListener(TimerEvent.TIMER_COMPLETE, reset_tile);
}

function remove_tile(e:TimerEvent):void{
removeChild(first_tile);
removeChild(second_tile);
first_tile = null;
second_tile = null;
pause_timer.removeEventListener(TimerEvent.TIMER_COMPLETE, remove_tile);
score += 10;
score_txt.text = "Score : " + score;
jumKotak -= 2;
if(jumKotak == 0){
addChild(gameComplete);
game_timer.stop();
}
}


Selanjutnya pengaturan waktu game. Berikut adalah perintah untuk pengaturan waktu:
game_timer.addEventListener(TimerEvent.TIMER, timedelay);
game_timer.addEventListener(TimerEvent.TIMER_COMPLETE, _gameover);
function timedelay(e:TimerEvent):void{
time_txt.text = "Time : " + String(maxTime - game_timer.currentCount);
}
function _gameover(e:TimerEvent):void{
addChild(gameOver);
}


Berikut adalah kode lengkapnya:
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;

var first_tile:emo;
var second_tile:emo;
var pause_timer:Timer;
var game_timer:Timer;
var maxTime:int = 30;
var deck:Array = new Array(1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8);
var skor:int = 0;
var jumKotak:int = 16;
var gameOver:gameover = new gameover();
var gameComplete:gamecomplete;

game_timer = new Timer(1000,maxTime);
game_timer.start();
tampilkan_emo();
game_timer.addEventListener(TimerEvent.TIMER, timedelay);
game_timer.addEventListener(TimerEvent.TIMER_COMPLETE, _gameover);
function timedelay(e:TimerEvent):void{
time_txt.text = "Time : " + String(maxTime - game_timer.currentCount);
}
function _gameover(e:TimerEvent):void{
addChild(gameOver);
}

function tampilkan_emo() {
for (var posX:int = 1; posX<=4; posX++) {
for (var posY:int = 1; posY<=4; posY++) {
//Menampilkan object secara random
var random_emo = Math.floor(Math.random()*deck.length);

var tile:emo = new emo();
tile.col = deck[random_emo];
deck.splice(random_emo,1);
tile.gotoAndStop(9);
tile.x = ((posX-1)*66) + 130;
tile.y = ((posY-1)*66) + 50;
addChild(tile);
tile.addEventListener(MouseEvent.CLICK, klik_tile);
}
}
}

function klik_tile(e:MouseEvent):void{
var clicked:emo = (e.currentTarget as emo);
if(first_tile == null){
first_tile = clicked;
first_tile.gotoAndStop(clicked.col);
}
else if(second_tile == null && first_tile != clicked){
second_tile = clicked;
second_tile.gotoAndStop(clicked.col);
if(first_tile.col == second_tile.col){
pause_timer = new Timer(1000,1);
//trace('Cocok');
pause_timer.addEventListener(TimerEvent.TIMER,remove_tile);
pause_timer.start();
}
else{
pause_timer = new Timer(1000,1);
pause_timer.addEventListener(TimerEvent.TIMER,reset_tile);
pause_timer.start();
}
}
}

function reset_tile(e:TimerEvent):void{
first_tile.gotoAndStop(9);
second_tile.gotoAndStop(9);
first_tile = null;
second_tile = null;
pause_timer.removeEventListener(TimerEvent.TIMER_COMPLETE, reset_tile);
}

function remove_tile(e:TimerEvent):void{
removeChild(first_tile);
removeChild(second_tile);
first_tile = null;
second_tile = null;
pause_timer.removeEventListener(TimerEvent.TIMER_COMPLETE, remove_tile);
skor += 10;
skor_txt.text = "Skor : " + skor;
jumKotak -= 2;
if(jumKotak == 0){
gameComplete = new gamecomplete()
addChild(gameComplete);
game_timer.stop();
}
}

Anda mungkin juga menyukai