Monday, 17 October 2016

PT. Indosoftskill.tbk (Bidang Pemasaran)

PT. Indosoftskill.tbk merupakan  perusahaan distribusi sebuah komputer atau laptop dari perusahaan satu ke perusahaan lainnya yang  telah bekerjasama pada perusahaan PT.Indosoftskill, dalam membangun suatu perusahaan sangat diperlukan banyak bidang salah satunya bidang pemasaran dimana, bidang tersebut sangat berperan penting dalam suatu perusahaan, dikarenakan pengenalan produk dari suatu perusahaan melalui bidang pemasaran, selain itu pemasaran sendiri yang menentukan untung dan rugi suatu perusahaan, oleh sebab itu strategi pemasaran sangat diperulakan untuk banyak konsumen membeli atau menggunakan produk dari perusahaan ini.

Visi :

Menjadi penyedia layanan pemasok komputer atau laptop dalam berbagai macam type dan model untuk seluruh warga indonesia dan memberikan pelayanan terbaik bagi customer.

Misi :


Menjadi lembaga supplayer komputer terbaik yang di percaya dan memuaskan untuk customer.


Pemasaran dapat dilakukan dengan banyak cara salah satu alternatif pemasaran yang mudah berkembang melalui internet bersifat online, selain online pemasaran juga dapat dilakukan dengan cara offline.

berikut cara pemasaran menggunakan internet(online):

a). Membuat akun sosial media, sosial media yang sedang banyak digunakan oleh semua kalangan membuat para pengusaha, mempromosikan produk nya di sosial media,  karna interaksi penjual dengan pembeli mudah dan cepat tanggap dari admin pemasaran. Perusahaan juga dapat mengetahui perkembangan penjualan barang, dan dapat lebih mudah meperkenalkan barang dari perusahaan ke konsumen baru.
b). Membuat website, selain media sosial, alternatif pemasaran bisa melalui website, website berfungsi menaymapikan detai tentang informasi perusahaan contohnya visi dan misi perusahaan, profil perusahaan, barang yang dijual, contact perusahaan dan yang lainnya.

pemasaran offline adalah pemasaran dengan cara terjun langsung ke lapangan untuk memperkenalkan produk perusahaan yaitu air mineral kepada calon konsumen, dengan cara memberikan diskon dll.
berikut teknik pemasaran offline:
1).  Amati Produk Pesaing Anda, Lalu Berikan Nilai Lebih 1 Tingkat Saja
Saat anda bersaing didalam pasar yang cukup kompetitif, maka diferensiasi produk harus anda lakukan. Jadikan produk anda berbeda dengan produk sejenis yang ada dipasaran, bagaimana caranya?
Formula rahasianya adalah anda cukup memberikan 1 unique value saja pada produk anda, yang khas dan belum pernah ada. Maka produk anda akan stand-out dipasaran.

2). Lakukan Guerilla Promotion, karena Masih Berdampak
Apa itu Guerilla Promotion? Singkatnya adalah promosi konvensional menggunakan stiker atau poster, spanduk, baliho hingga umbul-umbul. Beberapa orang berkata cara berpromosi seperti ini sudah usang, jangan salah, beberapa target market melihat ini sebagai promosi yang valid.

referensi:
http://plaza-bisnis.com/contoh-strategi-bisnis-kreatif-produk/


Sunday, 25 September 2016

Lazada e commerce


Bisnis online di era serba cepat dan mudah sangatlah menguntungkan. Bisnis online yang menjual barang di internet salah satunya adalah situs lazada.com. Situs ini bergerak dalam bidang IT sebagai penyedia barang seperti elektronik, buku, mainan anak dan perlengkapan bayi, alat kesehatan dan produk kecantikan, peralatan rumah tangga, dan perlengkapan traveling dan olah raga. LAZADA Indonesia didirikan pada tahun 2012 dan merupakan salah satu cabang dari jaringan retail online LAZADA di Asia Tenggara Asia Tenggara Grup LAZADA International di Asia tenggara. Pada Januari 2012, jumlah karyawan LAZADA hanya 4 orang, dan pada bulan Agustus 2012 karyawan yang dipekerjakan naik menjadi 200 karyawan dan terus bertambah setiap bulannya.

Tom Damek selaku Managing Director di Indonesia enggan menyebutkan jumlah omset yang mereka dapatkan selama ini namun menurut tafsiran pengamat, omset LAZADA dalam sebulan mencapai milyaran rupiah. LAZADA mempunyai warehouse atau gudang seluas 2.500 meter persegi dan 5.000 meter persegi di Jakarta, hal ini merupakan upaya untuk mempertahankan pertumbuhan sebesar 20% setiap bulan. Hingga Desember 2012, LAZADA memiliki 13 kategori produk, dan lebih dari 3.000 subkategori. Total, perusahaan menjual 25.000 jenis produk. Pada tahun lalu, Lazada mendapatkan beberapa kali suntikan dana dari beberapa perusahaan seperti JP Mogan dan Kinnevik.

Selain Indonesia, LAZADA juga beroperasi di empat negara di Asia Tenggara, yakni Malaysia, Thailand, Vietnam, dan Filipina. Pada tahun lalu, LAZADA Indonesia memiliki kontribusi pendapatan terbesar yakni 30%, diikuti Thailand. Selain Indonesia, Lazada juga beroperasi di empat negara di Asia Tenggara, yakni Malaysia, Thailand, Vietnam, dan Filipina. Pada tahun lalu, Lazada Indonesia memiliki kontribusi pendapatan terbesar yakni 30%, diikuti Thailand.



Memproduksi :

