本文正在参加「Python主题月」,详情查看 活动链接
hello大家好,今天我又发现了个有趣的小玩意。我是专写有趣小玩意的老诗。
相信大家对于井字棋都并不陌生。现在也能找到各种各样的井字棋小游戏玩。那么你们自己是否会编写呢?接下来老诗用python教大家编写井字棋小游戏。
老规矩,先上效果图
井字棋,英文名叫Tic-Tac-Toe,是一种在3 * 3格子上进行的连珠游戏,和五子棋类似,由于棋盘一般不画边框,格线排成井字故得名。游戏需要的工具仅为纸和笔,然后由分别代表O和X的两个游戏者轮流在格子里留下标记(一般来说先手者为X),任意三个标记形成一条直线,则为获胜。
先画格子
def grid():
"Draw tic-tac-toe grid."
line(-67, 200, -67, -200)
line(67, 200, 67, -200)
line(-200, -67, 200, -67)
line(-200, 67, 200, 67)
先是画出四条线。范围是-200~200
画x函数
def drawx(x, y):
"Draw X player."
line(x, y, x + 133, y + 133)
line(x, y + 133, x + 133, y)
这个x其实就是两条线,传入x,y只要计算好位置就可以画出来。
画圆函数
def drawo(x, y):
"Draw O player."
up()
goto(x + 67, y + 5)
down()
circle(62)
o就是画圆,传入x,y后以x + 67, y + 5为圆心,62为半径画出圆。
随意点击,计算位置
def floor(value):
"Round value down to grid with square size 133."
return ((value + 200) // 133) * 133 - 200
state = {'player': 0}
players = [drawx, drawo]
我们要知道,我们用鼠标人工点击的时候,鼠标的位置都是并非标准的。然后我们不制定一个标准画图位置,那么我们点击之后画图的位置就会变歪了。所以我们需要通过我们点击的位置,再计算一个标准的传入位置。
检查点击动作
def tap(x, y):
"Draw X or O in tapped square."
x = floor(x)
y = floor(y)
player = state['player']
draw = players[player]
draw(x, y)
update()
state['player'] = not player
这是在检查点击动作,然后响应,调用画图。
整体而言,游戏并不是太难,也很容易就可以学会。上面的思想还是说的比较清楚的。有需要拿完整源码的话,请移步到公众号:诗一样的代码。既然进来了,原创不易。小伙伴点个赞再走呗。
合集系列: