Jumat, 10 Juli 2020

Tugas 4 Pengantar Teknologi Game


Perancangan Game Tic Tac Toe

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.




Game sederhana ini kami buat dalam rangka memenuhi tugas kuliah Pengantar Teknologi Game.
Berikut ini merupakan penjelasan dari source code yang kami gunakan dalam game tersebut :

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

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)

Berikut ini adalah demo game tic tac toe yang telah kamu buat :
Demikian penyampaian tugas yang telah kami buat, maaf jika masih banyak kekurangan dalam penulisan maupun pembuatan game tersebut.



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


Teori Komputasional dan Implementasi Di Bidang Lain

  Pengertian Komputasi Komputasi sebetulnya bisa diartikan sebagai cara untuk menemukan pemecahan masalah dari data input dengan menggunakan...