Jumat, 10 Juli 2020

Perancangan Game Tic Tac Toe

 

Perancangan Game Tic Tac Toe

KELOMPOK:
MUHAMMAD ALFIANNUR M (54417686)
MUHAMMAD ICHSAN (54417056)
MUHAMMAD RIZKY SAPUTRA (54417232)
MUTHIA AYU NINGTYAS (54417311)
NAUFAL ADIKA ARKANANTA (54417446)
PANCA MUHAMMAD YUSUF (54417676)

Permainan tic tac toe merupakan permainan kertas yang dimainkan oleh 2 pemain, pemain hanya perlu menuliskan huruf X dan O pada bidang 3x3, bagi yang berhasil menuliskan huruf X atau O sejajar dalam satu garis, maka dia memenangkan permainan.

Dalam perancangan game tic tac toe menggunakan bahasa pemrograman python versi 3.6, dimana game ini menggunakan satu library pendukung yaitu library random. Library random merupakan library yang digunakan untuk menghasilkan angka secara acak.

#Pertama kita siapkan perulangan for kedalam list bernama variabel board
board=[i for i in range(0,9)]
player, computer = '',''

# Sudut, Tengah dan lainnya, masing-masing
moves=((1,7,3,9),(5,),(2,4,6,8))
# Untuk memenangkan game diperlukan kombinasi seperti dibawah ini.
winners=((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6))
# Rangenya 1-10
tab=range(1,10)

# Dibawah ini merupakan fungsi pada python bernama print_board yang digunakan untuk membuat board, dimana berisi bidang 3x3 (9 kotak).
def print_board():
    x=1
    for i in board:
        end = ' | '
        if x%3 == 0:
            end = ' \n'
            if i != 1: end+='---------\n';
        char=' '
        if i in ('X','O'): char=i;
        x+=1
        print(char,end=end)

# Fungsi ini digunakan pada saat memainkan, terdapat 2 buah tanda yaitu huruf  X dan O. Jika kita sebagai user memainkan game ini, nanti komputer akan melawan kita dengan cara mencari bidak yg belum dipilih dengan menghasilkan nilai random dengan memunculkan angka batas tertinggi.
def select_char():
    chars=('X','O')
    if random.randint(0,1) == 0:
        return chars[::-1]
    return chars

# Fungsi ini digunakan untuk kita sebagai user bisa bergerak dalam bidang permainan
def can_move(brd, player, move):
    if move in tab and brd[move-1] == move-1:
        return True
    return False

# Fungsi ini untuk menentukan apakah pemain dapat memenangkan permainan atas komputer atau mengalami kekalahan.
def can_win(brd, player, move):
    places=[]
    x=0
    for i in brd:
        if i == player: places.append(x);
        x+=1
    win=True
    for tup in winners:
        win=True
        for ix in tup:
            if brd[ix] != player:
                win=False
                break
        if win == True:
            break
    return win

# Fungsi ini digunakan untuk pemain agar dapat bergerak dalam bidang permainan
def make_move(brd, player, move, undo=False):
    if can_move(brd, player, move):
        brd[move-1] = player
        win=can_win(brd, player, move)
        if undo:
            brd[move-1] = move-1
        return (True, win)
    return (False, False)

# Fungsi ini berisi AI dalam permainan, AI komputer digunakan untuk menggerakan bidang yg berisikan bot komputer. AI bergerakan secara random dengan cara menutup segala kemungkinan jalan yang dapat memenangkan pemain.
def computer_move():
    move=-1
    # If I can win, others don't matter.
    for i in range(1,10):
        if make_move(board, computer, i, True)[1]:
            move=i
            break
    if move == -1:
        # If player can win, block him.
        for i in range(1,10):
            if make_move(board, player, i, True)[1]:
                move=i
                break
    if move == -1:
        # Otherwise, try to take one of desired places.
        for tup in moves:
            for mv in tup:
                if move == -1 and can_move(board, computer, mv):
                    move=mv
                    break
    return make_move(board, computer, move)

