日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > python >内容正文

python

python写井字棋_python 游戏(井字棋)

發(fā)布時(shí)間:2023/12/20 python 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python写井字棋_python 游戏(井字棋) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 游戲思路和流程圖

實(shí)現(xiàn)功能,現(xiàn)實(shí)生活中的井字棋玩法

游戲流程圖SRE實(shí)戰(zhàn) 互聯(lián)網(wǎng)時(shí)代守護(hù)先鋒,助力企業(yè)售后服務(wù)體系運(yùn)籌帷幄!一鍵直達(dá)領(lǐng)取阿里云限量特價(jià)優(yōu)惠。

2. 使用模塊和游戲提示

import random

def game_info():

print('歡迎來(lái)到井字棋游戲')

print('輸入數(shù)字1~9進(jìn)行下棋')

3. 棋盤(pán)顯示

def display_board(checkerboard):

'''棋盤(pán)顯示'''

print(' '.join(checkerboard[6:9]))

print(' '.join(checkerboard[3:6]))

print(' '.join(checkerboard[:3]))

4. 用戶下棋輸入限制

def chess_limited(number,checkerboard):

'''用戶落棋限制

:param number 用戶輸入

:param checkerboard 棋盤(pán)列表

:return 返回驗(yàn)證過(guò)的用戶輸入'''

while True:

if not number.isdigit():

print('請(qǐng)輸入整數(shù)數(shù)字')

elif number not in '1 2 3 4 5 6 7 8 9'.split():

print('請(qǐng)輸入1~9之間的數(shù)字')

elif checkerboard[int(number)-1]!='_':

print('棋盤(pán)上已經(jīng)有棋子了')

else:

break

number = input()

return int(number)

5. 雙選驗(yàn)證

def Double_choice(a,b,hint):

'''雙選擇驗(yàn)證函數(shù)

:param a 第一個(gè)選項(xiàng)值

:param b 第二個(gè)選項(xiàng)值

:param hint 選項(xiàng)信息

:return 返回輸入值'''

choice=''

while choice.lower() !=a and choice.lower() !=b:

print(hint)

choice=input()

return choice

6. 獲勝驗(yàn)證

def referee(choice,checkerboard):

'''判斷誰(shuí)勝利了還是平局'''

if checkerboard[0] == choice and checkerboard[1] == choice and checkerboard[2] == choice:

return True #123

if checkerboard[3] == choice and checkerboard[4] == choice and checkerboard[5] == choice:

return True #456

if checkerboard[6] == choice and checkerboard[7] == choice and checkerboard[8] == choice:

return True #789

if checkerboard[0] == choice and checkerboard[3] == choice and checkerboard[6] == choice:

return True #147

if checkerboard[1] == choice and checkerboard[4] == choice and checkerboard[7] == choice:

return True #258

if checkerboard[2] == choice and checkerboard[5] == choice and checkerboard[8] == choice:

return True #369

if checkerboard[2] == choice and checkerboard[4] == choice and checkerboard[6] == choice:

return True #357

if checkerboard[0] == choice and checkerboard[4] == choice and checkerboard[8] == choice:

return True #159

return False

6. 用戶落子處理

def user_play(user_choice,checkerboard):

'''用戶選擇落子點(diǎn)

:param user_choice 用戶所選棋子

:param checkerboard 棋盤(pán)列表

:param 返回用戶落子完后的棋盤(pán)列表'''

print('請(qǐng)你選擇落子點(diǎn)')

number=chess_limited(input(),checkerboard)

checkerboard[number-1]=user_choice

return checkerboard

7. 電腦落子處理

def compute_play(compute_choice,checkerboard):

'''電腦選擇落子點(diǎn)(電腦ai)

:param compute_choice 電腦所選的棋子

:param checkerboard 棋盤(pán)

:return 電腦下過(guò)的棋盤(pán)'''

copy_win=compute_win(compute_choice,checkerboard)

if copy_win: #電腦獲勝

checkerboard=copy_win

return checkerboard

user_win=prevent_user_win(compute_choice, checkerboard)

