python入門遊戲之井字棋例項程式碼
井字棋簡介
井字棋又稱三子棋,英文名為Tic Tac Toe。具體玩法為在一個3x3的棋盤上,一個玩家用X做棋子,另一個玩家用O做棋子,誰先在棋盤上的一行、一列或對角線上畫滿三個棋子,即可獲勝,如果棋盤下滿無人勝出,即為平局。
例項程式碼
#要用的函式,可以在主程式用到時再看
def
panduan1(a,b):``#判斷是否獲勝,返回1則證明此顏色的棋獲勝
x``=``0
if
x``=``=``0``:
for
i
in
range``(``3``):``#檢索二維陣列的第i行
q``=``0``;p``=``0
for
j
in
range``(``3``):``#檢索第i行列表的所有元素
if
a[i][j]``=``=``b:
q``+``=``1``#i行每有一個與所給的b棋的顏色相同,q就加一
if
q``=``=``3``:``#如果此行三個元素都與所給棋的顏色相同,則返回1
return
1
if
a[j][i]``=``=``b:``#i,j位置顛倒,變為檢測每列的三個元素
p``+``=``1``#i列每有一個與所給的b棋的顏色相同,q就加一
if
p``=``=``3``:``#如果此列三個元素都與所給棋的顏色相同,則返回1
return
1
q``=``0``;w``=``0
for
i
in
range``(``3``):``#判斷對角線上的三個元素棋的顏色是否與b棋相同
if
a[i][i]``=``=``b:``#判斷正對角線
q``+``=``1``#正對角線每有一個棋子與b顏色相同,q就加一
if
a[i][``2``-``i]``=``=``b:``#判斷另一條對角線
w``+``=``1``#負對角線每有一個棋子與b顏色相同,w就加一
if
q``=``=``3
or
w``=``=``3``:``#其中一條對角線和b棋顏色全部相同,則返回1
return
1
return
0``#以上條件都未返回值,則執行到這一步,返回0
def
xiaqi(``all``,qi,a):``#將指定qi棋(白棋或黑棋)下到指定的a位置
all``[``int``(qi[``1``])``-``1``][``int``(qi[``0``])``-``1``]``=``a
def
shuru1():``#輸入要下的位置並返回對應的9鍵位置列表
x``=``input``()``#輸入要下棋盤的位置
suoyou``=``'123456789'
if
suoyou.find(x)``=``=``-``1``:``#限制範圍為1-9,模擬的手機的9鍵位置
print``(``'輸入不符合要求:'``)
return
'no'``#不合要求返回no
y``=``0
sum``=``''``#存棋下的位置
for
j
in
range``(``1``,``4``):``#行號,整個迴圈迴圈x次,因為被下邊break語句限制
for
z
in
range``(``1``,``4``):``#列號
y``+``=``1``#迴圈一次加一,用於匹配是否和輸入的數一樣
sum``=``str``(z)``+``','``+``str``(j)``#鍵盤的9個鍵和相應的座標all[j][z]
if
y``=``=``int``(x):``#匹配是否和輸入的數一樣,從1開始,匹配一樣則返回9鍵對應位置列表並中斷迴圈,比如輸入2,返回[2,1],對應9鍵第一行第二列
return``(``sum``.split(``','``))``#返回對應9鍵的位置列表
break
def
panduan2(``all``,x):``#判斷棋盤此位置是否已有棋子
hang``=``int``(x[``1``])
lie``=``int``(x[``0``])
if
all``[hang``-``1``][lie``-``1``]!``=``'-'``:``#只需要判斷此位置是否為'-'號即可
return
1``#返回1,就是此位置已有棋子
else``:
return
0``#返回0,就是此位置沒有棋子
def
dayin(``all``):``#列印函式:用於列印棋盤現在的狀況
for
i
in
range``(``3``):
print``(``' '``.join(``all``[i]))
#主程式開始
all``=``[[``'-'``,``'-'``,``'-'``],[``'-'``,``'-'``,``'-'``],[``'-'``,``'-'``,``'-'``]]``#建立棋盤,“-”號代表棋盤無棋子
t``=``0``;w``=``0
print``(``'遊戲開始!\n黑棋先:'``)
while
t``=``=``0
and
w``=``=``0``:``#利用t,w來分別表明黑白兩棋的獲勝,1為獲勝,初始為0是為了進行一個整體迴圈,直到有一方獲勝,則跳出迴圈
dayin(``all``)
print``(``'輪到黑棋了:'``)``#先下黑棋,識別符號為'1'
hei``=``shuru1()``#輸入黑棋要下的位置
while
hei``=``=``'no'
or
panduan2(``all``,hei)``=``=``1``:``#設定重新輸入判斷命令,在輸入的數不為1-9的數字或此位置有棋時重新輸入,直到輸入正確時退出迴圈
dayin(``all``)``#有誤時先再次列印一次棋盤
print``(``'請重新輸入:'``)
hei``=``shuru1()``#再次輸入1-9數字
xiaqi(``all``,hei,``'1'``)``#下黑棋
t``=``panduan1(``all``,``'1'``)``#判斷黑棋是否獲勝,是則返回1
dayin(``all``)``#再次列印此時棋盤
if
t``=``=``1``:``#判斷hei返回是否為1,是的話代表hei棋獲勝,並退出迴圈
print``(``'黑棋贏!'``)
break
all1``=``all``[``0``]``+``all``[``1``]``+``all``[``2``]``#將棋盤加成一個字串,利於判斷是否還有空位置可下棋
if
all1.count(``'-'``)``=``=``0``:``#如果沒有'-'號,則棋盤被下滿,平局,退出迴圈
dayin(``all``)``#再次列印棋盤,為了好看,可以將這句挪到print下邊
print``(``'平局!'``)
break
print``(``'輪到白棋了:'``)``#以下內容和黑棋下法一樣,是白棋的下法,白棋標識為'0'
bai``=``shuru1()
while
bai``=``=``'no'
or
panduan2(``all``,bai)``=``=``1``:
dayin(``all``)
print``(``'請重新輸入:'``)
bai``=``shuru1()
xiaqi(``all``,bai,``'0'``)
w``=``panduan1(``all``,``'0'``)
if
w``=``=``1``:
print``(``'白棋贏!'``)
dayin(``all``)
all1``=``all``[``0``]``+``all``[``1``]``+``all``[``2``]
if
all1.count(``'-'``)``=``=``0``:
dayin(``all``)
print``(``'平局!'``)
break
print``(``'遊戲結束!'``)
|
執行結果在這啦,快和你的小夥伴一塊玩吧:
總結
到此這篇關於python入門遊戲之井字棋的文章就介紹到這了,更多相關python入門遊戲井字棋內容請搜尋公眾號:python教程入門學習以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援python教程入門學習!
python福利教程領取方式:
1、點贊+評論(勾選“同時轉發”)
2、關注小編。並私信回覆關鍵字【19】
(一定要私信哦~點選我的頭像就能看到私信按鈕了)