Another side of me

Artikel Terbaru

Sunday, June 11, 2017

On June 11, 2017 by Auli in ,    No comments
#Tugas Mata Kuliah Progam Komputer
#tictactoe game
#Dosen Mr Fahmi Mubarok
#Ahmad Haniful Auli-2116100129



import random
#mendefinisakn agar lawan bisa berjalan dengan acak
welcome = ['                       ',
  'AAAAAAA  UU   UU  LL     II    MMM   MMM  EEEEE    II TTTTTTTT SSSSSS',
  'AA   AA  UU   UU  LL     II    MM M M MM  EE       II    TT    SS',
  'AAAAAAA  UU   UU  LL     II 00 MM  M  MM  EEEEE 00 II    TT    SSSSSS',
  'AAA AAA  UU   UU  LL     II    MM     MM  EE       II    TT        SS',
  'AA   AA  UUUUUUU  LLLLLL II    MM     MM  EEEEE    II    TT    SSSSSS',
  ' ',
  '                             2 1 1 6 1 0 0 1 2 9     ',
  ' ',
  'Selamat Datang Di Permainan Tik Tak Too 2017! Sudah tau aturan mainnya?',
  ' ',
  'Kencangkan Sabuk Pengaman Anda dan rasakan Sensasi Tik tak too Yang sebenarnya',
               ]

for line in welcome:
print(line, sep='\n')

def inputKataPemain():
     #Dalam hal ini mendefinisakn fungsi pemain memilih menjadi O atau X
     kata = ''
     while not (kata == 'X' or kata == 'O'):
         print(' ')
         print('Kamu mau jadi yang X atau O?')
         print(' ')
         print('Jangan Sampai Salah Pilih!')
         kata = input().upper()
          # kata yang dimasukkan dalam bentuk karakter kapitalis
     if kata == 'X':
         return ['X', 'O']
     else:
         return ['O', 'X']
        #jika kata yang dipilih X maka komputer secara otomatis akan menjadi sisi yang lain
def PemilihAwal():
     #akan mendefinisikan fungsi dari pemilih awal
     if random.randint(0, 1) == 0:
         return 'Musuh'
     else:
         return 'Kamu'
def gambarPapan(papan):
 
    #mendefinisikan bentuk gambar, gambar berbentuk persegi berisi 9 kotak
     print('   |   |')
     print(' ' + papan[1] + ' | ' + papan[2] + ' | ' + papan[3])
     print('   |   |')
     print('-----------')
     print('   |   |')
     print(' ' + papan[4] + ' | ' + papan[5] + ' | ' + papan[6])
     print('   |   |')
     print('-----------')
     print('   |   |')
     print(' ' + papan[7] + ' | ' + papan[8] + ' | ' + papan[9])
     print('   |   |')

def playAgain():
     #Mendefinisakan player ingin memainkan kembali atau tidak
     print('Mau main lagi ndak?(Ya/Tidak)')
     return input().lower().startswith('y')

def fungsiPindah(papan, kata, arah):
     papan[arah] = kata
#Mendefinisikan fungsi pemindahan pada Permainan

def FungsiMenang(bo, leh):
#Fungsi yang ditampilkan adalah fungsi apabila pemain menang, selain pada fungsi ini berarti pemain kalah
     return ((bo[7] == leh and bo[8] == leh and bo[9] == leh) or #horisontal bawah
     (bo[4] == leh and bo[5] == leh and bo[6] == leh) or #horisontal tengah
     (bo[1] == leh and bo[2] == leh and bo[3] == leh) or #horisontal atas
     (bo[7] == leh and bo[4] == leh and bo[1] == leh) or #vertikal kiri
     (bo[8] == leh and bo[5] == leh and bo[2] == leh) or #vertikal tengah
     (bo[9] == leh and bo[6] == leh and bo[3] == leh) or #vertikal kanan
     (bo[7] == leh and bo[5] == leh and bo[3] == leh) or #diagonal
     (bo[9] == leh and bo[5] == leh and bo[1] == leh)) #diagonal

def GanddakanPapan(papan):
#fungsi menggandakan papan tik tak too yang telah dimainkan
     dupePapan = []
     for i in papan:
         dupePapan.append(i)
     return dupePapan