# Fungsi ini digunakan apabila bidak permainan sudah penuh, maka fungsi ini akan membalikan nilai bahwa bidak sudah penuh
def space_exist():
    return board.count('X') + board.count('O') != 9

# Listing program ini merupakan program utama yang menghubungkan seluruh fungsi, disini menentukan apakah oemain dapat memenangkan permainan atau kalah. Disini jika pemain mengisikan nomor lebih dari angka 9, maka sistem akan memberitahukan pemain agar untuk memasukan angka yang benar
player, computer = select_char()
print('Player is [%s] and computer is [%s]' % (player, computer))
result='%%% Deuce ! %%%'
while space_exist():
    print_board()
    print('# Make your move ! [1-9] : ', end='')
    move = int(input())
    moved, won = make_move(board, player, move)
    if not moved:
        print(' >> coba lagi !')
        continue
    #
    if won:
        result='*** KAMU MENANG !!! ***'
        break
    elif computer_move()[1]:
        result='=== Kamu kalah ! =='
        break;

print_board()
print(result)

Rabu, 20 Mei 2020

Selasa, 21 April 2020

Kamis, 19 Maret 2020

Teori Game dan Contoh Coding Sederhana

Video Mengenai Teori Game





Contoh script game sederhana

Jawab :
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Belajar jQuery untuk permainan</title>
<script src="jquery-3.1.1.min.js"></script>
<script>
$(document).ready(function() {

     // generate angka acak 1-12
     var angka = Math.floor((Math.random() * 12) + 1);

     // tambah awalan agar sesuai dengan id box, misal: box3
     var box_ajaib = "box"+angka;

     // siapkan variabel counter
     var jumlah_klik = 0;
     var ketemu = "belum";
     $("div").click(function() {

     // hitung jumlah klik   
     jumlah_klik++;
     $("#hitung").html("Jumlah Klik = "+jumlah_klik);

       // ubah warna background box
       if ($(this).attr("id")==box_ajaib) {
        $(this).css("background-color","yellow");
        ketemu = "sudah";
       }
       else {
        $(this).css("background-color","black");
       }
       // cek hasil game
       if ((ketemu=="sudah") && (jumlah_klik <= 5)) {
        $("#hasil").html("You Win!");
       }
       if ((ketemu=="belum") && (jumlah_klik >= 5)) {
        $("#hasil").html("Game Over...Silakan coba lagi!");
       }
   });
 });
</script>
<style>
    div {
        width: 70px;
        height: 70px;
        background-color: silver;
        border: 2px solid black;
        padding: 0 10px;
        float: left;
        margin: 5px;
        cursor: pointer;
    }
</style>
</head>
<body>
    <h2>Game "Kotak WoW" </h2>
    <p>Anda hanya punya 5 kali klik untuk menemukan kotak Kuning</p>

    <p>Created By:Mohamad Mansur</p>

    <div id="box1"></div>
    <div id="box2"></div>
    <div id="box3"></div>
    <br style="clear:both">

    <div id="box4"></div>
    <div id="box5"></div>
    <div id="box6"></div>
    <br style="clear:both">

    <div id="box7"></div>
    <div id="box8"></div>
    <div id="box9"></div>
    <br style="clear:both">

    <div id="box10"></div>
    <div id="box11"></div>
    <div id="box12"></div>
    <br style="clear:both">

    <h3 id="hitung"></h3>
    <h1 id="hasil"></h1>
</body>
</html>


Daftar Referensi

Dspace.uii.ac.id, “Teori Game”, Teori Game, <https://dspace.uii.ac.id/bitstream/handle/123456789/3752/05.2%20bab%202.pdf?sequence=8&isAllowed=y> [diakses 19 Maret 2020].

Media.neliti.com, “Perancangan Game Mobile Android Bergenre Horror”, Perancangan Game, Desember 2016, <https://media.neliti.com/media/publications/230947-perancangan-game-mobile-android-bergenre-528845ed.pdf> [diakses 19 Maret 2020].

Codepolitan.com, “Membuat Permainan Sederhana dengan JQuery”, Website Pembelajaran Coding, 14 November 2016, <https://www.codepolitan.com/membuat-permainan-sederhana-dengan-jquery-58285244f1056-14033> [diakses 19 Maret 2020].