if user_win: #阻止用戶獲勝

checkerboard = user_win

return checkerboard

angle=choice_random(compute_choice,checkerboard,[0,2,6,8])

if angle: #角落點(diǎn)

checkerboard =angle

return checkerboard

center=choice_random(compute_choice,checkerboard,[4])

if center: #中心落點(diǎn)

checkerboard = center

return checkerboard

side = choice_random(compute_choice, checkerboard, [1, 3, 5, 7])

if side: #邊落點(diǎn)

checkerboard =side

return checkerboard

return checkerboard

8. 電腦獲勝

def compute_win(compute_choice,checkerboard):

'''獲勝的方法(模擬算法)

:return 獲勝的棋盤(pán), False 沒(méi)有可落子的地方'''

compute_choice=compute_choice.lower()

for i in range(9):

copy_board = checkerboard.copy()

if copy_board[i]=='_':

copy_board[i]=compute_choice

if referee(compute_choice,copy_board):

checkerboard[i] = compute_choice

return checkerboard

return False

9. 阻止玩家獲勝

def prevent_user_win(compute_choice,checkerboard):

'''阻止玩家獲勝(模擬玩家獲勝下子)

:return 阻止用戶獲勝的棋盤(pán) False 沒(méi)有可以阻止的落子'''

user_choice = 'O' if compute_choice.lower() == 'x' else 'X'

user_choice=user_choice.lower()

for i in range(9):

copy_board = checkerboard.copy()

if copy_board[i] == '_':

copy_board[i] = user_choice

if referee(user_choice, copy_board):

#成功阻止玩家獲勝....

checkerboard[i]=compute_choice

return checkerboard

return False

10. 電腦隨機(jī)落點(diǎn)

def choice_random(compute_choice,checkerboard,choice_list):

'''隨機(jī)下棋點(diǎn)'''

for i in choice_list:

if checkerboard[i]=='_':

checkerboard[i]=compute_choice

return checkerboard

return False

11. 游戲主程序

def game_start(user_choice,sequence_flag):

'''游戲核心處理

:param user_choice 用戶所選棋子

:param sequence_flag 決定先后手'''

checkerboard=['_' for i in range(9)] #棋盤(pán)列表

compute_choice = 'O' if user_choice.lower()=='x' else 'X'

if sequence_flag: #顯示棋盤(pán)

print('玩家先走')

else:

checkerboard=compute_play(compute_choice,checkerboard) #電腦先走棋盤(pán)

print('電腦先走')

while True:

display_board(checkerboard)

checkerboard = user_play(user_choice, checkerboard)

if referee(user_choice,checkerboard):

print('用戶贏了...')

display_board(checkerboard)

break

checkerboard = compute_play(compute_choice, checkerboard)

if referee(compute_choice,checkerboard):

print('電腦贏了...')

display_board(checkerboard)

break

if '_' not in checkerboard:

print('平局...')

display_board(checkerboard)

break

12. 游戲外殼

def game_shell():

'''外殼程序'''

game_info() # 游戲開(kāi)始提示

user_choice = Double_choice('x', 'o', hint='請(qǐng)選擇你的棋子 X or O')

sequence_flag = random.randint(0, 1)

game_start(user_choice,sequence_flag)

while True:

message='你想在玩一次嗎(Y or N)'

again_flag=Double_choice('y','n',message)

if again_flag=='n':

break

if sequence_flag:

sequence_flag=0

else:

sequence_flag=1

game_start(user_choice,sequence_flag)

13. 運(yùn)行游戲

game_shell()

掃碼關(guān)注我們

微信號(hào):SRE實(shí)戰(zhàn)

拒絕背鍋 運(yùn)籌帷幄

×

選擇打賞方式:

微信

QQ錢(qián)包

支付寶

打賞

打賞

打賞

多少都是心意!謝謝大家!!!

×

選擇分享方式:

微信掃一掃,分享朋友圈

Or

手機(jī)掃一掃,精彩隨身帶

總結(jié)

以上是生活随笔為你收集整理的python写井字棋_python 游戏(井字棋)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。