Minggu, 05 April 2015

Komputasi Modern

KOMPUTASI MODERN


  • SEJARAH KOMPUTASI MODERN

 Sejarah Komputasi Modern bermula dari komputasi adalah adanya perhitungan-perhitungan angka yang dilakukan manusia. Manusia telah mengenal angka dan perhitungan sejak berabad-abad yang lalu. Bangsa romawi pun telah dapat menghitung sistem kalender dan rasi bintang. Seiring dengan perkembangan zaman manusia pun melakukan perhitungan-perhitungan yang lebih kompleks. Otak manusia juga mengalami keterbatasan dalam menghitung angka yang jumlahnya bisa berdigit-digit, kemudian diciptakan alat sempoa untuk menghitung, kemudian dekembangkan menjadi kalkulator, Karena semakin berkembangnya alat dan kebutuhan semakin banyak pula data-data yang ingin dihitung, dan mulailah ide pembuatan untuk membuat komputer sebagai alat hitung dengan konsep komputasi modern. Tidak hanya itu, komputer yang diciptakan hingga sekarang ini bukan menjadi sebuah alat yang digunakan untuk menghitung, tapi juga bisa menyimpan,mengedit dan mengolah kata serta masih banyak lagi kegunaan dan kelebihan yang dimiliki oleh komputer.

 Sejarah komputer modern dimulai dengan dua teknologi yang terpisah- perhitungan otomatis dan dapat di program-tapi tidak ada satu perangkat pun yang dapat dikatakan sebagai komputer, karena sebagian penerapan yang tidak konsisten istilah tersebut. Contoh-contoh awal perangkat penghitung mekanis termasuk sempoa (yang berasal dari sekitar 150-100 SM).  Seorang pahlawan dari Alexandria (sekitar 10-70 AD) membangun sebuah teater mekanis yang diadakan bermain berlangsung 10 menit dan dioperasikan oleh sebuah sistem yang kompleks dengan tali dan drum yang dipakai sebagai sarana untuk memutuskan bagian dari mekanisme. Ini adalah inti dari programmability.

 Salah satu tokoh yang sangat mempengaruhi perkembangan komputasi modern adalah John von Neumann (1903-1957), Beliau adalah ilmuan yang meletakkan dasar-dasar komputer modern.Von Neumann telah menjadi ilmuwan besar abad 21. Von Neumann memberikan berbagai sumbangsih dalam bidang matematika, teori kuantum, game theory, fisika nuklir, dan ilmu komputer  yang di salurkan melalui karya-karyanya . Beliau juga merupakan salah satu ilmuwan yang terkait dalam pembuatan bom atom di Los Alamos pada Perang Dunia II lalu.

 Adapun sejarah singkat dari perjalanan hidup dari Von Neumann , dilahirkan di Budapest, Hungaria pada 28 Desember 1903 dengan nama Neumann Janos. Dia adalah anak pertama dari pasangan Neumann Miksa dan Kann Margit.Nama keluarga diletakkan di depan nama asli. Sehingga dalam bahasa Inggris, nama orang tuanya menjadi Max Neumann. Pada saat Max Neumann memperoleh gelar, maka namanya berubah menjadi Von Neumann. Setelah bergelar doktor dalam ilmu hukum, dia menjadi pengacara untuk sebuah bank. Pada tahun 1903, Budapest merupakan  tempat lahirnya para manusia genius dari bidang sains, penulis, seniman dan musisi.Von Neumann belajar berbagai tempat dan beberapa tempatnya di Berlin dan Zurich. Di tempat itu beliau mendapatkan diploma pada bidang teknik kimia pada tahun 1926. Pada tahun yang sama dia mendapatkan gelar doktor pada bidang matematika dari Universitas Budapest. Keahlian Von Neumann terletak pada bidang teori game yang melahirkan konsep seluler automata, teknologi bom atom, dan komputasi modern yang kemudian melahirkan komputer. Kegeniusannya dalam bidang matematika telah terlihat semenjak kecil dengan mampu melakukan pembagian bilangan delapan digit (angka) di dalam kepalanya.Von Neumann sangat tertarik pada hidrodinamika dan kesulitan penyelesaian persamaan diferensial parsial nonlinier yang digunakan, Von Neumann kemudian beralih dalam bidang komputasi. Von Neumann menjadi seorang konsultan pada pengembangan komputer ENIAC, dia merancang konsep arsitektur komputer yang masih dipakai sampai sekarang. Arsitektur Von Nuemann adalah seperangkat komputer dengan program yang tersimpan (program dan data disimpan pada memori) dengan pengendali pusat, I/O, dan memori.

  • KOMPUTASI MODERN

 Secara umum iIlmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numerik serta penggunaan komputer untuk menganalisis dan memecahkan masalah-masalah ilmu (sains). Dalam penggunaan praktis, biasanya berupa penerapan simulasi komputer atau berbagai bentuk komputasi lainnya untuk menyelesaikan masalah-masalah dalam berbagai bidang keilmuan, tetapi dalam perkembangannya digunakan juga untuk menemukan prinsip-prinsip baru yang mendasar dalam ilmu.

 Komputasi Modern Komputasi adalah cara untuk menyelesaikan sebuah masalah dari inputan data dengan menggunakan algoritma. Secara umum ilmu komputasi adalah bidang ilmu yang mempunyai perhatian pada penyusunan model matematika dan teknik penyelesaian numerik serta penggunaan komputer untuk menganalisis dan memecahkan masalah-masalah ilmu (sains). Bidang ini berbeda dengan ilmu komputer (computer science), yang mengkaji komputasi, komputer dan pemrosesan informasi. Bidang ini juga berbeda dengan teori dan percobaan sebagai bentuk tradisional dari ilmu dan kerja keilmuan. Dalam ilmu alam, pendekatan ilmu komputasi dapat memberikan berbagai pemahaman baru, melalui penerapan model-model matematika dalam program komputer berdasarkan landasan teori yang telah berkembang, untuk menyelesaikan masalah-masalah nyata dalam ilmu tersebut. Dalam kerjanya komputasi modern menghitung dan mencari solusi dari masalah yang ada, dan perhitungan yang dilakukan itu meliputi:
  1. Akurasi (big, Floating point)
  2. Kecepatan (dalam satuan Hz)
  3. Problem Volume Besar (Down Sizzing atau pararel)
  4. Modeling (NN & GA) 
  5.  Kompleksitas (Menggunakan Teori big O)

