前言

最近正在学习Python,所以我会出一个关于Python实例的系列文章。

文章里面有什么不对的地方还请大家多多指教

井字游戏总共分为一下十个步骤

第一步

编写一个可以打印出地图的函数。将棋盘设置为一个列表,其中每个索引 1-9 对应数字键盘上的一个数字,因此就会得到一个 3 x 3 的棋盘。

from IPython.display import clear_output
def display_board(board):
clear_output()  s only works in jupyter!
print('   |   |')
print(' ' + board[1] + ' | ' + board[2] + ' | ' + board[3])
print('   |   |')
print('-----------')
print('   |   |')
print(' ' + board[4] + ' | ' + board[5] + ' | ' + board[6])
print('   |   |')
print('-----------')
print('   |   |')
print(' ' + board[7] + ' | ' + board[8] + ' | ' + board[9])
print('   |   |')

测试:在地图列表上运行函数,并根据需要进行调整

test_board = ['*','X','O','X','O','X','O','X','O','X']
display_board(test_board)

第二步

编写一个可以接收玩家输入并将其标记分配为“X”或“O”的函数。
考虑使用while循环不断询问,直到得到正确答案。

def player_input():
marker = ''
while not (marker == 'X' or marker == 'O'):
marker = input('Player 1: Do you want to be X or O? ').upper()
if marker == 'X':
return ('X', 'O')
else:
return ('O', 'X')

测试2:运行该函数以确保它返回所需的输出。

player_input()

第三步

编写一个函数,接收板列表对象、标记(“X”或“O”)和所需位置(数字 1-9)并将其分配给板。

def place_marker(board, marker, position):
board[position] = marker

测试3:使用测试参数运行位置标记功能并显示修改后的地图

place_marker(test_board,'$',8)
display_board(test_board)

第四步

编写一个函数,接收棋盘并检查是否有人赢了

def win_check(board,mark):
return ((board[7] == mark and board[8] == mark and board[9] == mark) or # across the top
(board[4] == mark and board[5] == mark and board[6] == mark) or # across the middle
(board[1] == mark and board[2] == mark and board[3] == mark) or # across the bottom
(board[7] == mark and board[4] == mark and board[1] == mark) or # down the middle
(board[8] == mark and board[5] == mark and board[2] == mark) or # down the middle
(board[9] == mark and board[6] == mark and board[3] == mark) or # down the right side
(board[7] == mark and board[5] == mark and board[3] == mark) or # diagonal
(board[9] == mark and board[5] == mark and board[1] == mark)) # diagonal

测试4:针对我们的 test_board 运行 win_check 函数——它应该返回 True

win_check(test_board,'X')

第五步

编写一个函数,使用 random 模块随机决定哪个玩家先走。您可能想要查找random.randint()返回哪个玩家先去的字符串。

import random
def choose_first():
if random.randint(0, 1) == 0:
return 'Player 2'
else:
return 'Player 1'

第六步

编写一个函数,该函数返回一个布尔值,指示板上的空间是否可用。

def space_check(board, position):
return board[position] == ' '

第七步

编写一个函数来检查地图是否已满并返回一个布尔值。满则为真,否则为假。

def full_board_check(board):
for i in range(1,10):
if space_check(board, i):
return False
return True

第八步

编写一个函数来询问玩家的下一个位置(作为数字 1-9),然后使用步骤 6 中的函数检查它是否是空闲位置。如果是,则返回该位置以备后用。

def player_choice(board):
position = 0
while position not in [1, 2, 3, 4, 5, 6, 7, 8, 9] or not space_check(board, position):
position = int(input('Choose your next position: (1-9) '))
return position

第九步

编写一个函数,询问玩家是否想再玩一次,如果他们想再玩一次,则返回一个布尔值 True。

def replay():
return input('Do you want to play again? Enter Yes or No: ').lower().startswith('y')

第十步

困难的部分来了!使用 while 循环和为运行游戏所做的函数。

print('欢迎来到井字游戏!')
while True:
# 重置地图
theBoard = [' '] * 10
player1_marker, player2_marker = player_input()
turn = choose_first()
print(turn + ' will go first.')
play_game = input('Are you ready to play? Enter Yes or No.')
if play_game.lower()[0] == 'y':
game_on = True
else:
game_on = False
while game_on:
if turn == 'Player 1':display_board(theBoard)
position = player_choice(theBoard)
place_marker(theBoard, player1_marker, position)
if win_check(theBoard, player1_marker):
display_board(theBoard)
print('恭喜!你赢了比赛!')
game_on = False
else:
if full_board_check(theBoard):
display_board(theBoard)
print('平局')
break
else:
turn = 'Player 2'
else:display_board(theBoard)
position = player_choice(theBoard)
place_marker(theBoard, player2_marker, position)
if win_check(theBoard, player2_marker):
display_board(theBoard)
print('玩家2赢了!')
game_on = False
else:
if full_board_check(theBoard):
display_board(theBoard)
print('平局')
break
else:
turn = 'Player 1'
if not replay():
break

