Laman

Showing posts with label game flash. Show all posts
Showing posts with label game flash. Show all posts

Membuat Game Ping Pong Sederhana P2P Dengan Adobe Flash Builder


       Game kali ini yaitu game Ping Pong multiplayer berbasis jaringan LAN Peer to peer(P2P). Untuk membuatnya saya menggunakan aplikasi Adobe Flash Builder  4.6, untuk download Flash Builder bisa masuk ke website Adobe.






















1. Buat project baru(File>New>Flex Project).
2. Paste code dibawah ini.

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
               xmlns:s="library://ns.adobe.com/flex/spark"
               xmlns:mx="library://ns.adobe.com/flex/mx"
               width="294" height="424" minWidth="955" minHeight="600">
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script>
        <![CDATA[
            import flashx.textLayout.factory.TruncationOptions;
           
            import org.osmf.events.TimeEvent;
            private var nc:NetConnection;
            private var group:NetGroup;
           
            [Bindable]
            private var speedx:int = 3;
            private var speedy:int = 3;
            private var nyawa1:int = 10;
            private var nyawa2:int = 10;
            private var timer:Timer = new Timer(25);
            private var obj:Object = new Object();
           
            public var host:Boolean = false;
           
            private function connect():void{
                nc = new NetConnection();
                nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
                nc.connect("rtmfp:");
               
            }
           
            private function netStatus(event:NetStatusEvent):void{
                trace("[EVENT]\n"+event.info.code+"\n");
                switch(event.info.code){
                    case "NetConnection.Connect.Success":
                        setupGroup();
                        break;
                    case "NetGroup.Connect.Success":
                        //connected = true;
                        break;
                    case "NetGroup.Posting.Notify":
                        //mc.x = event.info.message.x;
                        //mc.y = event.info.message.y;
                        break;
                    case "NetGroup.Neighbor.Connect":
                        ballpos();
                        break;
                    case "NetGroup.Neighbor.Disconnect":
                        break;
                    // routed message received
                    case "NetGroup.SendTo.Notify":
                        if(!host){
                            ball.x = event.info.message.bx;
                            ball.y = event.info.message.by;
                        }
                        mc2.x = event.info.message.x;
                        //mc2.y = event.info.message.y;
                        live1.text = event.info.message.nyawa2.toString();
                        live2.text = event.info.message.nyawa1.toString();
                        winLabel.text = event.info.message.wintxt;
                        goPanel.visible = event.info.message.panel;
                        break;
                }
            }
           
            private function setupGroup():void{
                var groupspec:GroupSpecifier = new GroupSpecifier("myGroup");
                groupspec.postingEnabled = true;
                groupspec.routingEnabled = true;
                groupspec.ipMulticastMemberUpdatesEnabled = true;
                groupspec.addIPMulticastAddress("225.225.0.1:30303");
                group = new NetGroup(nc,groupspec.groupspecWithAuthorizations());
                group.addEventListener(NetStatusEvent.NET_STATUS,netStatus);
            }
           
            // enable dragging
            private function drag(e:MouseEvent):void {
               
                this.stage.addEventListener(MouseEvent.MOUSE_MOVE, moveMe);
               
            } // end drag function
           
            // Drop the object.
            private function drop(e:MouseEvent):void {
               
                this.stage.removeEventListener(MouseEvent.MOUSE_MOVE, moveMe);
               
            } // end drop function
           
            // Move the object in accordind of the mouse position
            private function moveMe(e:MouseEvent):void {
               
                // move movieclip to mouse position
                mc.x = this.mouseX - mc.width/2;
                //mc.y = this.mouseY - mc.height/2;
               
                // Save the current movieclip position
                obj.x = ((mc.x+mc.width)-(294))*-1;
                //obj.y = ((mc.y+mc.height)-(424))*-1;
               
                // Set sender id
                obj.sender = group.convertPeerIDToGroupAddress(nc.nearID);
               
                // Sends a message to all members of a group.
                //group.post(obj);
                group.sendToAllNeighbors(obj);
               
            } // end moveMe function
           
            //start game
            private function ballpos():void{
                ball.x = 63 + Math.random() * 150;
                ball.y = 212;
                timer.stop();
                timer.addEventListener(TimerEvent.TIMER,moveBall);
                timer.start();
            }
            private function moveBall(e:TimerEvent):void{
                if(host){
                    obj.main=false;
                    //===ball speed
                    ball.x +=speedx;
                    ball.y +=speedy;
                   
                    //=========collision stage=============
                    if(ball.y < 28){
                        speedy = -3;
                        //speedx = 3;
                        ball.y = 212;
                        ball.x = 63 + Math.random() * 150;
                        nyawa2 -= 1;
                        live2.text = nyawa2.toString();
                    }else if(ball.y > 388){
                        speedy = 3;
                        //speedx = 3;
                        ball.y = 212;
                        ball.x = 63 + Math.random() * 150;
                        nyawa1 -= 1;
                        live1.text = nyawa1.toString();
                    }
                    if (ball.x < 0){
                        ball.x = 0;
                        speedx *= -1;
                    }else if (ball.x > 293){
                        ball.x = 293 - ball.width;
                        speedx *= -1;
                    }
                   
                    //==========collision paddle=========
                    if(mc.hitTestObject(ball)){
                        if(ball.x>((mc.width/2)+4)){
                            speedx -=2;
                        }else if(ball.x<((mc.width/2)-4)){
                            speedx +=2;
                        }
                        if(speedy<10){
                            speedy +=1;
                            speedx +=1;
                        }
                        speedy *= -1;
                    }else if(mc2.hitTestObject(ball)){
                        if(ball.x>((mc2.width/2)+4)){
                            speedx -=2;
                        }else if(ball.x<((mc2.width/2)-4)){
                            speedx +=2;
                        }
                        if(speedy>-10){
                            speedy -=1;
                        }
                        speedy *= -1;
                    }
                   
                    //===score ball======
                    if(nyawa1 == 0){
                        timer.stop();
                        goPanel.visible=true;
                        winLabel.text="You Lose";
                        obj.wintxt="You Win";
                        obj.panel = true;
                    }else if(nyawa2 == 0){
                        timer.stop();
                        goPanel.visible=true;
                        winLabel.text="You Win";
                        obj.wintxt="You Lose";
                        obj.panel = true;
                    }
                    //====save the value====
                    obj.nyawa1= nyawa1;
                    obj.nyawa2= nyawa2;
                    obj.bx = ((ball.x+ball.width)-(294))*-1;
                    obj.by = ((ball.y+ball.height)-(424))*-1;
                    // Set sender id
                    obj.sender = group.convertPeerIDToGroupAddress(nc.nearID);
                    group.sendToAllNeighbors(obj);                       
                }
            }
           
            protected function join_clickHandler():void{
                connect();
                host = false;
               
                mc.visible = true;
                mc2.visible = true;
                mulai.visible = false;
                join.visible = false;
               
                live2.rotation = 180;
                live1.visible = true;
                live2.visible = true;
               
            }
           
            protected function mulai_clickHandler():void{
                connect();
                host=true;
               
                mc.visible = true;
                mc2.visible = true;
                mulai.visible = false;
                join.visible = false;
               
                live2.rotation = 180;
                live1.visible = true;
                live2.visible = true;
                obj.x=112;
                group.post(obj);
            }
           
           
        ]]>
    </fx:Script>
    <mx:HRule x="-23" y="212" width="341" height="3"/>
    <s:Ellipse x="95" y="161" width="104" height="104" id="tes">
        <s:stroke>
            <s:SolidColorStroke weight="2" color="#DDDDDD"/>
        </s:stroke>
    </s:Ellipse>
    <s:Rect width="293" height="423">
        <s:stroke>
            <s:SolidColorStroke color="#DDDDDD" weight="4"/>
        </s:stroke>
    </s:Rect>
    <s:Button id="ball" x="140" y="205" width="15" height="15" label="Ball" chromeColor="#FCFCFC"/>
    <s:Label id="live1" x="269" y="223" fontWeight="bold" text="10" visible="false"/>
    <s:Label id="live2" x="25" y="203" fontWeight="bold" text="10" visible="false"/>
    <s:Button id="mc" x="112" label="▬▬▬▬▬▬▬" fontFamily="Courier New" mouseDown="drag(event)"
              mouseUp="drop(event)" verticalCenter="190"/>
    <s:Button id="mc2" x="112" label="▬▬▬▬▬▬▬" fontFamily="Courier New" verticalCenter="-192"/>
    <s:Button id="mulai" x="112" y="187" label="Host" click="mulai_clickHandler()"
              enabled="true" fontWeight="bold"/>
    <s:Button id="join" x="112" y="218" label="Join" click="join_clickHandler()"
              fontWeight="bold"/>
    <s:Panel id="goPanel" x="30" y="140" width="235" height="144" title="Game Over" visible="false">
        <s:Label id="winLabel" x="10" y="35" width="213" height="34" fontSize="32"
                 text="Player X Win" textAlign="center" verticalAlign="middle"/>
    </s:Panel>
