Sunday, 29 January 2017

Membuat Game Mewarnai Flash AS 3


Kali ini kita akan membuat aplikasi mewarnai di flash AS3
Aplikasi mewarnai ini sering kita jumpai di playstore dan game untuk desktop, sekarang kita akan membuat aplikasi mewarnai sederhana. Konsepnya yaitu ada gambar objek yang kita buat masing-masing bagian gambar dapat diberi warna sesuai dengan warna yang kita sediakan.
Seperti tampilan di bawah ini :


  1. Siapkan objek yang ingin di warnai
  2.  Pada bagian warna pada objek jadikan sebagai movie clip 

  3. Lakukan pada bagian daun
  4. Beri instance_name  dengan nama awal dan diikuti dengan angka yang berurutan yang dimulai dari 0 sebanyak jumlah bagian yang di warnai seperti straw_mc0 , straw_mc1 Karena saya hanya membuat 2 bagian yang diwarnai. Seteleh itu rubah warna objek menjadi warna putih 
  5. Kemudian siapkan 2 button sebagai button warna 

  6. Setelah itu copy kan script seperti yang di bawah ini : 

var colorClipTransform:ColorTransform;


//Menjalankan fungsi setListeners

setListeners();


//tombol warna Merah yang akan melempar variabel 0xFF0000 yaitu code untuk warna hijau ke fungsi changeColour

btn_red.addEventListener(MouseEvent.CLICK, function (event:MouseEvent) {changeColour("0xFF0000")});


//tombol warna hijau yang akan melempar variabel 0x00CC00 yaitu code untuk warna hijau ke fungsi changeColour

btn_green.addEventListener(MouseEvent.CLICK, function (event:MouseEvent) {changeColour("0x00CC00")});


function setListeners():void {

 //fungsi untuk mengambil bagian-bagian objek yang akan diwarnai seperti straw_mc0 dan straw_mc1

 // kemudian akan menjalankan fungsi changeStrawberryColor

 var i:Number;

    // i diset looping lebih kecil dari 2 yang berarti sampai 1(karna objek hanya 2 dan i dihitung dari 0)

    for (i=0; i<2; i++) {

     this["straw_mc"+String(i)].addEventListener(MouseEvent.CLICK, changeStrawberryColor);

   }

}

  

function changeColour(clr:String):void {

 //Fungsi changeColour untuk mengambil warna sesuai dengan tombol yang diklik dan tersimpan pada variabel clr

 // ke variabel colorClipTransform

 var ClipTransform=new ColorTransform();

 ClipTransform.color = clr;

 colorClipTransform=ClipTransform;

}


function changeStrawberryColor(evt:MouseEvent):void {

//mewarnai objek sesuai dengan warna yang kita pilih yang disimpan di variabel  colorClipTransform

 var thisStraw:MovieClip = MovieClip(evt.currentTarget);

 var curTransform:ColorTransform=colorClipTransform;

 thisStraw.transform.colorTransform = curTransform;


}
Jika ada yang ingin mencoba dapat di download disini

Monday, 23 January 2017

Membuat Game puzzle dengan waktu dan score AS3

kali ini saya mencoba membuat game puzzle yang sederhana lengkap dengan waktu dan score,, dengan aturan waktu yang dimiliki untuk menyelesaikan game yaitu 10 detik , full score 1000 dengan 2 potongan gambar jika dapat menyelesaikan permainan sebelum waktu nya dengan score 1000 maka pemain akan memenangkan permainan puzzle ini.

Tampilan seperti yang diawah ini :

Puzzle dengan Actionscript 3.0 berbeda dengan Actionscript 2.0 yang saya buat di artikel sebelumnya. untuk di as3 ini kita akan menambahkan kelas untuk drag dan drop object  yaitu DragGame.as, HitTestObject.as , HitTestPoint.as dan  IHitTestMethod.as yang dapat di download pada link di bawah artikel ini.


 ActionScript  yang digunakan seperti di bawah ini:
 stop();
import com.*;

var score:int = 0;
var dragArray:Array = [kuda_mc, sapi_mc];
var matchArray:Array = [kuda_match, sapi_match];
var posArray:Array = [ {x:214, y:92.7}, {x:383.2, y:92.7} ];

var dragGame:DragGame = new DragGame(stage, dragArray, matchArray, posArray);

dragGame.addEventListener(DragGame.MATCH_MADE, onMatch);
dragGame.addEventListener(DragGame.NO_MATCH, onFlub);
dragGame.addEventListener(DragGame.ALL_DONE, onDone);