Rifqifai.com, “ARTIFICIAL INTELLIGENCE mengenal apa itu ai”, Website Mengenai Informasi AI, 19 Agustus 2016, <https://rifqifai.com/mengenal-apa-itu-ai-artificial-intelligence-kecerdasan-buatan/> [diakses 19 Maret 2020].

Medium.com, “Mengenal Decision Tree dan Manfaatnya”, Website Pengetahuan, 23 Juli 2018, <https://medium.com/iykra/mengenal-decision-tree-dan-manfaatnya-b98cf3cf6a8d> [diakses 19 Maret 2020].
 

Kamis, 05 Desember 2019

vclass3_posttest_54417676_3IA09

Mysql

     MySQL adalah sistem manajemen database relasional open source (RDBMS) dengan client-server model. Sedangkan RDBMS merupakan software untuk membuat dan mengelola database berdasarkan pada model relasional.

    Sebelum dibahas lebih lanjut, ada baiknya bagi kita untuk mengetahui sejarah singkat MySQL. MySQL dibaca MY-ES-KYOO-EL [maɪˌɛsˌkjuːˈɛl]. Beberapa orang bahkan membaca MySQL seperti sedang menyebutkan “my sequel”. MySQL AB, sebuah perusahaan asal Swedia, menjadi yang pertama dalam mengembangkan MySQL di tahun 1994. Hak kepemilikan MySQL kemudian diambil secara menyeluruh oleh perusahaan teknologi Amerika Serikat, Sun Microsystems, ketika mereka membeli MySQL AB pada tahun 2008. Di tahun 2010, Oracle yang adalah salah satu perusahaan teknologi terbesar di Amerika Serikat mengakuisisi Sun Microsystems. Semenjak itulah, MySQL sepenuhnya dimiliki oleh Oracle.

vclass3_pretest_54417676_3IA09

Apa itu NoSql

     Database NoSQL dibuat dengan tujuan khusus untuk model data spesifik dan memiliki skema fleksibel untuk membuat aplikasi modern. Database NoSQL dikenal secara luas karena kemudahan pengembangan, fungsionalitas, dan kinerja dalam berbagai skala. Database NoSQL menggunakan berbagai model data, termasuk dokumen, grafik, nilai kunci, dalam memori, dan pencarian. Halaman ini termasuk sumber daya untuk membantu Anda memahami lebih baik database NoSQL dan mulai menggunakannya.

Perbedaan NoSql dengan SQL
     Mysql merupakan aplikasi pengolah database yang bersifat open source, dikembangkan oleh Oracle (sebelumnya Sun dan MySQL AB). MySQL adalah sebuah perangkat lunak sistem manajemen basis data SQL .
     NoSql merupakan sistem manajemen basis data yang di identifikasikan dengan tidak mematuhi aturan pada model sistem manajemen basis data.
NOSQL adalah database generasi terbaru yang mengarahkan kepada database yang tidak berelasi (non-relational), dapat disebarkan kepada siapapun (open-source) dan berskala horisontal (horizontal scale).

vcls2_posttest_54417676_3IA09

Tahapan Normalisasi

Berikut ini adalah tahapan normalisasi.Penjelasan lebih rinci akan diberikan pada modul 12. Bentuk normal kedua (2NF)adalah lebih baik dari bentuk normal kesatu (1NF); bentuk normal ketiga  (3NF)adalah  lebih  baik  dari Bentuk  normal  kedua 2NF.  Untuk  kepentingan  rancangan database  bisnis, bentuk  normal  ketiga  (3NF)adalah  bentuk  terbaik  dalam  proses normalisasi (sudah  mencukupi).  Normalisasi  dengan  level  paling  tinggi tidak selalu diharapkan.  Jadi normalisasi  dilakukan,  sepanjang  dirasa sudah  cukup normal (denganmengikuti  prasyarat normalisasi diatas).