</s:Application>




Selamat mencoba. Semoga dapat membantu, dan menjadi inspirasi.

Workshop Flash Game Elventales

Workshop Flash Game elventales.com
Ini hasilnya silahkan download disini
Demo gamenya langsung mainkan disini
Untuk tutorialnya dowload langsung disini

Platform Flash Game

     Membuat game petualangan sperti header pada postingan saya tanggal ini... Scriptnya sudah ada sedikit penjelasannya kok.

Play Demo
Download fla

Membuat Game Pertualangan Dengan Flash Bag.2

     Pada pembahasan kali ini panggung area akan dibuat lebih lebar, sehingga pemain bisa bergerak lebih lebar daripada latihan sebelumnya. Caranya sangat mudah sekali. Anda hanya tinggal menambahkan script dibawah ini di dalam script fungsi pemain(player).
// platform menggulung secara horizontal
if (p._x>=340 && t._x>=-(t._width-605)) {
 p._x = 339;
 t._x -= walk_speed;
}
if (p._x<=261 && t._x<=0) {
 p._x = 262;
 t._x += walk_speed;
}
Saran saya masukkan script di atas(platform menggulung secara horizontal) di atas script di bawah ini.
//jika player jatuh melebihi platform 
if (p._y>=600) {
 p._x = 80;
 p._y = 180;
}
contoh gambar panggung area yang akan dibuat seperti ini.


Setelah selesai menggambar dan memasukkan script, untuk melihat hasilnya tekan (Ctrl+Enter).
Selamat mencoba. Semoga berhasil dan menjadi inspirasi anda serta pengalaman yang menyenangkan.
Contoh file dapat di download disini

Membuat Game Pertualangan Dengan Flash

   Dalam Pembahasan kali ini akan dijelaskan bagaimana cara membuat sendiri game pertualangan
sederhana dengan menggunakan aplikasi flash. Untuk membuat game tersebut sebelumnya kita harus tau apa saja yang diperlukan untuk membuat game pertualangan. Dalam logika, saat memainkan game kita menggerakkan pemain berjalan di panggung permainan. berarti, kita membutuhkan dua objek, yaitu pemain dan panggung area. detail dari kedua objek tersebut:
•> Pemain
   - Dapat berjalan ke kanan
   - Dapat berjalan keKekiri
   - Dapat Loncat
   - Jatuh terkena gravitasi
•> Panggung
   - Tempat pijakan pemain
  Dari hipotesa atau kesimpulan awal tadi, marilah memulai membuat game pertualangan dengan tangan
sendiri dengan membuka dokumen baru.
1. Tekan (Ctrl+N) pilih flash document, kemudian klik kanan pada lembar kerja pilih Document Properties maka akan muncul jendela dialog. kemudia isikan angka 30 pada Frame Rate, Dimension 600 x 400 dan Background color putih, Setelak itu Klik Ok.


2. Setelah itu menggambar sebuah pemain. Disini saya menggunakan Rectangle Tool(R) untuk membuat pemain. Anda bisa kreasikan sendiri pemain anda.

3. Kemudian seleksi pemain dan klik kanan pada pemain, pilih Convert to Symbol..

4. Beri nama pemain dengan nama "player" pada kolom name, pilih Movie Clip pada pilihan type, dan pilih poros di tengah pada pilihan Registration, kemudian klik OK.

5. Kemudian klik Movie clip player dan berikan nama instansi di properties>Instance Name dengan nama instansi "player".

6. Setelah itu gambar panggung area untuk tempat berjalan pemain. Disini saya juga menggunakan Rectangle Tool(R) untuk membuat panggung seperti gambar dibawah. Kemudian, seleksi semua gambar panggung area, buat menjadi Movie clip dengan klik kanan pilih Convert to Symbol.