//Fungsi yang akan jalan jika posisi puzzle sesuai dengan pasangan objeknya
function onMatch(event:Event):void {
    var matchSound:Sound = new MatchSound(); // Objek suara
    matchSound.play(); // Akan memainkan suara jika objek sesuai
    score +=500; // Menambahkan skor 500
    score_txt.text=score.toString(); //Nilai akan tertulis di objek score_txt;
      
}
//Fungsi yang akan jalan jika posisi puzzle tidak sesuai dengan pasangan objeknya
function onFlub(event:Event):void {
    var flubSound:Sound = new FlubSound(); // Objek suara
    flubSound.play(); // Akan memainkan suara jika objek tidak sesuai
  
}
//Fungsi yang akan jalan jika semua puzle telah tersusun sesuai pasangan objeknya masing-masing
function onDone(event:Event):void {
    var applause:Sound = new Applause(); // Objek suara
    applause.play(); // Akan memainkan suara tepuk tangan jika semua objek telah terpasang sesuai
    Remove(); // Menjalankan fungsi remove
    nextFrame(); // Melanjutkan ke frame selanjutanya
}

var myTimer:Timer = new Timer(1000,10); // variabel Batas waktu 10 detik
myTimer.addEventListener(TimerEvent.TIMER, onTimer);
myTimer.addEventListener(TimerEvent.TIMER_COMPLETE, onComplete);
myTimer.start(); // Memulai perhitungan waktu

function onTimer(e: TimerEvent):void {
    time_txt.text = String(myTimer.repeatCount - myTimer.currentCount);
}
//Fungsi yang akan jalan jika batas waktu telah habis
function onComplete(e: TimerEvent):void{
     Remove();
     gotoAndStop(4);
}

//Fungsi untuk Menghapus movie clip dan timer yang ada di stage ini supaya tidak muncul lagi di
//Frame berikutnya
function Remove():void{

    if (contains (sapi_mc)){
        removeChild(sapi_mc)
    }
    if (contains(kuda_mc)){
        removeChild(kuda_mc)
    }
    myTimer.stop(); //Memberhentikan timer yang sedang berjalan
}



untuk objek puzzle yang akan di drag masukan di array dragArray dan untuk objek yang di  pasangkan dimasukan ke array matchArray, kemudian posArray itu adalah posisi x y dari objek yang dipasangkan, dapat dilihat dari properties pada objek yang di pasangkan.

var dragArray:Array = [kuda_mc, sapi_mc];
var matchArray:Array = [kuda_match, sapi_match];
var posArray:Array = [ {x:214, y:92.7}, {x:383.2, y:92.7} ];

Jika teman-teman ingin mencoba silahkan di download di link bawah ini :
disini

Terimakasih, semoga bermanfaat yak.. :)




Saturday, 21 January 2017

Aplikasi kamera android

Aplikasi kamera android :
Sekarang kita akan membuat aplikasi kecil android yang mempunyai Fungsi :
1.       Dapat mengambil foto dengan kamera
2.       Memperkecil Ukuran foto
3.       Memberi watermark
4.       Menyimpan foto di folder lain

Buatlah Projek baru di android studio : File >New > New Project
Aplication Name : My Camera
Company Domain : com.www.adyulita.blogspot  

Buka file  AndroidManifest.xml dan tambahkan koding di bawah ini :

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<
uses-permission android:name="android.permission.CAMERA" />

Untuk dapat mengakses fitur kamera, menyimpan dan memindahkan foto ke folder lain di dalam sdcard android.

Buka File Activity_main.xml  dan copy koding dibawah ini :

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:id="@+id/activity_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    tools:context="blogspot.adyulita.www.com.mycamera.MainActivity">



    <LinearLayout

        android:layout_width="wrap_content"

        android:layout_height="match_parent"

        android:orientation="vertical"

        android:layout_centerHorizontal="true"

        android:weightSum="3"

        android:layout_alignParentTop="true">





        <TextView

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_weight="0.4"

            android:layout_centerHorizontal="true"

            android:textSize="20dp"

            android:layout_marginTop="30dp"

            android:text="Hello Guys!" />



        <Button

            android:id="@+id/buttonCamera"

            style="?android:attr/buttonStyleSmall"

            android:layout_width="150dp"

            android:layout_height="80dp"

            android:layout_weight="1"

            android:layout_centerHorizontal="true"

            android:background="@drawable/camera" />



        <ImageView

            android:id="@+id/imgView"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_centerHorizontal="true"

            android:layout_weight="1"

            android:src="@drawable/na" />





    </LinearLayout>

</RelativeLayout>

 
Tampilan seperti yang di bawah ini  
 
 
Buka file MainActivity.java dan copy koding di bawah ini :

package blogspot.adyulita.www.com.mycamera;


import android.content.Intent;

import android.database.Cursor;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Rect;

import android.net.Uri;

import android.os.Bundle;

import android.os.Environment;

import android.provider.MediaStore;

import android.support.v7.app.AppCompatActivity;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.ImageView;

import android.widget.Toast;



import java.io.ByteArrayOutputStream;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.Calendar;



public class MainActivity extends AppCompatActivity {

    Button btnCamera;  ImageView img;

    private static final int PICK_Camera_IMAGE = 1;

    Uri imageUri,imageUri1,imageUri2;

    File dFile;

    private Bitmap bitmap;

    String filePath = "NONE";



    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        //Definisi komponen yang terdapat di tampilan interface

        btnCamera = (Button) findViewById(R.id.buttonCamera); // Definisi tombol kamera

        img = (ImageView)findViewById(R.id.imgView); // Definisi Tampilan gambar





        btnCamera.setOnClickListener(new Button.OnClickListener() {

            @Override

            public void onClick(View v) {

                //Pemberian nama pada file photo

                String fileName = String.valueOf(System.currentTimeMillis() + ".jpg");

                //Folder photo tersimpan di folder DCIM

                File dir = Environment

                        .getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

                File filetp1 = new File(dir, fileName);



                imageUri = Uri.fromFile(filetp1);

                // Untuk membuka fitur kamera

                Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

                intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);

                startActivityForResult(intent, PICK_Camera_IMAGE);

            }

        });

    }





    public void onActivityResult(int requestCode, int resultCode, Intent data) {

        Uri selectedImageUri = null;

        if (requestCode == PICK_Camera_IMAGE) {

            if (resultCode == RESULT_OK) {

                selectedImageUri = imageUri;

                String filemanagerstring = selectedImageUri.getPath();

                File files = new File(filemanagerstring);

                String namafile = files.getName();



                try {

                    //Untuk memindahkan Photo dari DCIM ke Folder My Camera

                    String dest = "/sdcard/My Camera/" + namafile;

                    String src1 = "/sdcard/DCIM/" + namafile;

                    if (!Environment.getExternalStorageState().equals(

                            Environment.MEDIA_MOUNTED)) {

                        // untuk menghandle jika tidak ada sd card di smartphone

                    } else {

                        dFile = new File(Environment.getExternalStorageDirectory()

                                + File.separator + "My Camera");



                        if (!dFile.exists()) {

                            dFile.mkdir();



                        }



                    }



                    String directoryPath = "sdcard/My Camera";

                    File file = new File(directoryPath, namafile);

                    imageUri1 = Uri.fromFile(file);

                    InputStream in = new FileInputStream(src1);

                    OutputStream out = new FileOutputStream(dest);



                    byte[] buf = new byte[1024];

                    int len;

                    while ((len = in.read(buf)) > 0) {

                        out.write(buf, 0, len);

                    }

                    in.close();

                    out.close();

                    File filea = new File(src1);

                    File filet = new File(dest);

                    imageUri2 = Uri.fromFile(filet);

                    selectedImageUri = imageUri2;





                    filea.delete();

                    if (filea.exists()) {

                        filea.getCanonicalFile().delete();

                        if (filea.exists()) {

                            getApplicationContext().deleteFile(filea.getName());

                        }

                    }



                } catch (Exception e) {

                }



                if (selectedImageUri != null) {

                    if (selectedImageUri != null) {

                        try {

                            // OI FILE Manager

                            String filemanagerstring2 = selectedImageUri

                                    .getPath();

                            // MEDIA GALLERY

                            String selectedImagePath2 = getPath(selectedImageUri);



                            if (selectedImagePath2 != null) {

                                filePath = selectedImagePath2;

                            } else if (filemanagerstring2 != null) {

                                filePath = filemanagerstring2;

                            } else {

                                Toast.makeText(getApplicationContext(),

                                        "Unknown path", Toast.LENGTH_LONG)

                                        .show();

                                Log.e("Bitmap", "Unknown path");

                            }



                            if (filePath != null) {

                                decodeUri(filePath); // Fungsi untuk memperkecil dan memberi watermark pada poto

                                loadImage(namafile); //Fungsi untuk menampilkan Gambar



                            } else {

                                bitmap = null;

                            }

                        } catch (Exception e) {



                            Log.e(e.getClass().getName(), e.getMessage(), e);

                        }

                    }

                }

            }



        }

    }



    public String getPath(Uri uri) {

        String[] projection = { MediaStore.Images.Media.DATA };

        Cursor cursor = managedQuery(uri, projection, null, null, null);

        if (cursor != null) {

            int column_index = cursor

                    .getColumnIndexOrThrow(MediaStore.Images.Media.DATA);

            cursor.moveToFirst();

            return cursor.getString(column_index);

        } else

            return null;

    }



    //Fungsi yang di gunakan untuk mengkompress photo dan memberi watermark pada photo

    public void decodeUri(String filePath2) throws FileNotFoundException {

        // Decode image size

        BitmapFactory.Options o = new BitmapFactory.Options();

        o.inJustDecodeBounds = true;

        Uri uriFromPath = Uri.fromFile(new File(filePath2));

        BitmapFactory.decodeStream(getContentResolver().openInputStream(

                uriFromPath));



        final int REQUIRED_SIZE = 65;



        int width_tmp = o.outWidth, height_tmp = o.outHeight;

        int scale = 1;

        while (true) {

            if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE)

                break;

            width_tmp /= 2;

            height_tmp /= 2;

            scale *= 2;

        }



        BitmapFactory.Options o2 = new BitmapFactory.Options();

        o2.inSampleSize = scale;



        //Untuk mengambil tanggal

        final Calendar c = Calendar.getInstance();

        int mYear = c.get(Calendar.YEAR);

        int mMonth = c.get(Calendar.MONTH) + 1;

        int mDay = c.get(Calendar.DAY_OF_MONTH);

        int second = c.get(Calendar.SECOND);

        int minute = c.get(Calendar.MINUTE);

        int hour = c.get(Calendar.HOUR_OF_DAY);

        String Date = mDay + "/" + mMonth + "/" + mYear+" "+hour+":"+minute+":"+second; // Format text yang akan muncul di watermark

        bitmap = BitmapFactory.decodeStream(getContentResolver()

                .openInputStream(uriFromPath), null, o2);



        Bitmap drawableBitmap = bitmap.copy(Bitmap.Config.ARGB_8888, true);

        Canvas canvas = new Canvas(drawableBitmap);

        Paint paint = new Paint();

        paint.setColor(Color.RED); // warna text watermark : merah

        paint.setTextSize(46); // ukuran text watermark



        Rect bounds = new Rect();

        paint.getTextBounds(Date, 0,Date.length(), bounds);

        int x = 180; // untuk posisi watermark

        int y = bitmap.getHeight() - 60;

        System.out.println(x + "-" + y);



        canvas.drawText(Date, x, y, paint);

        ByteArrayOutputStream bytes = new ByteArrayOutputStream();

        drawableBitmap.compress(Bitmap.CompressFormat.JPEG, 40, bytes); // untuk mengkompress photo supaya lebih kecil



        File f = new File(filePath2);

        try {

            f.createNewFile();

        } catch (IOException e1) {

            // TODO Auto-generated catch block

            e1.printStackTrace();

        }



        FileOutputStream fo = null;

        try {

            fo = new FileOutputStream(f);

        } catch (FileNotFoundException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        try {

            fo.write(bytes.toByteArray());

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }

        try {

            fo.close();

        } catch (IOException e) {

            // TODO Auto-generated catch block

            e.printStackTrace();

        }



    }



    //Fungsi untuk menampilkan poto yang sudah di ambil oleh kamera

    void loadImage(String namafile) throws FileNotFoundException {



        final int THUMBNAIL_SIZE = 300; //ukuran thumbnail poto yang akan tampil

        Uri uriFromPath = Uri.fromFile(new File("/sdcard/My Camera/" + namafile)); // alamat poto yang di ambil



        Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver()

                .openInputStream(uriFromPath));



        Float width = new Float(bitmap.getWidth());

        Float height = new Float(bitmap.getHeight());

        Float ratio = width / height; // bitmap

        bitmap = Bitmap.createScaledBitmap(bitmap,

                (int) (THUMBNAIL_SIZE * ratio), THUMBNAIL_SIZE, false);



            img.setImageBitmap(bitmap);



        }


}

Projek Aplikasi dapat di download di bawah ini :
http://www.4shared.com/zip/8g4cRqbqce/MyCamera.html