Bentuk Normal Kesatu (1NF)
Suatu relasi dikatakan sudah memenuhi bentuk normalkesatu bila setiap data bersifat atomik yaitu setiap irisan baris dan kolom hanya mempunyai satu nilai data Tujuan 1NF adalah: Membuang adanya pengulangan (Redudansi) data, Menghindari adanya pencatatan Null Value, dan Menjaga setiap entry data dari relasi (perpotongan bariskolom) memiliki maksimal satu nilai tunggal.

Bentuk Normal Kedua (2NF)
Suatu  relasi  dikatakan  sudah  memenuhi bentuk normalkedua  bila  relasi  tersebut  sudah memenuhi bentuk normalkesatu, dan atribut yang bukan key sudah tergantung penuhterhadap keynya.

Bentuk Normal Ketiga (3NF)Suatu  relasi  dikatakan  sudah  memenuhi bentuk normal  ketigabila  relasi  tersebut  sudah memenuhi bentuk normal keduadan atribut yang bukan key tidak tergantung transitif terhadapkeynya.

Boyce Codd Normal Form (BCNF)Suatu relasi R dikatakan dalam bentuk BCNFjika dan hanya jikasetiap atribut kunci (Key) pada suatu relasi adalah kunci kandidat(candidate key).

vcls2_pretest_54417676_3IA09

Kapan teknik normalisasi digunakan dalam pengembangan database

    Pada dasarnya normalisasi merupakan teknik yang formal yang bisa digunakan di tahap manapun dalam perancangan sistem database. Namun pada umumnya ada dua pendekatan tentang penggunaan normalisasi. Yang pertama adalah pendekatan 'bottom-up' dan yang kedua disebut pendekatan 'top-down'.
     Suatu  rancangan  database  disebut  buruk  jika  terdapat  beberapa  fakta  berikut  ini:  data yang  sama  tersimpan  di  beberapa  tempat  yang  berbeda,  tidak  mampu  untuk  menghasilkan informasi    tertentu,    kehilangan    informasi,    terjadi    duplikasi    data    (pengulangan)    yang menyebabkan pemborosan ruang penyimpanan serta timbulnya null value. Fakta ini disebabkan oleh adanya anomali (penyimpangan).
   Pada  bentuk  normal,  setiap  baris  dalam  suatu  tabel  harus  unik,setidaknya  pada  satu atribut  yang  disebut  sebagai  primary  key.  Tabel-tabel  pada  database dihubungkan  dengan menanamkan primary key dari suatu tabel ke tabel yang berhubungan sebagai foreign key. Nilai atribut di setiap kolom harus dari kelas atau tipe data yang sama. Dan setiap kolom pada tabel harus memiliki nama yang unik.

Senin, 02 Desember 2019

vcls1_posttest_54417676_3IA09

Post Test Optimasi Query

Dalam sistem basis data, pengoptimasian query begitu penting agar kinerja sistem dan waktu respon antara sistem ke user bisa diminimalkan. Intinya dalam pengoptimalan query yaitu mencari jalur terpendek untuk menemukan data yang ingin dicari.
Tak hanya optimasi query, perlunya tunning sql agar dapat mengurangi waktu respon juga sangat penting. Karena dapat mampu menyeimbangkan antara kerja sistem dengan respon user.

vcls1_pretest_54417676_3IA09

Pretest Optimasi Query
Optimasi Query adalah proses untuk menganalisa sumber apa saja yang dipakai oleh query tersebut dan apakah sumber tersebut dapat dikurangi tanpa merubah output nantinya. Lebih jelasnya optimasi query adalah prosedur untuk menyelesaikan suatu kasus dengan strategi evaluasi yang lebih efektif agar mempercepat proses eksekusinya. Optimasi query dapat dilakukan dengan mengoptimalkan ekspresi aljabar yang digunakan. Ada beberapa ekspresi query aljabar, yaitu :
  • Selection
  • Projection
  • Cross Product
  • Union
  • Self-Different
Selain pengoptimalan query sangat penting, ada hal yang tak kalah penting lagi yaitu SQL Tunning. SQL Tunning bertujuan untuk mengurangi waktu respon sistem kepada user, mengurangi dan menyeimbangkan beban kerja sistem.