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)