12-Pas-12-Pas-an

Ngomong-ngomong soal game, kita yang kebanyakan berperan sebagai konsumen ini sekali-sekali mungkin perlu berpikir untuk menjadi produsen. Melihat game saat ini sudah menjadi industri yang cukup menjanjikan dengan potensi milyaran dolar [1]. Tertarik membuat game sendiri? mulai dari yang sederhana dulu, yuk mari.. 8)

Pada kesempatan ini game yang akan dibuat adalah latihan eksekusi penalti dari titik putih atau terkadang diistilahkan tendangan “12 pas” yang juga menjadi judul dari game ini. Sebelumnya unduh terlebih dulu gamenya di http://www.box.net/shared/qqdiij7gn1 untuk mencicipi (cukup 1.4 MB saja). Gamenya cupu abizz memangย  dibandingkan buatannya game developer, tapi untuk mencapai langkah ke-1000 selalu diawali dengan langkah pertama, kan? ๐Ÿ˜‰

Sekarang masuk ke pertanyaan, bagaimana cara membuat permainannya?

Disini saya membuat game menggunakan Flash yang umum digunakan untuk membuat game di web, dengan bahasa pemrograman ActionScript 2.0 yang lebih ramah kepada animator non-programmer yang kebanyakan berangkat dari basic desain (seperti saya ;P), jika sudah memahami dasar-dasarnya mari lanjut saja.

Pada library, sediakan 3 buah movieclip dengan memiliki identifier “kiperID”, “bolaID”, dan “pemainID” yang akan diattach ke tengah stage saat flash movie dijalankan.

Pada stage, siapkan background seperti pada gambar di bawah ini, perhatikan koordinat x dan y harus tepat karena menjadi acuan untuk berjalannya permainan. Siapkan pula movieclip dengan instance name “keterangan”.

Pada frame, sisipkan script berikut ini:

// Eksekusi 12 Pas
// A game by: F4154LMAN

mulai();

function mulai()
{
	var tenaga:Number = new Number();
	var posisiPemain:Number = new Number();
	var PosisiGerakKiper:Number = new Number();
	var PosisiBolaSemula:Number = new Number();
	var listenerKey:Object = new Object();

	attachSetScaleDanXY("kiperID", "kiper", 70, 330, 160, this.getNextHighestDepth());
	attachSetScaleDanXY("bolaID", "bola", 100, 150, 315, this.getNextHighestDepth());
	attachSetScaleDanXY("pemainID", "pemain", 100, 85, 300, this.getNextHighestDepth());

	bola.gotoAndStop("frameBiasa");
	keterangan.gotoAndStop("frameAwal");

	keterangan.onRelease = function()
	{
		removeMovieClip("pemain");
		removeMovieClip("bola");
		removeMovieClip("kiper");
		mulai();
	}

	listenerKey.onKeyDown = function()
	{
			posisiPemain = pemain._x;

			if(((kiper._x - 200) - posisiPemain) > 50)
			{
				posisiGerakKiper = -5;
			}
			else if(((kiper._x - 200) - posisiPemain) < -50)
			{
				posisiGerakKiper = 5;
			}
			else
			{
				posisiGerakKiper = 0;
			}

			kiper._x += posisiGerakKiper;

			if(Key.isDown(Key.LEFT))
			{
				pemain._x -= 10;
			}

			if(Key.isDown(Key.RIGHT))
			{
				pemain._x += 10;
			}

			if(pemain._x < 50 || pemain._x > 200)
			{
				pemain._x = posisiPemain;
			}

			if(Key.isDown(Key.SPACE))
			{
				tenaga = (Math.floor(Math.random() * (9)) + 6) * 10;
				bolaDitendang();
			}
	}
	Key.addListener(listenerKey);

	function attachSetScaleDanXY(id:String, namaBaru:String, skala:Number, xx:Number, yy:Number, depth:Number)
	{
		attachMovie(id, namaBaru, depth);
		setProperty(namaBaru, _xscale, skala)
		setProperty(namaBaru, _yscale, skala)
		setProperty(namaBaru, _x, xx);
		setProperty(namaBaru, _y, yy);
	}

	function bolaDitendang()
	{
		delete listenerKey.onKeyDown;
		posisiBolaSemula = bola._y;

		bola.onEnterFrame = function()
		{
			if(kiper._x - bola._x > 10)
			{
				posisiGerakKiper = -20;
			}
			else if(kiper._x - bola._x < -10)
			{
				posisiGerakKiper = 20;
			}
			else
			{
				posisiGerakKiper = 0;
			}

			kiper._x += posisiGerakKiper;
			kiper._rotation += posisiGerakKiper / 2;

			if(tenaga > 90)
			{
				kiper._y -= 1;
			}

			bola._y -= tenaga / 10;
			bola._x += (tenaga / 10) - ((posisiPemain - 150) / 10);

			setProperty(bola, _xscale, getProperty(bola, _y) / posisiBolaSemula * 100);
			setProperty(bola, _yscale, getProperty(bola, _y) / posisiBolaSemula * 100);

			if((posisiBolaSemula - bola._y) > (tenaga * 2))
			{
				delete bola.onEnterFrame;
				if(bola.hitTest(kiper.tangkapan))
				{
					keterangan.gotoAndStop("frameBlocked");
					bola.gotoAndStop("frameKena");
				}
				else if((bola._x > 200) && (bola._x < 500) && (bola._y > 60) && (bola._y < 200))
				{
					keterangan.gotoAndStop("frameGol");
				}
				else
				{
					keterangan.gotoAndStop("frameOut");
				}
			}
		}
	}
}