LAZADA Indonesia adalah pusat belanja online yang menawarkan berbagai macam jenis produk mulai dari elektronik, buku, mainan anak dan perlengkapan bayi, alat kesehatan dan produk kecantikan, peralatan rumah tangga, dan perlengkapan traveling dan olah raga. LAZADA Indonesia didirikan pada tahun 2012 dan merupakan salah satu cabang dari jaringan retail online LAZADA di Asia Tenggara Asia Tenggara Grup LAZADA International di Asia Tenggara terdiri dari LAZADA Indonesia, LAZADA Malaysia, LAZADA Vietnam, LAZADA Thailand, LAZADA Filipina. Jaringan LAZADA Asia Tenggara merupakan cabang anak perusahaan jaringan perusahaan internet Jerman, Rocket Internet Rocket Internet. Rocket Internet merupakan perusahaan online incubator yang sukses menciptakan perusahaan-perusahaan online inovatif di berbagai belahan dunia. Berkantor pusat di Berlin, Jerman, proyek yang dimiliki Rocket Internetantara lain Zalando, TopTarif, eDarling, Groupon (sebelumnya CityDeal), dll
Lazada.co.id The Fastest Growing e-Commerce in Indonesia – Keberhasilan sistem perdagangan online (eCommerce) di Indonesia tidak lepas dari antusiasme masyarakat Indonesia yang mendambakan sebuah kepraktisan dalam berbelanja. Lazada.co.id adalah salah satu toko online terbaik tanah air yang hadir dengan konsep produk yang lengkap dan kemudahan belanja online pesan antar. Adalah sebuah perjalanan yang menabjubkan bagi Lazada.co.id dan orang-orang dibelakanganya yang membuat Lazada menjadi besar seperti sekarang.
Bayangkan saja, Dalam kurun waktu satu tahun, Lazada.co.id kini telah menjadi toko online terbesar di Indoneia. Wajar bila banyak yang menjuluki Lazada.co.id sebagai “The Fastest Growing e-commerce in Indonesia”, Mari kita simak sejarah perjalan Lazada.co.id di dunia e-commerce tanah air.
Timeline lazada indonesia timeline
Januari 2012 – Rocket Internet yang bermarkas di Berlin, Jerman mendirikan sebuah kantor di ibukota indonesia, Jakarta. Saat itu Rocket Internet baru memperkerjakan 4 orang karyawan di Lazada.
15 Maret 2012 –  Website Lazada.co.id diluncurkan pada bulan Maret 2012, bukan hanya di Indonesia saja namun di Philipina, Thailand, Malaysia, Vietnam dan menjadikan Lazada sebagai toko online yang kini tidak asing lagi di telinga setiap orang di wilayah Asia Tenggara. Tepatnya pada tanggal 15 Maret lazada.co.id terbuka untuk umum, dengan 4 kategori utama dan 4.000 produk didalamnya.
22 Maret – Selang satu minggu setelah peluncuran, lazada.co.id mendapatkan pelanggan pertamanya, yang kemudian memberikan testimoni pada sebuah interview mengenai kepuasaanya berbelanja di lazada.co.id.
April 2012 – Dengan pelayanan terbaik dari segi kelengkapan produk, pelayanan, dan kelengkapan sistem pembayaran termasuk COD, dalam jangka waktu satu bulan setelah peluncuran, jumlah pelanggan lazada.co.id telah mencapai 1000 pelanggan.
Juni 2012 –  Semakin banyaknya ragam produk yang dijual di lazada.co.id, Membuat Lazada membuka kantor baru yaitu sebuah warehouse dan pusat distribusi, kantor terbaru ini menampung dengan baik tiap produk yang tampil pada website dan mengatur tiap pemesanan pelanggan dengan teliti sehingga kemungkinan kesalahan pengiriman kecil terjadi.
LAZADA-Indonesia-Belanja-Online

Agustus 2012 – Berkat keseriusan dan kerja keras seluruh karyawan dibelakang Lazada, pada bulan Agustus lazada.co.id menjadi top 100 website di Indonesia! Dibulan ini pula Lazada telah memiliki 200 karywan.



September 2012 – Berkat cepatnya perkembangan lazada.co.id yang diiringi dengan atusiasme masyarakat Indonesia terhadap sistem belanja online, pada bulan sepember Lazada.co.id telah menduduki top 70 website di Indonesia.
14 September 2012 – JP Morgan Asset Management mengkonfrimasi investasi terhadap jaringan LAZADA Asia Tenggara. CEO LAZADA Regional Asia Tenggara, Maximilian Bittner menyatakan, “Kami sangat merasa terhormat untuk menyambut JP. Morgan untuk menjadi investor kami dan tentunya sangan bahagia bergabung dengan investor dengan berbagi visi dan kepercayaan akan potensi besar wilayah yang berpopulasi besar dengan mereplikasi perilaku berbelanja online di negara maju.” (Kutipan Wikipedia).
8 Oktober 2012 – Peka dengan perkembangan trend di Indonesia, pada 8 oktober lazada.co.id menjadi trending topic #2 di sosial Twitter dengan campaign hastag #Bringmeto1D. Dalam campaign One Direction ini Lazada bekerjasama dengan SonyMusic untuk memberangkatkan beberapa pelanggan Lazada.co.id untuk bertemu dengan One Direction.

24 oktober 2012 – Tim Marketing sosial media Lazada bersorak gembira dengan melihat keberhasilannya atas 100,000 “likes” pada akun Facebook page Lazada.co.id.
12 November 2012 – Kinnevik, perusahaan investasi dari Swedia menanamkan investasi hingga lebih dari USD 40 juta. (Baca lengkapnya di Wikipedia)
Desember 2012 – Dengan pelanggan yang terus puas dengan pelayanan dan produk yang dihadirkan, pada bulan terakhir di 2012, Lazada.co.id berada diposisi top 60 website di indonesia dan “like” Facebook yang sudah menembus angka 220.000.
5 Desember 2012 – Summit Partners, salah satu perusahaan modal usaha terbesar di dunia berinvestasi sebesar USD 26 juta pada Lazada. (Baca lengkapnya di Wikipedia).
12 Desember 2012 –  Angka 12.12.12 adalah sebuah revolusi di dunia e-Commerce di Indonesia yang mana event ini diprakarsai oleh Lazada. Pada 12 desember 2012 ini Lazada.co.id menghadirkan berbagai produk pilihan dengan diskon yang sangat besar. Angka penjualan melonjak pesat setelah campaign ini.
Lazada-Indonesia online revolution 12.12.12 event


31 Desember 2012 – Pentingnya sebuah User Interface sebuah website untuk kemudahan berbelanja tiap orang menjadikan Lazada meluncurkan website dengan interface terbaru, yang lebih bersahabat dan mudah digunakan oleh setiap pengunjung lazada.co.id. Pada bulan ini juga website lazada.co.id sudah memiliki kategori produk sebanyak 13 buah dan 25.000 produk yang dijual online.
Januari 2013 – Tengelmann, group retail strategis dari Jerman menanamkan dana investasi yang dikabarkan mencapai USD 20 juta. (Baca lengkapnya di Wikipedia)
Februari 2013 – Iklan TVC Lazada.co.id tayang perdana di televisi nasional indonesia.
Maret 2013 – Kepuasan pelanggan Lazada.co.id tercermin pada peringkat Lazada.co.id mejadi website terbaik top 40 di Indonesia.

Sumber: http://blog.lazada.co.id/mengulik-sejarah-jejak-perjalanan-lazada-indonesia/

Nama : Meidiana Dwi Andyni
Kelas : 4IA14
Npm: 55413407
Mata kuliah : pengantar bisnis informatika

Jika saya berbisnis saya ingin menjadi "owner e commerce berbasis web dan android"

     Perkembangan e-commerce berbasis web dan android kini semakin berkembang, dengan semakin berkembangnya dunia perdagangan online banyak orang ingin menjadi owner e-commerce berbasis web dan android, e-commerce adalah Electronic Commerce atau bila diterjemahkan ke bahasa indonesia menjadi perdagangan elektronikweb adalah halaman informasi yang disediakan melalui jalur internet sehingga bisa diakses di seluruh dunia selama terkoneksi dengan jaringan internet. Android adalah sistem operasi berbasis Linux yang dirancang untuk perangkat bergerak layar sentuh seperti telepon pintar dan komputer tablet.
     saya sangat tertarik menjadi owner e commerce berbasis web dan android karna dengan menggunakan web dan android sangat memudahkan kita memasarkan produk sampai seluruh indonesia atau negara lain, perkembangan android yang semakin besar dan hampir semua manusia memiliki hp berbasis android, perkembangan web juga sangat berkembang. Saya ingin membangun usaha e commerce berbasis web dan android salah satunya seperti lazada dan olx, saya akan terus belajar mengenai e commerce berbasis android dan web dan akan membuat juga mengembangkan. Pembisnis e commerce berbasis web dan android sebenarya membutuhkan proses dan memperbanyak pengalaman. Hal ini yang menjadi pedoman sukses untuk menjadi owner e commerce berbasis web dan android 
Langkah - langkah menjadi pembisnis e commerce berbasis web 
1. URL Harus Nama Bisnis Anda
Di mana pun nama bisnis Anda muncul, alamat website Anda sebaiknya juga muncul tepat di sampingnya. Oleh sebab itu, buatlah URL yang sama dengan nama bisnis Anda dan hindari kesalahan dalam ejaan, penggunaan simbol dan angka. Pelanggan harus dapat langsung mengingat URL Anda karena itu adalah lalu lintas termurah yang pernah Anda terima
2.  Gunakan Situs Pihak Ketiga Untuk Mengembangkan Basis Pelanggan Marketplaces seperti eBay dan situs kesepakatan kelompok seperti Spreetsare adalah cara yang cepat untuk meningkatkan eksposur website Anda serta produk atau jasa. Seringkali situs-situs pihak ketiga memungkinkan Anda menjaga brand dan memberikan akses ke jutaan pembeli potensial dengan harga yang jauh lebih sedikit daripada biaya iklan besar. Percobaan dengan berbagai pilihan dapat mengukur pengembalian terbaik atas investasi Anda.
3.  Daftar Inventarisasi Lengkap
Tidak ada gunanya membawa pelanggan ke website e-commerce hanya untuk mengecewakan mereka dengan pengalaman yang kurang menyenangkan dibanding toko fisik. Pelanggan yang sudah akrab dengan produk Anda hanya ingin menemukan barang-barang yang lengkap di situs web Anda. Jika Anda hanya menawarkan beberapa pilihan mungkin akan mengganggu pelanggan setia dan menciptakan kesan kurang ideal bagi pelanggan potensial.
4.  Meningkatkan Peringkat Pencarian
Anda tidak perlu menjadi ahli dalam optimalisasi mesin pencari untuk meningkatkan peringkat di situs-situs seperti Google. Ada lima elemen penting untuk mendapatkannya, kebanyakan dari mereka dapat dilakukan dengan mudah dan gratis. Jangan mengandalkan pencarian alami sebagai satu-satunya cara untuk mengarahkan pelanggan ke situs Anda  tapi jadikan sebagai salah satu komponen dari strategi pemasaran dan branding yang komprehensif.
5. Jadilah yang Kompetitif  Dalam Nilai
Jika Anda seorang bisnis online, menjadi kompetitif pada harga adalah suatu keharusan. Namun, Anda tidak harus menjadi yang termurah untuk menjadi sukses. Pikirkan cara-cara lain yang membuat Anda dapat bersaing secara keseluruhan pada nilai  dan pengalaman. Seperti menawarkan gratis ongkos kirim, pengembalian gratis, kemasan premium, nilai tambah hadiah dan keunggulan web e-commerce serta pengalaman pasca-penjualan.
6. Logistik, logistik, logistik
Anda mungkin bisa memiliki website terbaik di dunia serta menakjubkan dengan produk termurah. Tapi itu tidak akan berarti apa-apa jika Anda tidak memiliki penyesuaian dan orang yang ahli dalam solusi logistik di tempat untuk mendapatkan produk yang tepat dengan tepat waktu . Rencana pertumbuhan masa depan, jangan biarkan bisnis Anda sukses dengan memaksa sistem menjadi turun.
7. Perlakukan Staf Customer Service Anda Seperti Dewa
Mereka adalah anggota yang sering dibayar terendah pada tim Anda, tetapi mereka tidak seharusnya diperlakukan seperti itu. Setiap hari, tim customer service Andalah yang berbicara secara langsung kepada orang-orang yang memutuskan apakah akan membeli dari Anda, membeli lagi dari Anda dan mempromosikan Anda ke teman-teman mereka atau tidak. Beri insentif kepadamereka ketika melakukan hal yang luar biasa dan sediakan pelatihan terbaik, sehingga pelanggan Anda merasa seperti dewa juga.

Sumber:
https://blog.jejualan.com/kenali-7-langkah-krusial-agar-web-e-commerce-sukses/
http://www.ehpedia.com/2015/09/apa-itu-ecommerce.html

Nama: Meidiana Dwi Andyni
Kelas: 4IA14
Npm : 55413407
Mata kuliah : pengantar bisnis informatika

Monday, 30 May 2016

PENGANTAR TEKNOLOGI GAME

                                                              GAME JAWARA OF SKY

Initial State




              Game Jawara of Sky merupakan pengembangan dari game sky wars pada contoh game strawberry prolog. Dalam star wars, user memiliki tujuan untuk mengalahkan setiap musuh yang datang hingga pesawat yang kita kendalikan hancur jika terkena setiap benturan dari pesawat ataupun serangan musuh. Namun pada game Jawara of Sky ini memiliki perbedaan dimana didalam permainan terdapat health point (HP) untuk pesawat player sehingga jika terkena satu serangan saja, akan hanya berdampak pada pengurangan HP player dan tidak langsung hancur. Pesawat player akan hancur jika HP sudah habis atau 0%. Kemudian juga perbedaan game Jawara of Sky ini dengan star wars pada prolog terdapat pada timer pada saat bermain. Sehingga game Jawara of Sky mempunyai goal tersendiri yaitu player harus bertahan selama 30 detik. Jika player mampu melewati waktu yang sudah ditentukan, maka player dinyatakan menang. Akan tetapi, jika HP player sudah habis sebelum waktu yang ditentukan berakhir, player dinyatakan kalah dalam pertempuran.


Pada interface game terdapat Menu, Level dan About Me, dimana Menu berisikan New Game, bantuan dan exit,  kemudian Level berisikan pilihan level mana yang akan di mulai, dan About Me sebagai identitas dari pengembang game The Hobbit of Snake.
Pada permulaan awal game akan tampil sebuah splash screen garis beserta video berupa filecopy. Kemudian pada tampilan menu game terdapat pilihan Start, About, Help dan Keluar.



                                       Tampilan pada saat splash screen
 

                                                    Tampilan menu awal


Rules
1.     Menggunakan kontroler W, A, S dan D pada keyboard untuk mengendalikan pesawat player.
2.     Menggunakan K untuk menyerang, Q untuk serangan spesial, P untuk pause saat mulai bermain dan ESC untuk menyerah dalam permainan.
3.     Mengalahkan musuh yang bermunculan hingga mencapai batas waktu tertentu.
4.     Jika player kehabisan health point (HP)  maka player dinyatakan gugur dalm permainan.
5.     Jika player dapat bertahan dan tidak kehabisan HP hingga batas waktu yang telah ditentukan, maka player dinyatakan menang.
Goals
    Dalam permainan Jawara of Sky memiliki tujuan akhir untuk mengalahkan musuh hingga batas waktu yang telah ditentukan. Jika sebelum habis batas waktu dan player telah kehabisan HP, maka player dinyatakan gugur dalam pertempuran.
Screenshot :
                              Tampilan pada saat menang

 




                                                   Tampilan pada saat kalah



konsep AI
AI

Kecerdasan Buatan atau Intelegensi Artifisial (AI) didefinisikan sebagai kecerdasan entitas ilmiah. Sistem seperti ini umumnya dianggap komputer. Kecerdasan diciptakan dan dimasukkan ke dalam suatu mesin (komputer) agar dapat melakukan pekerjaan seperti yang dapat dilakukan manusia. Beberapa macam bidang yang menggunakan kecerdasan buatan antara lain sistem pakar, permainan komputer (games), logika fuzzy, jaringan syaraf tiruan dan robotika.

Konsep AI atau kecerdasan buatan dalam game ini bukanlah seperti pada kebanyakan game yang memiliki AI pada lawannya. Konsep AI pada game ini terdapat dalam sistem permainan itu sendiri. Yaitu dimana sistem permainan dapat mengecek setiap collision (tabrakan) yang terjadi pada player dengan musuh.

Algoritma

Algoritma adalah metode efektif diekspresikan sebagai rangkaian terbatas dari instruksi-instruksi yang telah didefinisikan dengan baik. Algoritma merupakan suatu teknik dalam kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma.
Dalam permainan ini  AI menggunakan algoritma pencarian solusi secara  melebar atau breadth first search (BFS). Dalam algoritma BFS solusi dicari dengan membentuk pohon ruang status yang merupakan pohon dinamis. BFS mencari solusi persoalan pada pohon ruang status yang dibentuk secara dinamis. dengan cara semua simpul pada aras d dibangkitkan terlebih dahulu sebelum simpul-simpul pada aras d+1. Simpul BFS memerlukan sebuah antrian untuk menyimpan simpul-simpul yang akan dibangkitkan. Simpul-simpul yang dibangkitkan disimpan di belakang antrian.
Dalam penerapannya dalam game Jawara of Sky, algoritma BFS terdapat dalam sistem pada game dimana sistem dapat mengecek setiap tabrakan yang terjadi pada player. Adapun sintax BFS yang terdapat dalam game Jawara of Sky adalah sebagai berikut :



 
crash(X1, Y1, X2, Y2) :- !,
  TX1 is ship_left(X1),
  TX2 is ship_right(X1),
  TY1 is ship_up(Y1),
  TY2 is ship_down(Y1),
  do_crash_check(TX1, TX2, TY1, TY2, X2, Y2).

do_crash_check(TX1, TX2, TY1, TY2, X2, Y2) :- is_in_ship(X2, Y2, TX1, TY1), !.
do_crash_check(TX1, TX2, TY1, TY2, X2, Y2) :- is_in_ship(X2, Y2, TX1, TY2), !.
do_crash_check(TX1, TX2, TY1, TY2, X2, Y2) :- is_in_ship(X2, Y2, TX2, TY1), !.
do_crash_check(TX1, TX2, TY1, TY2, X2, Y2) :- is_in_ship(X2, Y2, TX2, TY2), !.

check_collisions(_) :- !, enemy_ships(EShips), enemy_bombs(EBombs), check_es(EShips, NewShips), check_eb(EBombs), retract(enemy_ships(_)), assert(enemy_ships(NewShips)).
check_es([],[]) :- !.
check_es([ship(D, X, Y)|T], []) :- X1 is G_X, Y1 is G_Y, crash(X, Y, X1, Y1), !, bar_ngurang(_).
check_es([ship(D, X, Y)|T], [ship(D, X, Y)|R]) :- survive_enemy(X, Y), !, check_es(T, R).
check_es([ship(D, X, Y)|T], R) :- !, (G_AutoFired is 0 -> G_Score := G_Score + G_PTS else G_Score := G_Score - G_PTS),
  (G_HighScore < G_Score -> G_HighScore := G_Score), G_Difficulty := G_Difficulty + 2, check_es(T, R).

survive_enemy(X, Y) :- !, player_bombs(Bombs), s_e(X, Y, Bombs).

s_e(_, _, []) :- !.
s_e(X, Y, [bomb(AutoFire, BX, BY)|T]) :- is_in_ship(X, Y, BX, BY), !, G_AutoFired := AutoFire, fail.
s_e(X, Y, [bomb(_, _, BY)|T]) :- !, s_e(X, Y, T).

%bbbbbbb pengecekan tubrukan terhadap serangan musuh dddddddddddd
check_eb([]) :- !.
check_eb([bomb(_, BX, BY)|T]) :- X1 is G_X, Y1 is G_Y, is_in_ship(X1, Y1, BX, BY), !, bar_ngurang(_).
check_eb([bomb(_, BX, BY)|T]) :- !, check_eb(T).

=======================================================================================

                               LISTING PROGRAM
?-
%inisialisasi gambar
G_bgawal is bitmap_image("Picture\\bg2.bmp",_),
G_sky is bitmap_image("Picture\\langit.bmp",_),

%--------------------------loading
window(G_layer0,_,window_awal(_),"Loading... ", 540,250,400,300).

window_awal(init):-
    G_batas_line := 145,
    G_batas_text := 0,
    G_waktu is set_timer(_,0.1,fungsi_timer).

fungsi_timer(end):-
    G_batas_line := G_batas_line + 10,
    G_batas_text := G_batas_text + 10,update_window(_),
    (G_batas_text = 110 -> close_window(G_layer0),execute("sound\\menu.exe"),
    window(G_layer1,_,window_menu(_),"Menu progress", 450,100,500,490)).
      
window_awal(paint):-
      
       text_out(150,190,print("loading: " + G_batas_text +" %")),
       animate(_,_,fail(_),"video/FILECOPY.AVI",60,50),
       pen(9,rgb(250,0,0)),
     rect(120,130,270,170),
     pen(15,rgb(0,0,180)),                     
       line(145,150,G_batas_line,150).

%--------------------------tampilan program menu
window_menu(paint) :-
  draw_bitmap(0,0,G_bgawal,_,_),
  text_out(220,190,print("1 - Start")),
  text_out(220,220,print("2 - About")),
  text_out(220,250,print("3 - Help")),
  text_out(220,310,print("4 - Exit")).

%------- Fungsi about ---------
about_game(press) :-
       shell_execute("JOS.html").

%--------- fungsi start ------------
new_window2(press) :-
       beep("sound\\gun.wav"),close_window(G_layer1),
       window( G_layer2, _, window_game(_), "Jawara Of Sky", 450,100,500,500).
    