7. Beri nama "tanah" pada kolom Name, pilih Movie Clip pada pilihan Type, dan tentukan registration, kemudian klik OK.

8. Kemudian klik Movie clip tanah dan berikan nama instansi di properties>Instance Name dengan nama instansi "tanah".

9. Setelah itu klik kanan pada layer1 frame pertama, pilih Actions.

10. Masukkan kode dibawah ini pada jendela Actions.

//Kode dibawah ini disertai dengan penjelasan\\
stop();
//deklarasi platform
t = _root.tanah;
//deklarasi player
p = _root.player;
xspeed = 0;
yspeed = 0;
max_yspeed = 10;
walk_speed = 4;
// keadaan saat loncat ya
jumping = true;
// gravitasi & kekuatan loncat
gravity = 1;
jump_power = 10;
//fungsi player dalam frame
player.onEnterFrame = function() {
 //jika ditekan ke kiri
 if (Key.isDown(Key.LEFT)) {
  xspeed = -walk_speed;
 }
 //jika ditekan ke kanan 
 if (Key.isDown(Key.RIGHT)) {
  xspeed = walk_speed;
 }
 //jika ditekan tombol ke atas dan tidak saat loncat 
 if ((Key.isDown(Key.UP)) and !jumping) {
  yspeed -= jump_power;
  jumping = true;
 }
 //--------script jatuh seakan2 terkena grafitasi-----------\\ 
 // jika keadaan saat loncat                    
 if (jumping) {
  yspeed += gravity;
 }
 //jika yspeed>max_yspeed 
 if (yspeed>max_yspeed) {
  yspeed = max_yspeed;
 }
 //--------akhir script seakan2 terkena gravitasi-----------------\\ 
 //jika platform dibawah kaki dan tidak saat loncat dan tidak saat naik
 if (level_under_my_feet() and !jumping) {
  yspeed = 0;
 }
 // memerintahkan player untuk melakukan gerakan 
 // ->masukkan nilai-nilai x, y player ke dalam variabel forecast
 forecast_x = this._x+xspeed;
 forecast_y = this._y+yspeed;
 // mengontrol platform
 //ketika platform menyentuh bagian bawah player lakukan
 while (t.hitTest(forecast_x, forecast_y+this._height/2-1, true)) {
  forecast_y--;
  xspeed = 0;
  yspeed = 0;
  jumping = false;
 }
 //ketika platform menyentuh bagian atas player lakukan
 while (t.hitTest(forecast_x, forecast_y-this._height/2, true)) {
  forecast_y++;
  yspeed = 0;
 }
 //ketika platform menyentuh bagian kiri player lakukan
 while (t.hitTest(forecast_x-this._width/2+1, forecast_y, true)) {
  forecast_x++;
  xspeed = 0;
 }
 //ketika platform menyentuh bagian kanan player lakukan
 while (t.hitTest(forecast_x+this._width/2, forecast_y, true)) {
  forecast_x--;
  xspeed = 0;
 }
 //kembalikan nilai forecast ke player agar player begerak sesuai event
 this._x = forecast_x;
 this._y = forecast_y;
 // hentikan gerakan setelah event terjadi
 xspeed = 0;
 //membatasi lebar gerak karakter 
 if (p._x-(p._width/2)<=0) {
  p._x = p._width/2;
 } else if (p._x+(p._width/2)>=600) {
  p._x = 600-(p._width/2);
 }
 //jika player jatuh melebihi platform 
 if (p._y>=600) {
  p._x = 80;
  p._y = 180;
 }
 if (t.hitTest(player._x, player._y+player._height/2, true)) {
  jumping = false;
 } else {
  jumping = true;
 }
};
//end finction player
//fungsi platform ketika dibawah  player
function level_under_my_feet() {
 return t.hitTest(player._x, player._y+player._height/2, true);
}
11. Setelah itu tekan (Ctrl+Enter) untuk melihat hasil
  Script di atas hanyalah salah satu dari logika-logika yang saya berikan, anda bisa menambah dan menggunakan logika-logika kreasi anda. Apabila ingin mengedit panggung area, tinggal dobel klik movie clip tanah dan edit sesuka hati.
Selamat mencoba. Semoga berhasil dan menjadi inspirasi anda serta pengalaman yang menyenangkan.
Contoh file dapat di download disini