***

Footnote:

[1] http://en.wikipedia.org/wiki/Game_industry

Iklan

27 thoughts on “12-Pas-12-Pas-an

  1. @Adjiesoft
    Mantap jaya lah 8) ..

    @Den Hanafi
    Sumuhun akang, pake flash.. wah keren, saya mah suka hoream bikin presentasi pake flash teh..

    @abie
    hehe ok ^^

    @H4ryo
    sama2, mksh jg utk komentarnya!!!

  2. Bro thk’s ya berkat anda saya lulus kuliah….hahhaahha

    banyak materi action script dari anda…. maap saya cuma ambil analogi anda…..hehehhe

    Terus berkarya bung…..

  3. mas gimana sih caranya gae flash cs3 yg kita sudah buat dijadikan file exe?????
    supaya game yg kita buat bisa dimainkan di komputer lain yang tida ada flash cs3 nya

    TErima Kasih

  4. @hamzah
    Library itu panel yg isinya semua symbol2 di FLA, klik aja menu Window > Library

    @yohanes angga
    haha.. turut berbahagia, sekadar inspirasi saja kan ya? ๐Ÿ˜€

    @Anom Prabayanto
    klik menu File > Publish Settings, ceklis pilihan “Windows Application”, terus klik publish atau Shift+F12 nanti .EXE-nya ada di folder yg sama dengan .FLA

  5. Mas maaf klo sya ngerepotin……
    saya bingung……
    kan saya buka Adobe Reader 9….
    habis itu saya ngak tau lgi mas…..
    tolong informasinya ya mas…..
    please saya jga mau berusaha untuk buat game…….
    ๐Ÿ™‚

  6. Mas saya masih belum ngerti ๐Ÿ™‚
    download yg buat bikin gamenya itu ap?
    nmanya ap?
    saya cari flash malah gak ada
    tolong ksih web download flash yg buat 12 pas pasan yamas
    please ksih tau disini ajjh webnya ya mas please ๐Ÿ™‚

  7. Mas Faisal…saya cb bwt games seperti ini, berhasil jalan..
    tpi pas saya coba tambahin scene..trus pindah scene..knp movie clip org nya masih muncul jg y di scene berikut nya..???gmn cara nya biar org nya tidak muncul di scene berikut nya y mas..???

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s