1. 程式人生 > 程式設計 >python實現簡單井字棋遊戲

python實現簡單井字棋遊戲

井字棋,英文名叫Tic-Tac-Toe,是一種在3*3格子上進行的連珠遊戲,和五子棋類似,由於棋盤一般不畫邊框,格線排成井字故得名。遊戲需要的工具僅為紙和筆,然後由分別代表O和X的兩個遊戲者輪流在格子裡留下標記(一般來說先手者為X),任意三個標記形成一條直線,則為獲勝。

遊戲的難點在於,如何判斷連線成了一條線;橫、豎、斜三個方向;

遊戲的程式碼:

#!/usr/bin/env python3
# -*- coding:utf-8 -*-
u'''
Created on 2019年4月13日

@author: wuluo
'''
__author__ = 'wuluo'
__version__ = '1.0.0'
__company__ = u'重慶交大'
__updated__ = '2019-04-13'


# 建立井字棋的程式
def initBoard():
   global board # 呼叫全域性的board
   board = [None] * 3
   print("井字棋:")
   for i in range(len(board)):
      board[i] = ["+ "] * 3


# 列印井字棋的程式
def printBoard():
   global board
   for i in range(len(board)):
      for j in range(len(board[i])):
         print(board[i][j],end=" ")
      print("")


# 開始下棋的程式
def startGame():
   global board
   player = 0
   while isGameContinue():
      if player <= 8:
         if player % 2 == 0:
            # 甲方下棋
            print("==>黑方下棋")
            if not playChess("x"):
               continue
         else:
            # 乙方下棋
            print("==>白方下棋")
            if not playChess("○"):
               continue
         player += 1
      else:
         print("平局")
         break

def playChess(chess):
   # 獲取位置
   x = int(input("==> X=")) - 1
   y = int(input("==> Y=")) - 1
   if board[x][y] == "+ ":
      board[x][y] = chess
      printBoard()
      return True # 落子成功
   else:
      print("==> 已有棋子 請重新落子\a")
      printBoard()
      return False # 落子失敗


def isGameContinue():
   for i in range(len(board)):
      for j in range(len(board[i])):
         if board[i][j] != "+ ":
            # 橫向
            if j == 0:
               if board[i][j] == board[i][j + 1] == board[i][j + 2]:
                  whoWin(i,j)
                  return False
            # 豎向
            if i == 0:
               if board[i][j] == board[i + 1][j] == board[i + 2][j]:
                  whoWin(i,j)
                  return False
            # 正斜
            if i == 0 and j == 0:
               if board[i][j] == board[i + 1][j + 1] == board[i + 2][j + 2]:
                  whoWin(i,j)
                  return False
            # 反斜
            if i == 2 and j == 0:
               if board[i][j] == board[i - 1][j + 1] == board[i - 2][j + 2]:
                  whoWin(i,j)
                  return False
   return True


def whoWin(i,j):
   if board[i][j] == "x":
      print("黑方勝!")
   else:
      print("白方勝!")
   for i in range(3):
      print("win")


class main():
   board = []
   initBoard()
   printBoard()
   startGame()


if __name__ == "__main__":
   main()

遊戲結果:

python實現簡單井字棋遊戲

python實現簡單井字棋遊戲

還有一種結果是平局:

python實現簡單井字棋遊戲

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。