a为了熟悉Python的语法,我准备用Python写一个三子棋的程序。
首先分析一下三子棋所需的功能:
棋盘的显示
落子程序
胜负判断
计算机落子计算
棋盘我使用二维数组来表示,0代表空,1代表X,-1代表O。
棋盘显示的函数就可以很简单地实现了,代码如下:
1defprintTable(tablelist):
2for xin range(0,3):
3for yin range(0,3):
4if tablelist[x][y]==0:
5print"",
6elif tablelist[x][y]==1:
7print"X",
8elif tablelist[x][y]==-1:
9print"O",
10if y!=2:
11print"",
12if x!=2:
13print"\n-- -- --\n",
在未完成游戏前,需要不断让玩家落子,所以在程序主体部分设置变量来标志游戏进行的状态。
写了很长一段,直接上代码:
1#coding=utf-8
2
3#Initiate the table
4table =[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
5#the state of the game
6state = 1
7#the position
8px =
9py =
10#the state of setting piece
11flag =
12
13defprintTable(tablelist):
14print"\n",
15forxinrange(0, 3):16foryinrange(0, 3):
17iftablelist[x][y]==0:
18print"",19eliftablelist[x][y]==1:
20print"X",21eliftablelist[x][y]==-1:
22print"O",23ify!=2:24print"",25ifx!=2:26print"\n-- -- --\n",27print"\n"
28
29defsetPiece(x, y, tablelist, who):
30ifx>2orx
32ify>2orx
33return-2
34iftablelist[x][y]!=0:35return-1
36else:37ifwho==-1:38tablelist[x][y] = -1
39elifwho==1:
40tablelist[x][y] = 1
41return1
42
43whilestate:44#print the table
45printTable(table)
46#player act
47whileflag!=1:
48px = input("x=")
49py = input("y=")
50flag = setPiece(px-1, py-1, table, 1)
51ifflag==-1:52print"The position has been occupied."
53ifflag==-2:54print"Wrong number!"
55flag =
56#computer act
并没有什么难理解的地方,有些地方我还写了注释,应该是比较好理解的。附上调试效果图:
第一部分就是这样,预计三子棋的程序能写三篇,因为我每天时间比较有限,只能写这么点了,而且最近要期末考试了,挂科的话可就完蛋了。
领取专属 10元无门槛券
私享最新 技术干货