手机版
你好,游客 登录 注册
背景:
阅读新闻

使用 Python 语言开发 tic-tac-toe 游戏

[日期:2013-08-01] 来源:jiabin.tk  作者:佳斌 [字体: ]

  hah,睁大眼睛啦,首先我们得到一个X和Y的值,然后使用他们来检查,他要下的那个位置是不是空的,接下来我会向你解释X和Y他们是肿么工作的:

位置1:Y = 1/3 = 0, X = 1%3 = 1; x -= 1 = 0
位置2:Y = 2/3 = 0, X = 2%3 = 2; X -= 1 = 1
位置3:Y = 3/3 = 1, X = 3%3 = 0; X = 2, Y -= 1 = 0
……
  下面的自己算啊,我直接上结论(靠,Hexo默认的模板不显示表格啊,我在mou上面编辑的时候比下面的漂亮多了!):

Y\X x=0 x=1 x=2
y=2 7 8 9 
y=1 4 5 6 
y=0 1 2 3 

  aha,这个位置和我们键入的是一样的!

print "7|8|9"
print "4|5|6"
print "1|2|3"

if map[Y][X] == " ":
    map[Y][X] = turn
                   
moved = True
done = check_done()

if done == False:
if turn == "X":
    turn = "O"
else:
    turn = "X"
           
except:
    print "You need to add a numeric value"

 嗯,我们给moved变量复制为True,并检查是否结束了,木有结束的话变换角色换下一个人走。

  OK,差不多结束了,假如你只是想Ctrl+C and Ctrl+V的话,下面是全部的代码,希望你学到了点什么,( ^_^ )/~~拜拜。

def print_board():
    for i in range(0,3):
        for j in range(0,3):
            print map[2-i][j],
            if j != 2:
                print "|",
        print ""


def check_done():
    for i in range(0,3):
        if map[i][0] == map[i][1] == map[i][2] != " " \
        or map[0][i] == map[1][i] == map[2][i] != " ":
            print turn, "won!!!"
            return True
       
    if map[0][0] == map[1][1] == map[2][2] != " " \
    or map[0][2] == map[1][1] == map[2][0] != " ":
        print turn, "won!!!"
        return True

    if " " not in map[0] and " " not in map[1] and " " not in map[2]:
        print "Draw"
        return True
       

    return False

 

 

turn = "X"
map = [[" "," "," "],
      [" "," "," "],
      [" "," "," "]]
done = False


while done != True:
    print_board()
   
    print turn, "'s turn"
    print

    moved = False
    while moved != True:
        print "Please select position by typing in a number between 1 and 9,\
        see below for which number that is which position..."
        print "7|8|9"
        print "4|5|6"
        print "1|2|3"
        print

        try:
            pos = input("Select: ")
            if pos <=9 and pos >=1:
                Y = pos/3
                X = pos%3
                if X != 0:
                    X -=1
                else:
                    X = 2
                    Y -=1
                   
                if map[Y][X] == " ":
                    map[Y][X] = turn
                    moved = True
                    done = check_done()

                    if done == False:
                        if turn == "X":
                            turn = "O"
                        else:
                            turn = "X"
               
           
        except:
            print "You need to add a numeric value"

linux
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数

       

评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款