首页 编程教程正文

python井字棋

piaodoo 编程教程 2020-02-22 22:14:44 1520 0 python教程

本文来源吾爱破解论坛

本帖最后由 Vkzhx 于 2020-1-22 18:39 编辑

python小白,自学了一下python,参考书中代码写的井字棋实现,大佬勿喷
[Python] 纯文本查看 复制代码

#一个简单的井字棋游戏,人机对战由random模块实现
import random
#游戏需要的函数
def drawbroad(b):
    print('当前井字棋如下:')
    print(b[1]+'|'+b[2]+'|'+b[3])
    print('-----')
    print(b[4]+'|'+b[5]+'|'+b[6])
    print('-----')
    print(b[7]+'|'+b[8]+'|'+b[9])
def decide():
    r=random.randint(0,1)
    if r==1:
        return True #电脑
    else:
        return False #玩家
def select():
    print('你选择的棋子,O或X.')
    s=input().upper()
    if s=='X':
        return['X','O']
    else:
        return['O','X']
def iswin(b):#判断电脑或玩家是否胜利
    if b[1]==b[2]==b[3]:#最上
        if b[1] !='':#判断位置是否为空,若3个位置为空,也会返回True
            return True
    if b[4]==b[5]==b[6]:#中间
        if b[4] !='':
            return True
    if b[7]==b[8]==b[9]:#下面
        if b[7] !='':
            return True
    if b[1]==b[4]==b[7]:#1
        if b[1] !='':
            return True
    if b[2]==b[5]==b[8]:#2
        if b[2] !='':
            return True
    if b[3]==b[6]==b[9]:#3
        if b[3] !='':
            return True
    if b[1]==b[5]==b[9]:#对角线
        if b[1] !='':
            return True
    if b[3]==b[5]==b[7]:#对角线
        if b[3] !='':
            return True
def computermove(computer,i):
    while True:
        w=random.randint(1,9)
        if i[w]=='':
            i[w]=computer
            print('电脑在位置'+str(w)+'下了棋子.')
            break
        else:
            continue#必须在位置为空处生成棋子
def playermove(player,i):
    while True:
        print('键入你要填入的位置')
        w=int(input())
        if i[w]=='':#判断输入位置是否有棋子
            i[w]=player
            print('玩家在位置'+str(w)+'下了棋子.')
            break
        else:
            print('位置'+str(w)+'已有'+i[w]+',请重填.')
            continue 
#游戏主体
i=['']*10
player,computer=select()
times=1
playertimes=1
computertimes=1
if decide():
    print('电脑先开始走:')
    while True:
        if times==9:#判断平局仍需改进
            print('玩家和电脑平局.')
            break
        if times%2==0:
          print('到玩家走了.')
          playermove(player,i)
          if iswin(i):    
              print('玩家走了'+str(playertimes)+'次后胜利.')
              drawbroad(i)
              break
          else:
              times+=1
              playertimes+=1
              drawbroad(i)
        else:
            print('到电脑走了.')
            computermove(computer,i)
            if iswin(i):
                print('电脑走了'+str(computertimes)+'次后胜利.')
                drawbroad(i)
                break
            else:
                times+=1
                computertimes+=1
                drawbroad(i)  
else:
    print('玩家先开始走,输入1-9位置的随便一个:')
    while True:
        if times==9:
            print('玩家和电脑平局.')
            break
        if times%2 !=0:
            print('到玩家走了')
            playermove(player,i)
            if iswin(i):
                print('玩家走了'+str(playertimes)+'次后胜利.')
                drawbroad(i)
                break
            else:
               times+=1
               playertimes+=1
               drawbroad(i) 
        else:
            print('到电脑走了.')
            computermove(computer,i)
            if iswin(i):
                print('电脑走了'+str(computertimes)+'次后胜利.')
                drawbroad(i)
                break
            else:
               times+=1
               computertimes+=1
               drawbroad(i)
print('游戏结束,按任意键退出游戏...')
Back=input()

版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7917.html

搜索