Implementasi Algoritma Djikstra Pada Pak Raden Dan Pak Ogah

A-1

LISTING PROGRAM

1. Cek gerak ke kiri, kanan, bawah, atas
function gerakKiri()
{
var cekx = Math.round(((_root["tokoh"]._x - 15 - 1) - 50) / 30);
var ceky1 = Math.round(((_root["tokoh"]._y - 10) - 50) / 30);
var ceky2 = Math.round(((_root["tokoh"]._y) - 50) / 30);
var ceky3 = Math.round(((_root["tokoh"]._y + 10) - 50) / 30);
if ((_root.map[0][ceky1][cekx] != 1) &&
(_root.map[0][ceky2][cekx] != 1) && (_root.map[0][ceky3][cekx] != 1))
{
_root["tokoh"]._x = _root["tokoh"]._x - 10;
}
}
function gerakKanan()
{
var cekx = Math.round(((_root["tokoh"]._x + 15 + 1) - 50) / 30);
var ceky1 = Math.round(((_root["tokoh"]._y - 10) - 50) / 30);

var ceky2 = Math.round(((_root["tokoh"]._y) - 50) / 30);
var ceky3 = Math.round(((_root["tokoh"]._y + 10) - 50) / 30);
if ((_root.map[0][ceky1][cekx] != 1) &&
(_root.map[0][ceky2][cekx] != 1) && (_root.map[0][ceky3][cekx] != 1))
{
_root["tokoh"]._x = _root["tokoh"]._x + 10;
}
}
function gerakAtas()

Universitas Sumatera Utara

A-2

{
var ceky = Math.round(((_root["tokoh"]._y - 15 - 1) - 50) / 30);
var cekx1 = Math.round(((_root["tokoh"]._x - 10) - 50) / 30);
var cekx2 = Math.round(((_root["tokoh"]._x) - 50) / 30);
var cekx3 = Math.round(((_root["tokoh"]._x + 10) - 50) / 30);
if ((_root.map[0][ceky][cekx1] != 1) &&

(_root.map[0][ceky][cekx2] != 1) &&
(_root.map[0][ceky][cekx3] != 1))
{
_root["tokoh"]._y = _root["tokoh"]._y - 10;
}
}
function gerakBawah()
{
var ceky = Math.round(((_root["tokoh"]._y + 15 + 1) - 50) / 30);
var cekx1 = Math.round(((_root["tokoh"]._x - 10) - 50) / 30);
var cekx2 = Math.round(((_root["tokoh"]._x) - 50) / 30);
var cekx3 = Math.round(((_root["tokoh"]._x + 10) - 50) / 30);
if ((_root.map[0][ceky][cekx1] != 1) &&
(_root.map[0][ceky][cekx2] != 1) && (_root.map[0][ceky][cekx3] != 1))
{
_root["tokoh"]._y = _root["tokoh"]._y + 10;
}
}
2. Hitung jika belok ke kiri, kanan, atas dan bawah. angka perhitungan
berubah jika pemain bergeser

function cekbelok(ex:Number, ye:Number, direk:Number, angkamap:Number) {
var jmlarah = 0;
var atas

= [0,0];

var bawah

= [0,0];

Universitas Sumatera Utara

A-3

var kanan

= [0,0];

var kiri = [0,0];
var arah = [ [0,0,0,0,0], [0,0,0,0,0], [0,0,0,0,0] ];

atas

= [Math.round((ye-50)/30)-1,Math.round((ex-50)/30)];

bawah = [Math.round((ye-50)/30)+1,Math.round((ex-50)/30)];
kanan

= [Math.round((ye-50)/30),Math.round((ex-50)/30)+1];

kiri

= [Math.round((ye-50)/30),Math.round((ex-50)/30)-1];

if (_root.map[angkamap][atas[0]][atas[1]]!=1 && direk!=2){
arah[jmlarah][0] = atas[0];
arah[jmlarah][1] = atas[1];
arah[jmlarah][2] = 3;
jmlarah++;
}
if (_root.map[angkamap][bawah[0]][bawah[1]]!=1 && direk!=3){

arah[jmlarah][0] = bawah[0];
arah[jmlarah][1] = bawah[1];
arah[jmlarah][2] = 2;
jmlarah++;
}
if (_root.map[angkamap][kanan[0]][kanan[1]]!=1 && direk!=1) {
arah[jmlarah][0] = kanan[0];
arah[jmlarah][1] = kanan[1];
arah[jmlarah][2] = 0;
jmlarah++;
}
if (_root.map[angkamap][kiri[0]][kiri[1]]!=1 && direk!=0) {
arah[jmlarah][0] = kiri[0];
arah[jmlarah][1] = kiri[1];
arah[jmlarah][2] = 1;
jmlarah++;
}
if (jmlarah>=2) {
return cektitik(arah, angkamap);


Universitas Sumatera Utara

A-4

} else {
return arah[0][2];
}
}
3. Hitung bawah, kiri, kanan, atas dengan evaluasi djikstra heuristik dengan
titik

pemain.

function cektitik(arah:Array, angkamap:Number) {
var cekjmlarah = 0;
var i=0;
var direk=0;
var coba=1;
var tempdirek;
var tempx = 0;

var tempy = 0;
var tempjarak = 1000;
var tempdir=0;
var cekatas = [0,0];
var cekbawah

= [0,0];

var cekkanan

= [0,0];

var cekkiri = [0,0];
// mencari titik yang mungkin dilalui
while (iarah[i][1])
tempx=Math.round((_root["tokoh"]._x-50)/30)-arah[i][1];else
tempx=arah[i][1]-Math.round((_root["tokoh"]._x-50)/30);
if(Math.round((_root["tokoh"]._y-50)/30)>arah[i][0])
tempy=Math.round((_root["tokoh"]._y-50)/30)-arah[i][0];else
tempy=arah[i][0]-Math.round((_root["tokoh"]._y-50)/30);

arah[i][4] = Math.sqrt(Math.pow(tempx,2)+Math.pow(tempy,2));
i++;
}
Putuskan arah yang diambil oleh musuh
i=0;
tempjarak = 1000;
while (i