今天的内容到这里也就结束了,喜欢的话记得三连哦

十个步骤简单带你用Python实现一个井字游戏相关推荐

  1. 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2)

    导语 上一期我们带大家完成了魔塔游戏每一层的初始化画面的制作: 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(1) 这一期我们会带大家进一步复现我们的魔塔小游戏,主要内容包括英雄类 ...

  2. 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(3)

    导语 上一期我们主要带大家写了勇士类,以及勇士与一些简单的地图元素接触时所触发的事件: 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2) 这一期我们会带大家进一步复现我们的魔塔小 ...

  3. 十个小项目带你学会python编程,很简单,识字就行

    前言 Python不是一门很难的编程语言,但对于从未有过编程经验的人来说,学习它也需要讲究一定的技巧. 下面,用十个小项目,带你学会python编程. 项目1:自动添加标签项目2:绘制图表项目3:万能 ...

  4. 用python做一个简单的游戏,用python写一个小游戏

    大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...

  5. python建立一个简单的server_使用Python创建一个简易的Web Server

    Python 2.x中自带了SimpleHTTPServer模块,到Python3.x中,该模块被合并到了http.server模块中.使用该模块,可以快速创建一个简易的Web服务器. 我们在C:\U ...

  6. python游戏最简单代码-如何利用Python开发一个简单的猜数字游戏

    前言 本文介绍如何使用Python制作一个简单的猜数字游戏. 游戏规则 玩家将猜测一个数字.如果猜测是正确的,玩家赢.如果不正确,程序会提示玩家所猜的数字与实际数字相比是"大(high)&q ...

  7. 怎么用python编简单游戏_用Python实现一个简单的算术游戏详解

    用Python实现一个简单的算术游戏 #!/usr/bin/env python from operator import add, sub from random import randint, c ...

  8. 用html5做一个简单网页_用Python做一个简单的翻译工具

    编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...

  9. 绝对干货3000字,手把手带你用Python实现一个量化炒股策略,小白也能看得懂!...

    我一直都知道我会变得富有. 我认为自己从来没对此产生过一丝怀疑.    --巴菲特 "菜鸟学Python",第"520"篇原创 玩Python这么久了,菜鸟哥写 ...

最新文章

  1. mysql rand()产生随机整数范围及方法
  2. Linux排序命令sort详解
  3. Bitsocket——BCH实时API,为BCH带来无限可能
  4. 【Flutter】Flutter 拍照示例 ( 拍照并获取照片源码示例 | image_picker 0.7.2+1 | Flutter 最新 SDK 安装 )
  5. Boost Part III. 函数对象与高级编程 Library 10. Lambda 用法 switch_statement
  6. MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
  7. mysql 建立一棵树_如何存储一颗树到文件或者数据库
  8. Web存储—本地存储Cookie
  9. pythonidechart_django+echart数据动态显示的例子
  10. 19_完成“我的订单”
  11. 变频器调试工具:ABB Drive Composer
  12. GUI图形用户界面设计
  13. python好玩的代码-python有趣的一行代码
  14. php网站 视频马赛克,如何给视频加马赛克 菜鸟也能学会的视频加马赛克解决方案...
  15. T-SNE可视化实现
  16. 老电脑换Linux系统是否会更快,旧电脑不要装Windows!Bodhi Linux系统,小巧强悍,运行更流畅...
  17. windows下安装redis并设置开机自启动
  18. 5分钟学会Pixel刷机
  19. 教程 | 10分钟入门简笔画(哆啦A梦篇)
  20. Linux_ubuntu系统安装Flash插件

热门文章

  1. np.argsort详解
  2. 乘“云”而上,有孚云为教育行业插上翅膀
  3. 企业成功认定国家专精特新的申报条件
  4. css html制做王者荣耀网站,CSS3实现王者荣耀匹配人员加载页面的方法
  5. LiveLink for MATLAB:COMSOL与MATLAB交互
  6. 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)
  7. python编程买什么书看_有什么自学python编程的书吗?
  8. 脏字过滤android代码,asp.NET 脏字过滤算法 修改版
  9. 格局越大的人,越懂得“藏”的智慧
  10. 元旦贺卡html,元旦贺卡贺词荟萃