Halaman

Mencari FPB dari 2 buah bilangan

Kalau ini adalah mencari Faktor Persekutuan Terbesar atau biasa disebut FPB.


Begini algoritmanya dgn actionscript 2.0 :

function CariFPB(a, b) {
var no = 0;
var FPB = 1;
var a1, b1;
var a2, b2;
var temp = 0;

a1 = a;
b1 = b;
do {
a2 = Math.max(a1, b1)-Math.min(a1, b1);
b2 = Math.min(a1, b1);
a1 = a2;
b1 = b2;
var f = a2 == b2;
if (f) {
FPB = a1;
}
} while (!f);
//trace("FPB: "+FPB)
return FPB;
}

Misal mencari FPB dari bilangan 4 dan 6.
maka:
var hasil = CariFPB(4, 6);
trace(hasil)

--> 2


Algoritma Kelipatan dari 2 buah bilangan

Ketemu tugas kantor yang berhubungan dengan mencari Kelipatan dari 2 bilangan.
Dengan ketentuan, Kelipatannya harus kurang dari 30.

Ini dia algoritmanya dengan actionscript 2.0

function CariKelipatan(a, b) {
var no = 0;
var ArrKelipatan = new Array();
var temp = 0;
var batas = 30;
do {
no++;
temp = no*a*b;
f = temp>batas;
if (!f) {
ArrKelipatan[no-1] = temp;
}
} while (!f);
return (ArrKelipatan);
}

Misalkan 2 buah bilangan yang di cari kelipatannya adalah: 2 dan 3
maka:
var hasil = CariKelipatan(2, 3)
trace (hasil)

--> 6,12,18,24



Gerak Pertikel Bertabrakan - sumbu x - ActionScript 2.0 Flash

Saya ingin mencoba membuat program partikel bertabrakan
kira-kira seperti ini:
Huruf-huruf dianggap objek (movieclip)



Seperti ini programnya:

// fungsi gerak partikel
function gerak() {
this._x += this.dx;
this.xA = this._x-this.arah*this._width/2;
this.xB = this._x+this.arah*this._width/2;
}

// definisi awal dan mencari banyaknya partikel yang ada di layar (banyaknya movieclip "par")
nmax = 0;
do {
nmax++;
mc = this["par"+nmax];
} while (mc<>undefined);


// besar perpindahan dan menentukan arah

for (var i = 1; i<=nmax; i++) {
this["par"+i].besardx = Math.ceil(Math.random()*3)
this["par"+i].arah = -1+2*Math.floor(Math.random()*2)
}


// mengaktifkan gerak tiap partikel
for (var i = 1; i<=nmax; i++) {
this["par"+i].dx = this["par"+i].arah*this["par"+i].besardx;
this["par"+i].onEnterFrame = gerak;
}

// gerakan tiap partikel diaktifkan dengan onEnterFrame
this.onEnterFrame = function() {

for (var i = 1; i<=nmax; i++) {
for (var j = 1; j<=nmax; j++) {
mmc1 = this["par"+i];
mmc2 = this["par"+j];
if (i<>j) {
if (mmc1.xB>mmc2.xB && mmc1.xA<mmc2.xA && mmc1.arah<>mmc2.arah) {
SwapPropertiesA(mmc1,mmc2);
}

if (mmc1.xB>mmc2.xA && mmc1.xA<mmc2.xA && mmc1.arah == mmc2.arah && mmc1.besardx>mmc2.besardx) {
SwapPropertiesB(mmc1,mmc2);
}

if (mmc1.xB<mmc2.xA && mmc1.xA>mmc2.xA && mmc1.arah == mmc2.arah && mmc1.besardx>mmc2.besardx) {
SwapPropertiesB(mmc1,mmc2);
}

}
}
}
CekDinding()

};

function CekDinding() {
for (var i = 1; i<=nmax; i++) {
mcc1 = this["par"+i];
if(mcc1.xB>640){
DindingBx(mcc1)
}else if(mcc1.xB<0){
DindingAx(mcc1)
}
}

}

// dinding kiri
function DindingAx(mc1) {
nx = 0-mc1.xB;
mc1.arah = -mc1.arah;
mc1._x += nx;
mc1.dx = mc1.arah*mc1.besardx;
}

// dinding kanan
function DindingBx(mc1) {
nx = mc1.xB-Stage.width; // 640
mc1.arah = -mc1.arah;
mc1._x -= nx;
mc1.dx = mc1.arah*mc1.besardx;
}


// tumbukan tiap objek tipe 1
function SwapPropertiesA(mc1, mc2) {
// berlawanan arah
nx = mc1.xB-mc2.xB;

swapdx = mc1.besardx;
mc1.besardx = mc2.besardx;
mc2.besardx = swapdx;

swaparah = mc1.arah;
mc1.arah = mc2.arah;
mc2.arah = swaparah;

mc1._x -= nx;
mc2._x += nx;
mc1.dx = mc1.arah*mc1.besardx;
mc2.dx = mc2.arah*mc2.besardx;
}

// tumbukan tiap objek tipe 2
function SwapPropertiesB(mc1, mc2) {
// satu arah yang sama
nx = mc1.xB-mc2.xA;

swapdx = mc1.besardx;
mc1.besardx = mc2.besardx;
mc2.besardx = swapdx;

mc1._x -= nx;
mc2._x += nx;

mc1.dx = mc1.arah*mc1.besardx;
mc2.dx = mc2.arah*mc2.besardx;

}