def PapanKosong(papan, arah):
     return papan[arah] == ' '
#demikian pula pada fungsi papan yang kosong juga ikut.

def FungsiPemindahanPemain(papan):
#Input pemain memindahkan isi X/O
     arah = ' '
     while arah not in '1 2 3 4 5 6 7 8 9'.split() or not PapanKosong(papan, int(arah)):
         print('Silakan Mau Mengisi Papan Berapa? (1-9)')
         arah = input()
     return int(arah)
#Memberikan definisi untuk pemindahan arah dari pemain
def DaftarPilihanArahPindahAcak(papan, arahList):
     KemungkinanArah = []
     for i in arahList:
         if PapanKosong(papan, i):
             KemungkinanArah.append(i)
#Memberikan fungsi random atas pilihan pindah
     if len(KemungkinanArah) != 0:
         return random.choice(KemungkinanArah)
     else:
         return None
#memberikan definisi jika player x maka komputer O
def getComputerMove(papan, computerLetter):
     if computerLetter == 'X':
                playerLetter = 'O'
     else:
         playerLetter = 'X'

#Fungsi utama aturan game Tic Tac Too:
#Pertama, menentukan arah untuk tempat selanjutnya
     for i in range(1, 10):
         copy = GanddakanPapan(papan)
         if PapanKosong(copy, i):
             fungsiPindah(copy, computerLetter, i)
             if FungsiMenang(copy, computerLetter):
                 return i
#setelah ini computer akan mengsisi papan kosong selain yang dipilih pemain
     for i in range(1, 10):
         copy = GanddakanPapan(papan)
         if PapanKosong(copy, i):
             fungsiPindah(copy, playerLetter, i)
             if FungsiMenang(copy, playerLetter):
                 return i

#jika ada sisi kosong pada pojokan maka akan diisi oleh lawan
     arah = DaftarPilihanArahPindahAcak(papan, [1, 3, 7, 9])
     if arah != None:
         return arah

#Setelah mendapatkan sisi pojok maka untuk menang harus mengisi bagian tengah.
     if PapanKosong(papan, 5):
         return 5
     return DaftarPilihanArahPindahAcak(papan, [2, 4, 6, 8])
#apabila papan sudah penuh maka permainan selesai, atau seri
def PapanPenuh(papan):
     for i in range(1, 10):
        if PapanKosong(papan, i):
             return False
     return True

while True:
     #Mereset papan menjadi kosong kembali
     theBoard = [' '] * 10
     KataPemain, computerLetter = inputKataPemain()
     turn = PemilihAwal()
     print(' '  + turn +  'Jalan  Duluan')
     gameIsPlaying = True

     while gameIsPlaying:
         if turn == 'Kamu':
             #fungsi menjelaskan jika kita yang mendapat kesempatan jalan duluan maka komputer akan berjalan setelah itu dengan fungsinya
             gambarPapan(theBoard)
             arah = FungsiPemindahanPemain(theBoard)
             fungsiPindah(theBoard, KataPemain, arah)

             if FungsiMenang(theBoard, KataPemain):
                 gambarPapan(theBoard)
                 print('Selamat bos kamu menang!')
                 gameIsPlaying = False
             else:
                 if PapanPenuh(theBoard):
                     gambarPapan(theBoard)
                     print('Game berakhir seri!')
                     break
                 else:
                     turn = 'Musuh'

         else:
           # Lawan/musuh yang jalan duluan
             move = getComputerMove(theBoard, computerLetter)
             fungsiPindah(theBoard, computerLetter, move)

             if FungsiMenang(theBoard, computerLetter):
                 gambarPapan(theBoard)
                 print('Sayang Sekali Kamu Kalah Bos!')
                 gameIsPlaying = False
             else:
                 if PapanPenuh(theBoard):
                     gambarPapan(theBoard)
                     print('Game berakhir seri!')
                     break
                 else:
                     turn = 'Kamu'
#jika pemain memilih untuk memainkannya lagi maka akan looping ke play again awal, jika tidak maka akan break
     if not playAgain():
         break

0 comments:

Post a Comment

SIlahkan berkomentar, mari berdiskusi. Untuk bantuan atau permintaan bisa email kami. Semoga bermanfaat :)