Adapun karakteristik dari Komputasi Modern, karakteristik komputasi modern ada 3 macam, yaitu :
  1. Komputer-komputer penyedia sumber daya bersifat heterogenous karena terdiri dari berbagai jenis perangkat keras, sistem operasi, serta aplikasi yang terpasang.
  2. Komputer-komputer terhubung ke jaringan yang luas dengan kapasitas bandwidth yang beragam.
  3. Komputer maupun jaringan tidak terdedikasi, bisa hidup atau mati sewaktu-waktu tanpa jadwal yang jelas.
Kemudian adapun jenis-jenis Komputasi Modern, jenis-jenis komputasi modern ada 3 macam, yaitu :
  1. Mobile Computing atau Komputasi Bergerak Mobile computing (komputasi bergerak) merupakan kemajuan teknologi komputer sehingga dapat berkomunikasi menggunakan jaringan tanpa menggunakan kabel serta mudah dibawa atau berpindah tempat, tetapi berbeda dengan komputasi nirkabel.
  2. Grid Computing Komputasi grid memanfaatkan kekuatan pengolahan idle berbagai unit komputer, dan menggunakan kekuatan proses untuk menghitung satu pekerjaan.
  3. Cloud Computing atau Komputasi Awan Cloud computing adalah perluasan dari konsep pemrograman berorientasi objek abstraksi. Abstraksi, sebagaimana dijelaskan sebelumnya, menghapus rincian kerja yang kompleks dari visibilitas.
SUMBER : 

Senin, 13 Oktober 2014

Perusahaan Berbasis IT


Gamatechno, Dari Jogja untuk Indonesia, menuju Dunia
Gamatechno adalah perusahaan yang memiliki fokus pada pengembangan produk dan solusi teknologi informasi untuk segmen perguruan tinggi, lembaga pemerintah, perusahaan penyedia jasa transportasi dan logistik, serta industri lifestyle.
Sebagai perusahaan yang bergerak di bidang penyedia solusi teknologi informasi, PT Gamatechno Indonesia (Gamatechno) resmi berdiri pada tanggal 4 Januari 2005 dan berkantor pusat di Yogyakarta. Guna meningkatkan layanan kepada lebih dari 240 klien di seluruh Indonesia yang tersebar dari Banda Aceh hingga Papua, pada tahun 2013 Gamatechno membuka kantor cabang di Jakarta.
Seiring dengan perkembangan perusahaan, saat ini Gamatechno memiliki fokus pada pengembangan produk dan solusi teknologi informasi untuk segmen perguruan tinggi, lembaga pemerintah, perusahaan penyedia jasa transportasi dan logistik, serta industri lifestyle. Layanan yang berfokus pada 4 segmen utama tersebut selanjutnya didefinisikan sebagai gtSmartCity Solution, yaitu solusi berbasis sistem dan teknologi informasi guna mewujudkan sebuah kota cerdas dengan ciri less paper, less time, less cash dan less complexity untuk meningkatkan tatanan hidup masyarakat.
Untuk segmen perguruan tinggi, produk unggulan Gamatechno adalah gtCampus Suite yaitu sistem informasi terintegrasi untuk perguruan tinggi yang terdiri atas berbagai software modular yang dirancang sesuai dengan proses bisnis perguruan tinggi mulai dari pengelolaan penerimaan calon mahasiswa, pengelolaan perkuliahan mahasiswa hingga lulus, pengelolaan aset kampus yang meliputi aset sumber daya manusia, keuangan dan aset barang, perpustakaan, penelitian dan beasiswa hingga dashboard system untuk pimpinan kampus.
Untuk segmen lembaga pemerintah, Gamatechno memiliki beberapa produk unggulan, diantaranya adalah gtPerizinan (sistem pengelolaan pelayanan perizinan terpadu), gtAspirasi (sistem pengelolaan aspirasi masyarakat), serta aplikasi gtGroupware (sistem kolaborasi dan arsip perkantoran). Selain produk-produk tersebut, Gamatechno juga melayani pengembangan portal website lembaga dengan konsep citizen centric, serta pengembangan berbagai aplikasi berbasis web lainnya sesuai dengan kebutuhan lembaga.
Untuk segmen transportasi dan logistik, Gamatechno mengembangkan beberapa produk unggulan bagi perusahaan atau organisasi yang bergerak dibidang layanan transportasi dan logistik, yaitu gtFleets (sistem informasi pengelolaan armada), gtSmartTicket System (sistem tiket elektronik berbasis smartcard), serta aplikasi mTransport (aplikasi mobile untuk informasi dan layanan transportasi publik).
Pada segmen lifestyle, Gamatechno mengembangkan produk-produk aplikasi back-end dan front-end untuk beberapa sub industri diantaranya taman hiburan dan wisata, pusat belanja dan entertainment, microfinance, dan industri kesehatan. Beberapa portofolio produk untuk segmen lifestyle ini antara lain eoviz.com (small & medium enterprises resource planning system on cloud), mEvent (aplikasi mobile informasi event), serta mCatalog (aplikasi mobile informasi katalog produk).
Selain pengembangan produk aplikasi berbasis web, mobile, smartcard dan beberapa teknologi terkini lainnya yang dikemas dalam gtSmartCity Solution, Gamatechno juga menyediakan jasa konsultasi IT, audit IT, training IT, serta layanan maintenance sistem dan agregasi konten digital.
Sebagai perusahaan yang berbasis perguruan tinggi, Gamatechno memiliki keunggulan kompetitif yang tidak dimiliki perusahaan lain, yaitu sumber daya dan aset riset yang dimiliki Universitas Gadjah Mada sebagai dasar pengembangan dan inovasi produk serta layanan Gamatechno agar tercipta solusi yang tepat guna bagi masyarakat. Dan untuk melengkapi layanan total kepada pelanggan dan mitra, saat ini Gamatechno telah memiliki anak perusahaan yaitu PT Aino Indonesia yang bergerak dibidang teknologi smartcard, RFId, dan Mobile NFC.

Visi

Menjadi perusahaan penyedia TI terbaik di Indonesia

Misi

Dalam rangka pencapaian visi dan tujuan perusahaan, maka Gamatechno menjabarkan misi-misi perusahaan sebagai berikut :
  1. Mengakomodasi sumber daya, potensi, dan kebutuhan UGM
  2. Mengembangkan solusi TIK yang berkesinambungan
  3. Membangun jejaring kerjasama untuk menumbuhkan industri digital di Indonesia
  4. Memberikan benefit dan value bagi mitra, pelanggan, dan seluruh stakeholder 



Legalitas

Nama Perusahaan
 PT Gamatechno Indonesia 
Alamat Perusahaan
Jalan Cik Di Tiro no. 34, Yogyakarta 55223, Indonesia
Bidang Usaha
Teknologi Informasi dan Komunikasi termasuk pengembangan perangkat lunak, perangkat keras, konsultasi, dan pelatihan di bidang TI
No.Telepon
+62-274-566161
No.Faximile
+62-274-566160
No.NPWP
02.369.197.5-541.000
Akta Pendirian
No. 1/Tgl 04-01-2005, Notaris Sumendro SH
Pengesahan
No. C-08796 HT.01.01.TH.2005
HO
No. 503-0337/1234.GK/2005, Jasa TI dan Komunikasi
SIUP
15/12-05/PB/V/2005, Perdagangan Barang dan Jasa
TDP
120517201161
NPWP
02.369.197.5.541.000
INKINDO
A001 3471-1-120599, Bidang Telematika
Email 
info @ gamatechno.com


Corporate Logo
Daun melambangkan pertumbuhan ilmu pengetahuan dan budaya inovasi.
Kilatan cahaya yang melalui daun tersebut menunjukkan semangat untuk selalu menjadi mitra kerja terbaik untuk memberikan yang paling baik.

Circle of Warranty

Inovasi adalah budaya.

Dari budaya kami memberikan produk dan layanan advanced technology yang tepat untuk pelanggan.

Pelanggan adalah mitra kerja kami.

Untuk itu kami berkomitmen menjalin kerjasama penuh integritas dari awal dan seterusnya.

Bagi kami, puas tidak cukup.

Bekerjasama dan menggunakan produk serta layanan kami haruslah menjadi sebuah pengalaman yang menyenangkan.
 Corporate Values

always be TRUSTED

Teamwork
Resourcefullness
Ultimate Process for Ultimate Product Quality
Satisfy our customer
Truthfullness
Excitement
Dedication



Contact

PHONE
Call us by phone
  +62 274 5661 61
LINKS
Visit our site
FAX
or Send us faximile
  +62 274 5661 60
ADDRESS

  Head Office:
Jalan Cik Di Tiro No. 34
YOGYAKARTA - 55223
INDONESIA

Branch Office:
Gedung UGM - Samator Pendidikan Lantai 10
Jalan Dr. Sahardjo No. 83 - Tebet, Manggarai
JAKARTA SELATAN - 12850
INDONESIA



SUMBER : http://www.gamatechno.com/

Senin, 07 April 2014

Pengantar Teknologi Game

Pengantar Teknologi Game 

Pada penulisan kali ini, saya akan coba membuat penulisan project dari mata kuliah PengantarTeknologi Game. Disini saya akan mencantumkan pengertian dan penjelasan singkat mengenai arti dari setiap point pada penulisan ini. Point-point tersebut diantaranya: Project Name, Project Owner, Project Charter, Project Manager dan Documentasi. Berikut rincian pengertiannya:
1. Project Name

Sebuah project adalah suatu kegiatan yang dilakukan pada saat tertentu untuk mendapatkan khususnya tujuan organisasi dengan batasan waktu dan biaya. Seseorang atau sekelompok orang yang ingin membuat suatu project pasti harus mengetahui project apa atau tema apa yang akan mereka ambil, ini merupakan langkah awal pembuatan project. Maka, dalam penulisannya project name merupakan awal pembuatan penulisan ini, project name adalah nama dari project itu sendiri.
2. Project Owner

Owner atau pemilik dalam bahasa indonesia. Dengan kata lain, Project Owner merupakan seseorang atau instansi yang memiliki proyek atau pekerjaan dan memberikanya kepada pihak lain yang mampu melaksanakannya sesuai dengan perjanjian kontrak kerja. Untuk merealisasikan proyek, seorang owner memiliki kewajiban pokok untuk memberikan dana untuk membiayai proyek. 
3. Project Charter
Project Charter adalah dokumen yang dibuat oleh sponsor atau project initiator yang secara formal mempunyai kewenangan atas suatu project, dan memberikan kewenangan kepada project manager untuk menggunakan resource pada aktivitas-aktivitas project. Selain itu, project charter juga mencakup elemen-elemen persiapan dari skup project (mencakup yang termasuk dan tidak termasuk di dalam project). Project charter juga membantu untuk mengkontrol perubahan terhadap skup selama project berlangsung.
Project Charter merupakan gambaran secara umum project yang akan dilaksanakan, project charter juga merupakan alat untuk mencapai kesepakatan di antara para stakeholder mengenai aspek-aspek utama di dalam project seperti tujuan, skup, deliverables, dan sumberdaya yang dibutuhkan. Project charter membantu dalam mengambil keputusan dan bisa juga sebagai alat komunikasi.


4. Project Manager
Hal utama yang harus dilakukan oleh Project Manager adalah berhubungan langsung dengan tim proyek untuk pihak luar. Mereka bertanggung jawab untuk memberikan laporan mengenai rencana dan program ada kepada user, manajer tingkat atas dan kepada siapa saja yang memerlukan.

Tanggung Jawab Project Manager Secara Khusus Dalam Setiap Fase: Definisi (Definition), Analisis (Analysis), 3. Disain (Design), Pemrograman (programming), Sistem integrasi dan Tes (system integration And Test), Penerimaan (Acceptance), dan Operasi (Operation)
Project Manager dibagi lagi dalan beberapa bagian, diantaranya:
a. Bisnis Analis
Business Analyst yang seringnya kita singkat sebagai BA adalah orang yang bertanggung jawab dalam menerima dan mengumpulkan info business problem dari client & stakeholder, menganalisanya dan kemudian menterjemahkannya kedalam bentuk spesifikasi yang kemudian disetujui oleh pihak client dan bisa dimengerti oleh para programmernya.
b. Fungsional

Perkataan fungsi digunakan dalam berbagai bidang kehidupan manusia, menunjukkan kepada aktivitas dan dinamika manusia dalam mencapai tujuan hidupnya. Dilihat dari tujuan hidup, kegiatan manusia merupakan fungsi dan mempunyai fungsi. Secara kualitatif fungsi dilihat dari segi kegunaan dan manfaat seseorang, kelompok, organisasi atau asosiasi tertentu. Jadi, Fungsional sendiri merupakan kegunaan menurut fungsi dan kedudukannya.
c. QA (Quality Assurance)
QA atau Quality Assurance (Penjamin Kualitas) adalah meyakinkan/menjamin secara kualitas dengan suatu sistematis kerja dan keterbukaan untuk keberhasilan suatu pekerjaan secara keseluruhan organisasi di setiap lini dengan melalui sistem control.
d. User and Accept Test (UAT)
UAT adalah sebuah proses untuk mendapatkan konfirmasi dari seorang SME – Subject Matter Expert(ahli di bidangnya), terutama pemilik atau klien yang mengerti tentang objek yang sedang dalam phase pengetesan, melalui trial atau review yang mofikasi & tambahannya sesuai dengan requirement yang sudah disetujui sebelumnya. Dalam software development, UAT merupakan tahap terakhir dari sebuah project dan dilaksanakan sebelum klien menerima dan mengaplikasikan sistem baru tersebut.
e. System Analist
Analis sistem adalah seseorang yang bertanggung jawab atas penelitian, perencanaan, pengkoordinasian, dan merekomendasikan pemilihan perangkat lunak dan sistem yang paling sesuai dengan kebutuhan organisasi bisnis atau perusahaan. Analis sistem memegang peranan yang sangat penting dalam proses pengembangan sistem. Seorang analis sistem harus memiliki setidaknya empat keahlian: analisis, teknis, manajerial, dan interpersonal (berkomunikasi dengan orang lain).
System Analist meliputi:
- Development System
Adalah tahapan-tahapan pekerjaan yang dilakukan oleh analis sistem dan programmer dalam membangun sistem informasi. Development System adalah keseluruhan proses dalam membangun sistem melalui beberapa langkah. 
f. Bagian-bagian dari Development System, terdapat Programmer, Designer, dan DBA. Berikut rinciannya:
> Programmer
Programmer adalah orang yang bekerja membuat atau merancang sebuah system untuk membantu memudahkan pekerjaan manusia yang menggunakan media Komputer.Programmer adalah individu yang  bertugas dalam hal rincian implementasi, pengemasan, dan modifikasi algoritma serta struktur data, dituliskan dalam sebuah bahasa pemrograman tertentu.

> Designer
Designer adalah seorang perancang atau orang yang mendesain sesuatu, namun desainer lebih lekat kaitannya dengan profesional yang bekerja dilingkup desain yang bekerja untuk merancang sesuatu yang menggabungkan atau bereksplorasi dalam hal estetika dan teknologi. Desainer menjadi kata depan untuk menspesifikasi bentuk pekerjaan apa yang secara profesional digarapnya, seperti desainer fashion, desainer komunikasi visual, desainer interior, desainer grafis, dan sebagainya.

> DBA (Database Administrator)

Seorang database administrator (DBA) adalah orang yang bertanggung jawab untuk desain, pelaksanaan, pemeliharaan dan perbaikan database organisasi. Mereka juga dikenal dengan Database Programmer, dan terkait erat dengan Database Analyst, Database Modeler, Programmer Analyst, dan Systems Manager. Peran mencakup pengembangan dan desain database, pemantauan dan meningkatkan kinerja dan kapasitas database, dan perencanaan kebutuhan perluasan di masa depan.


g. Release Strategy

Strategi sendiri adalah pendekatan secara keseluruhan yang berkaitan dengan pelaksanaan gagasan, perencanaan, dan eksekusi sebuah aktivitas dalam kurun waktu tertentu. Jadi Strategi Rilis adalah sebuah cara untuk mencapai tujuan rilis dari produk apa yang tengah dipasarkan.

h. Release Application

Sementara itu release application merupakan rilisnya atau munculnya sebuah aplikasi atau prduk yang akan dipasarkan.

5. Dokumentasi

a. Check Sheet QA

Check Sheet adalah 
cara yang terstruktur cara untuk mengumpulkan data sebagai bahan untuk menilai proses atau sebagai masukan untuk analisis lain. Check sheet dapat didefiniskan sebagai lembar yang dirancang sederhana berisi daftar hal-hal yang perlukan untuk tujuan perekaman data sehingga pengguna dapat mengumpulkan data dengan mudah, sistematis, dan teratur pada saat data itu muncul  di lokasi kejadian. Data dalam check sheet baik berbentuk data kuantitatif maupun kualitatif dapat dianalisis secara cepat (langsung) atau menjadi masukan data untuk peralatan kualitas lain, misal untuk masukan data Pareto chart.
b. Design Form
Design adalah sebuah hasil akhir dari sebuah proses kreatif, baik itu berwujud sebuah rencana, proposal, atau berbentuk obyek nyata. Disini Design Form merupakan sebuah ilustrasi tata letak dari proyek itu sendiri. Design Form dibuat oleh seorang Designer, yang sudah dijelaskan diatas.
c. Project Schedule / Timeline
Project  Schedule  atau  jadwal  proyek  dibuat  oleh  project  manager  untuk  mengatur  manusia  di dalam  proyek  dan  menunjukkan  kepada  organisasi  bagaimana  pekerjaan  (proyek)  akan dilaksanakan.  Ini  adalah  alat  untuk  memantau  (bagi  project  manager)  apakah  proyek  dan  tim masih terkendali atau tidak.
Project schedule berbentuk kalender yang dihubungkan dengan pekerjaan yang harus dikerjakan dan daftar resource yang dibutuhkan. Sebelum jadwal dibuat, WBS harus terlebih dahulu ada, jika tidak maka jadwal tersebut akan terkesan mengada-ada.

Senin, 18 November 2013

Game Kapal Perang

Game Kapal Perang


Teknologi kian berkembang masa kini hal ini dikarenakan oleh kebutuhan manusa yang semakin bertambah dan bervariasi. Salah satu kebutuhan penting yang harus dimiliki oleh setiap manusia adalah hiburan. Hiburan tersebut dapat dipenuhi oleh hasil dari teknologi, yang dapat berupa game dari skala kecil maupun besar sangat bervariasi, yang dapat dimainkan oleh siapa saja tanpa memandang umur , dari anak-anak hingga orang dewasa. Pada projek ini, penulis akan membahas “game kapal perang”. Kemudian pada kali ini saya menggunakan program aplikasi untuk game kapal perang saya menggunakan bahasa pemrograman strawberry prolog yang dimana game ini merupakan game kecerdasan buatan yang dimana semua orang bisa masuk dalam game ini khususnya untuk kalangan anak – anak dengan mudahnya.

Source Code game Kapal Perang


% Project PKB kelompok 1
% Gunadarma 3IA22

?-G_HighScore := 0, G_LastShipWay := 0,
  G_player_color:=brush(rgb(0,0,128)), G_enemy_color:=brush(rgb(0,128,255)), G_Red:=brush(rgb(255,100,100)),
  window( _, _, win_func(_), "Star Wars", 100, 100, 490, 410).

first_sleeping_paint.

width(480) :- !.
height(380) :- !.

%dead or alive?
dead.

%ship data:
ship_half_width(20) :- !.
ship_height(25) :- !.

ship_minship(70) :- !.

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

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

%player:
player_bombs([]).

%way of the last ship:
%G_LastShipWay

%difficulty:
%G_Difficulty
%difficulty(1000).

die(_) :- !, assert(first_sleepint_paint), assert(dead).

start_game(P, S, PTS) :- !,
  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_ship(_,_,_)), assert(player_ship(null, X, Y)),
  retract(player_bombs(_)), assert(player_bombs([])),
  (paused -> retract(paused)),
  G_Difficulty := P,
  G_EnemySpeed := S,
  G_DirectionTimer := 0,
  G_PTS := PTS,
  G_Score := 0,
  update_window(_).

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

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), !.

%border coordiates inside a ship:
R is ship_up(int Y) :- !, ship_height(SH), R0 is Y - SH, R is R0 + 1.
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.

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) :- !.

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.

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) :- !.



win_func(init) :- !,
  pen(0, rgb(0,0,0)),
  X is 1/30,
  G_Timer := set_timer(_, X, do_timer),
  fail.

win_func(paint):- !,
  width(W), height(H),
  brush(rgb(10, 10, 10)),
  paint_score(_),
  not(dead),
  brush(G_player_color),
  paint_player(_),
  draw_player_bombs(_),
  brush(G_enemy_color),
  draw_enemies(_),
  draw_enemy_bombs(_),
  fail.

win_func(close) :- !,
      kill_timer(_, G_Timer),
      fail.

win_func(key_down(Char, Repetition)) :- dead, !, key_start_game(Char), fail.
win_func(key_down(Char, Repetition)) :- !, key_pressed(Char), fail.

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,Y, X2,Y, X,YY).


paint_score(_) :- dead, !,
  text_out(20, 20, "1 - LEVEL ANAK TK KECIL"),
  text_out(20, 50, "2 - LEVEL ANAK TK BESAR"),
  text_out(20, 80, "3 - LEVEL ANAK SD"),
  text_out(20, 110, "4 - LEVEL ANAK SMP"),
  text_out(20, 140, "5 - DEWA BOS!!!"),
  text_out(20, 170, "F1 - Help"),
  text_out(20, 200, "HighScore"),
  text_out(99, 200, ":"),
  text_out(114, 200, 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)).

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).

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).

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 - 1,YY, XX + 1,YY, XX + 1, YY1, XX - 1, YY1), d_pb(T).


key_pressed(87) :- !, set_moving(1). % W
key_pressed(38) :- !, set_moving(1). % up
key_pressed(65) :- !, set_moving(2). % A
key_pressed(37) :- !, set_moving(2). % <-
key_pressed(68) :- !, set_moving(3). % D
key_pressed(39) :- !, set_moving(3). % ->
key_pressed(83) :- !, set_moving(4). % S
key_pressed(40) :- !, set_moving(4). % down
key_pressed(80) :- !, set_pause(_). % P
key_pressed(81) :- !, assert_autofire(_). % Q
key_pressed(75) :- !, not(autofire), beep, assert(firing). % K
key_pressed(32) :- !, not(autofire), beep,assert(firing). % space
key_pressed(190) :- !, die(_), update_window(_). % dot
key_pressed(X) :- !, G_DirectionTimer := 0, G_D := 0.

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

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

key_start_game(49) :- !, start_game(100, 5,  0). % 1
key_start_game(50) :- !, start_game(150, 7,  1). % 2
key_start_game(51) :- !, start_game(250, 10, 1). % 3
key_start_game(52) :- !, start_game(350, 11, 2). % 4
key_start_game(53) :- !, start_game(500, 17, 4). % 5
key_start_game(83) :- !, start_game(1000, 2, 10). % S
key_start_game(112) :- !, message("Help","Spasi buat nembak\nArah buat gerak\nP - pause\nQ - Senjata rahasia\npoint - quick dead",i). % S
key_start_game(X) :- !.

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

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), !, die(_).
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).

check_eb([]) :- !.
check_eb([bomb(_, BX, BY)|T]) :- X1 is G_X, Y1 is G_Y, is_in_ship(X1, Y1, BX, BY), !, die(_).
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).

do_timer(end) :- not(dead), !,
  (paused -> text_out(200,200,"Paused"), 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(_) :- !.