%----------------------pilihan help----------
pilihan_help(press):-
message("Help","K : untuk menembak\nW : untuk ke atas\nA : untuk ke kiri\nS : untuk ke bawah\nD : untuk ke kanan
\nP : untuk pause\nESC : untuk menyerah",i).


%------------------pilihan keluar-------------
pilihan_exit(press):-
beep("sound\\Lock.wav"),
not(yes_no("konfirmasi","Anda Yakin Ingin Keluar Dari Permainan?", ?)->execute("sound\\cleanmenu.bat"),close_window(G_layer1)).


%+++++++++++++++++++++++++++Gamenya+++++++++++++++++++++++
%----luas area permainan------
width(480) :- !.
height(460) :- !.

%dead or alive?
dead.

%ship data:
ship_half_width(20) :- !.
ship_height(30) :- !.
ship_minship(100) :- !.

%enemies:
enemy_ships([]).
enemy_bombs([]).

%speed:
speed(10) :- !.
%G_EnemySpeed
player_bomb_speed(15) :- !.

%player:
player_bombs([]).

%kalo mokad
die(_) :- !,
execute("sound\\cleangame.bat"),execute("sound\\menu.exe"),
assert(first_sleepint_paint), assert(dead).

%setting difikulnye
start_game(P, S, PTS) :- 
  execute("sound\\bb.exe"),
  execute("sound\\cleanmenu.bat"),
  retract(dead),
  retract(enemy_ships(_)), assert(enemy_ships([])),
  retract(enemy_bombs(_)), assert(enemy_bombs([])),
  width(W), height(H), X is W >> 1, Y is H - 1,
  G_D := 0,
  G_X := X,
  G_Y := Y,
  retract(player_bombs(_)), assert(player_bombs([])),
  (paused -> retract(paused)),
  G_HP:=220,
  G_limit:=31,
  G_info:= 20,
  G_text_HP:=100,
  G_Difficulty := P,
  G_EnemySpeed := S,
  G_DirectionTimer := -100,
  G_PTS := PTS,
  G_Score := 0,
  update_window(_).

%inisialisasi bentuk kapal
is_in_ship(X, Y, PX, PY) :- !,
  ship_left(X) =< PX,
  ship_right(X) >= PX,
  ship_up(Y) =< PY,
  ship_down(Y) >= PY.

%Kalo nabrakk
crash(X1, Y1, X2, Y2) :- !,
  TX1 is ship_left(X1),
  TX2 is ship_right(X1),
  TY1 is ship_up(Y1),
  TY2 is ship_down(Y1),
  do_crash_check(TX1, TX2, TY1, TY2, X2, Y2).

do_crash_check(TX1, TX2, TY1, TY2, X2, Y2) :- is_in_ship(X2, Y2, TX1, TY1), !.
do_crash_check(TX1, TX2, TY1, TY2, X2, Y2) :- is_in_ship(X2, Y2, TX1, TY2), !.
do_crash_check(TX1, TX2, TY1, TY2, X2, Y2) :- is_in_ship(X2, Y2, TX2, TY1), !.
do_crash_check(TX1, TX2, TY1, TY2, X2, Y2) :- is_in_ship(X2, Y2, TX2, TY2), !.

%koordinat batas di dalam pesawat:
R is ship_up(int Y) :- !, ship_height(SH), R0 is Y - SH, R is R0 + 5.
R is ship_down(int Y) :- !, R is Y.
R is ship_left(int X) :- !, ship_half_width(SHW), R is X - SHW.
R is ship_right(int X) :- !, ship_half_width(SHW), R is X + SHW.

%#############penambahan musuh##############
add_enemy(_) :- X is G_LastShipWay, ship_minship(Y), X > Y,
  R0 is random(1000), R1 is G_Difficulty, R2 is R1 >> 1, R0 < R2, !,
  width(W), ship_half_width(HW), W1 is W - HW - HW, XNEW is random(W1) + HW,
  enemy_ships(L), random_left_right(D), ship_height(SHH), L1 is [ship(D, XNEW, SHH)|L],
  retract(enemy_ships(_)), assert(enemy_ships(L1)),
  G_LastShipWay := 0.

add_enemy(_) :- !.
random_left_right(X) :- Y is random(1000), Y < 500, !, X is left.
random_left_right(right) :- !.

%$$$$$$$$$$ Serangan musuh $$$$$$$$$$$$
fire_enemy(X, Y) :- R0 is random(1000), R1 is G_Difficulty, R2 is R1 >> 2, R0 < R2, !,
  enemy_bombs(L), random_speed(S), L1 is [bomb(S, X, Y)|L],
  retract(enemy_bombs(_)), assert(enemy_bombs(L1)).

fire_enemy(X, Y) :- !.

random_speed(S) :- !, S0 is G_EnemySpeed, S1 is S0 / 4, S2 is S0 * 1.5, S3 is S1 * 1000, S4 is S2 * 1000,
  S5 is S4 - S3, INTS5 is integer(S5), R0 is random(INTS5) + S3, S is R0 / 1000.

%$$$$$$$$$ Serangan Player $$$$$$$$$$$$
fire_player(_) :- firing, !, retract(firing), player_bombs(L), X is G_X, Y is G_Y, ship_height(SH), Y1 is Y - SH -7,
  (autofire -> AutoFire := 1 else AutoFire := 0), L1 is [bomb(AutoFire, X, Y1)|L],
  retract(player_bombs(_)), assert(player_bombs(L1)).
fire_player(_) :- !.

update_positions(_) :- !, update_enemies(_), update_bombs(_), update_player_bombs(_), update_player(_).

% {{ UPDATE_ENEMIES:
update_enemies(_) :- !, enemy_ships(L), update_enemy(L, R), retract(enemy_ships(_)), assert(enemy_ships(R)).
update_enemy([], []) :- !.
update_enemy([ship(D, X, Y)|T], R) :- height(H), S is G_EnemySpeed, Y1 is ship_down(Y + S), Y1 > H, !, update_enemy(T, R).
update_enemy([ship(D, X, Y)|T], [ship(D, RX, RY)|R]) :- S is G_EnemySpeed, preserve_direction(D, S, X, RX), !, RY is Y + S, update_enemy(T, R).
update_enemy([ship(D, X, Y)|T], [ship(RD, X, RY)|R]) :- !, S is G_EnemySpeed, RY is Y + S, opposite(D, RD), update_enemy(T, R).
preserve_direction(left, S, X, RX) :- !, RX is X - S, ship_left(RX) >= 0.
preserve_direction(right, S, X, RX) :- !, RX is X + S, width(W), ship_right(RX) < W.
opposite(left, right) :- !.
opposite(right, left) :- !.
% }}

%update enemy bombs:
update_bombs(_) :- !, enemy_bombs(L), update_bomb(L, R), retract(enemy_bombs(_)), assert(enemy_bombs(R)).
update_bomb([], []) :- !.
update_bomb([bomb(S, X, Y)|T], R) :- height(H), Y1 is Y + S, Y1 > H, !, update_bomb(T, R).
update_bomb([bomb(S, X, Y)|T], [bomb(S, X, RY)|R]) :- !, RY is Y + S, update_bomb(T, R).

%update player bombs:
update_player_bombs(_) :- !, player_bombs(L), update_player_bomb(L, R), retract(player_bombs(_)), assert(player_bombs(R)).
update_player_bomb([], []) :- !.
update_player_bomb([bomb(_, X, Y)|T], R) :- player_bomb_speed(S), Y1 is Y - S, Y1 < 0, !, update_player_bomb(T, R).
update_player_bomb([bomb(AutoFire, X, Y)|T], [bomb(AutoFire, X, RY)|R]) :- !, player_bomb_speed(S), RY is Y - S, update_player_bomb(T, R).

%update player:
update_player(_) :- G_DirectionTimer > 0, !, D is G_D, X is G_X, Y is G_Y, speed(S), update_player_impl(S, D, X, Y, RX, RY), G_X := RX, G_Y := RY.
update_player(_) :- !.
update_player_impl(S, 1, X, Y, X, RY) :- Y0 is Y - S, ship_up(Y0) < 0, !, ship_height(RY).
update_player_impl(S, 1, X, Y, X, RY) :- !, RY is Y - S.
update_player_impl(S, 4, X, Y, X, RY) :- Y1 is Y + S, height(H), Y1 >= H, !, RY is H - 1.
update_player_impl(S, 4, X, Y, X, RY) :- !, RY is Y + S.
update_player_impl(S, 2, X, Y, RX, Y) :- X0 is X - S, ship_left(X0) < 0, !, ship_half_width(RX).
update_player_impl(S, 2, X, Y, RX, Y) :- !, RX is X - S.
update_player_impl(S, 3, X, Y, RX, Y) :- X0 is X + S, width(W), ship_right(X0) > W, !, ship_half_width(HW), RX is W - HW.
update_player_impl(S, 3, X, Y, RX, Y) :- !, RX is X + S.
update_player_impl(S, D, X, Y, X, Y) :- !.

%>>>>>>>>>>>>>>>>>Sistem HP<<<<<<<<<<<<<<<<<<<<<
bar_HP(_):-
line(20,80,G_HP,80),
text_out(20,90,print("HP : " + G_text_HP +" %")).

bar_ngurang(_):-
G_text_HP:=G_text_HP - 10,
G_HP:=G_HP - 20,(G_HP = 20 ->tampilan_kalah(_)).



%)))))))))))info pas maen((((((((
tampilan_info(_):-
text_out(G_info,435,print("Tekan P untuk berhenti - Tekan ESC untuk menyerah")).

info_gerak(end):-
  G_info:=G_info-5,(G_info= -250 -> G_info:=500).



%~~~~~~~~~limit maen~~~~~~~~~~~~~~
tampilan_limit(_):-
text_out(250,20,print(G_limit)).

limit_survive(end):-
  G_limit:=G_limit-1,(G_limit=0 ->set_pause(_),
message("You Win !!","\t\tSelamat!! \nAnda Telah Berhasil Bertahan Dari Serangan Musuh",i),die(_),update_window(_)).



%!!!!!!!!notif kalo kalah!!!!!!!!
tampilan_kalah(_):-
die(_),update_window(_),
message("You Lose !!!","\t\tMaaf \nPesawat Anda Telah Hancur dan Anda Dinyatakan Gugur :(",!),
fail.

%***********main************
window_game(init) :- !,
  G_HighScore := 0, G_LastShipWay := 0,
  pen(5, rgb(0,0,0)),
  X is 1/30,
  G_limit := set_timer(_,1.0,limit_survive),
  G_gerak := set_timer(_,0.1,info_gerak),
  G_Timer := set_timer(_, X, do_timer),
  fail.

%********* Tampilan main *************
window_game(paint):- 
  G_player_color:=brush(rgb(0,0,0)), G_enemy_color:=brush(rgb(200,0,200)), G_Red:=brush(rgb(250,0,0)),
  width(W), height(H),
  brush(rgb(10, 10, 10)),
  draw_bitmap(0,0,G_sky,_,_),
  paint_score(_),
  not(dead),
  brush(G_player_color),
  tampilan_limit(_),
  bar_HP(_),
  tampilan_info(_),
  paint_player(_),
  draw_player_bombs(_),
  brush(G_enemy_color),
  draw_enemies(_),
  draw_enemy_bombs(_),
  fail.

window_game(close) :- !,
      kill_timer(G_layer2, G_Timer),
      fail.

%=======================================Bentuk Player
paint_player(_) :- !,
  X is G_X, Y is G_Y,
  X1 is ship_left(X),
  X2 is ship_right(X),
  YY is ship_up(Y),
  fill_polygon(X1+20,Y, X2+10,Y, X+15,YY-20), %badan kanan
  fill_polygon(X1-10,Y, X2-20,Y, X-15,YY-20), %badan kiri
  fill_polygon(X+20,Y, X2+30,Y, X+20,YY),  %sayap kanan
  fill_polygon(X1-30,Y, X-20,Y, X-20,YY),  %sayap kiri
  fill_polygon(X1,Y, X2,Y, X,YY-40),  %badan kapal
  fill_polygon(X+5,Y+10, X2+20,Y+35, X+5,YY+10), %ekor kanan
  fill_polygon(X1-20,Y+35, X-5,Y+10, X-5,YY+10),  %ekor kiri
pen(2,rgb(0,0,255)), 
  line((X,YY,X1,Y),(X,YY,X2,Y),(X1,Y,X2,Y)).


%~~~~~~~~~~~~~ Menu pada saat pemilihan level ~~~~~~~~~~
paint_score(_) :- dead, !,
 
  text_out(197,40,"Select Level"),
  text_out(180, 80, "1 - Easy"),
  text_out(180, 110, "2 - Normal"),
  text_out(180, 140, "3 - Don't Try This"),
  text_out(180, 170, "4 - Back To Main Menu"),
 
  text_out(180, 260, "F12 - Help"),
  text_out(180, 230, "HighScore"),
  text_out(260, 230, ":"),
  text_out(280, 230, print(G_HighScore)).

paint_score(_) :- !,
 
  text_out(20,20,"HighScore"),
  text_out(99,20,":"),
  text_out(114,20,print(G_HighScore)),
  text_out(20,50,"Score"),
  text_out(99,50,":"),
  text_out(114,50,print(G_Score)).

%=======================Bentuk musuhnye==============
draw_enemies(_) :- !, enemy_ships(L), d_e(L).
d_e([]) :- !.
d_e([ship(_, X, Y)|T]) :- !,
  ship_half_width(HW), ship_height(SH),
  X1 is ship_left(X),
  X2 is ship_right(X),
  YY is ship_up(Y),
  fill_polygon(X1,YY, X2,YY, X, Y), d_e(T).

%===================bentuk tembakan musuh===========
draw_enemy_bombs(_) :- !, enemy_bombs(L), d_eb(L).
d_eb([]) :- !.
d_eb([bomb(_, X, Y)|T]) :- !,
  Y1 is Y - 7,
  XX is round(X),
  YY is round(Y),
  YY1 is round(Y1),
  fill_polygon(XX - 1,YY, XX + 1,YY, XX + 1, YY1, XX - 1, YY1), d_eb(T).

%@@@@@@@@@@ bentuk tembakannye @@@@@@@@@@@@@
draw_player_bombs(_) :- !, player_bombs(L), d_pb(L).
d_pb([]) :- !.
d_pb([bomb(AutoFire, X, Y)|T]):- !,
  Y1 is Y + 7,
  XX is round(X),
  YY is round(Y),
  YY1 is round(Y1),
  (Condition is f ->
    (AutoFire is 1 -> brush(G_Red) else brush(G_player_color))
  ),
  fill_polygon(XX+20 ,YY, XX+20 ,YY, XX+20 , YY1, XX+20 , YY1),
  fill_polygon(XX-20 ,YY, XX-20 ,YY, XX-20 , YY1, XX-20 , YY1), d_pb(T).

assert_autofire(_) :- autofire, !, retract(autofire).
assert_autofire(_) :- !, assert(autofire).

set_pause(_) :- paused, !, retract(paused).
set_pause(_) :- !, assert(paused).



%---------------------pilihan kembali-----------
pilihan_back(press):-
beep("sound\\Lock.wav"),
close_window(G_layer2),
window(G_layer1,_,window_menu(_),"Menu progress", 450,100,500,500).

set_moving(D) :- !, G_DirectionTimer := 1, G_D := D.

%bbbbbbbbbbbbbbbb Pengecekan tubrukan terhadap kapal musuh dddddddddddddddddd
check_collisions(_) :- !, enemy_ships(EShips), enemy_bombs(EBombs), check_es(EShips, NewShips), check_eb(EBombs), retract(enemy_ships(_)), assert(enemy_ships(NewShips)).
check_es([],[]) :- !.
check_es([ship(D, X, Y)|T], []) :- X1 is G_X, Y1 is G_Y, crash(X, Y, X1, Y1), !, bar_ngurang(_).
check_es([ship(D, X, Y)|T], [ship(D, X, Y)|R]) :- survive_enemy(X, Y), !, check_es(T, R).
check_es([ship(D, X, Y)|T], R) :- !, (G_AutoFired is 0 -> G_Score := G_Score + G_PTS else G_Score := G_Score - G_PTS),
  (G_HighScore < G_Score -> G_HighScore := G_Score), G_Difficulty := G_Difficulty + 2, check_es(T, R).

survive_enemy(X, Y) :- !, player_bombs(Bombs), s_e(X, Y, Bombs).

s_e(_, _, []) :- !.
s_e(X, Y, [bomb(AutoFire, BX, BY)|T]) :- is_in_ship(X, Y, BX, BY), !, G_AutoFired := AutoFire, fail.
s_e(X, Y, [bomb(_, _, BY)|T]) :- !, s_e(X, Y, T).

%bbbbbbb pengecekan tubrukan terhadap serangan musuh dddddddddddd
check_eb([]) :- !.
check_eb([bomb(_, BX, BY)|T]) :- X1 is G_X, Y1 is G_Y, is_in_ship(X1, Y1, BX, BY), !, bar_ngurang(_).
check_eb([bomb(_, BX, BY)|T]) :- !, check_eb(T).

fire_enemies(_) :- !, enemy_ships(L), f_e(L).
f_e([]) :- !.
f_e([ship(_, X, Y)|T]) :- !, fire_enemy(X, Y), f_e(T).

%\\\\\\\\\\\\\\\\ Perintah2 pada saat pause ///////////////
do_timer(end) :- not(dead), !,
  (paused -> text_out(220,165,"Paused"),
  text_out(130,200,"W/A/S/D : untuk menggerakkan pesawat"),
  text_out(180,230,"K : untuk menyerang"),
  text_out(175,260,"ESC : untuk menyerah"),
 fail),
  (autofire -> assert(firing)),
  fire_player(_),
  fire_enemies(_),
  update_positions(_),
  check_collisions(_),
  S is G_EnemySpeed,
  G_LastShipWay := G_LastShipWay + S,
  add_enemy(_),
  update_window(_),
  fail.

do_timer(end) :- !,
  paint_sleeping(_), fail.

paint_sleeping(_) :- first_sleeping_paint, !, retract(first_sleepint_paint), update_window(_).
paint_sleeping(_) :- !.

%^-------------------------Gamenya----------------------^

 
%------------------------------------------fungsi pencetan di menu awal

       window_menu(key_down(49,_)):-                                 %1
              new_window2(_) .    

       window_menu(key_down(50,_)):-                                 %2
              about_game(_).
      
       window_menu(key_down(51,_)):-                                 %3
              pilihan_help(_).

       window_menu(key_down(52,_)):-                                 %4
              pilihan_exit(_).
      
      

%----------------------pencetan di gamenye

window_game(key_down(87,_)):-                                 %W
              set_moving(1).      

window_game(key_down(65,_)):-                                 %A
              set_moving(2).      

window_game(key_down(68,_)):-                                 %D
              set_moving(3).      

window_game(key_down(83,_)):-                                 %S
              set_moving(4).      

window_game(key_down(80,_)):-                                 %P
              set_pause(_).
      
window_game(key_down(81,_)):-                                 %Q
              assert_autofire(_).
      
window_game(key_down(75,_)):-                                 %K
              not(autofire), assert(firing),execute("nembak.exe").
      
window_game(key_down(27,_)):-                                 %ESC
              die(_), update_window(_).
      
window_game(key_down(49,_)):-                                 %1
              start_game(100, 5,  3), beep("sound\\gun.wav").
      
window_game(key_down(50,_)):-                                 %2
              start_game(150, 7,  5), beep("sound\\gun.wav").
      
window_game(key_down(51,_)):-                                 %3
              start_game(300, 3, 10), beep("sound\\gun.wav").
      
window_game(key_down(52,_)):-                                 %4
              pilihan_back(_).
      
window_game(key_down(123,_)):-                                %F12
              pilihan_help(_).



 GLOSORIUM

Algoritma

Algoritma adalah suatu teknik dalam kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma.

Algoritma Breadth First Search (BFS)
Breadth-first search adalah algoritma yang melakukan pencarian secara melebar yang mengunjungi simpul secara preorder yaitu mengunjungi suatu simpul kemudian mengunjungi semua simpul yang bertetangga dengan simpul tersebut terlebih dahulu. Selanjutnya, simpul yang belum dikunjungi dan bertetangga dengan simpulsimpul yang tadi dikunjungi , demikian seterusnya. Jika graf berbentuk pohon berakar, maka semua simpul pada aras d dikunjungi lebih dahulu sebelum simpul-simpul pad aras d+1.


AI
AI (Artificial Intelligence) yaitu kecerdasan buatan, dimana AI akan mengontrol pergerakan karater yang sudah dibuat dalam menentukan jalur mendapatkan apel dan menghidari dari tabrakan dengan dirinya sendiri dan pembatas yang ada pada area permainan.

HP
Health Point (HP) merupakan sebuah poin atau nilai yang menyatakan sebuah tingkat kesehatan atau nyawa yang tersedia pada awal permainan. Pada umunya HP digunakan untuk memberikan kesempatan hidup player di dalam game, sehingga player tidak mengalami one hit KO (mati seketika jika terkena sekali serang).


         MEIDIANA DWI ANDYNI
                      3IA14
                   55413407