十个步骤简单带你用Python实现一个井字游戏
前言
最近正在学习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实现一个井字游戏相关推荐
- 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2)
导语 上一期我们带大家完成了魔塔游戏每一层的初始化画面的制作: 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(1) 这一期我们会带大家进一步复现我们的魔塔小游戏,主要内容包括英雄类 ...
- 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(3)
导语 上一期我们主要带大家写了勇士类,以及勇士与一些简单的地图元素接触时所触发的事件: 童年经典回忆 | 从零开始带大家用Python撸一个魔塔小游戏呀(2) 这一期我们会带大家进一步复现我们的魔塔小 ...
- 十个小项目带你学会python编程,很简单,识字就行
前言 Python不是一门很难的编程语言,但对于从未有过编程经验的人来说,学习它也需要讲究一定的技巧. 下面,用十个小项目,带你学会python编程. 项目1:自动添加标签项目2:绘制图表项目3:万能 ...
- 用python做一个简单的游戏,用python写一个小游戏
大家好,本文将围绕如何用python做一个简单的小游戏展开说明,python编写的入门简单小游戏是一个很多人都想弄明白的事情,想搞清楚用python做一个简单的游戏需要先了解以下几个事情. 1.Pyt ...
- python建立一个简单的server_使用Python创建一个简易的Web Server
Python 2.x中自带了SimpleHTTPServer模块,到Python3.x中,该模块被合并到了http.server模块中.使用该模块,可以快速创建一个简易的Web服务器. 我们在C:\U ...
- python游戏最简单代码-如何利用Python开发一个简单的猜数字游戏
前言 本文介绍如何使用Python制作一个简单的猜数字游戏. 游戏规则 玩家将猜测一个数字.如果猜测是正确的,玩家赢.如果不正确,程序会提示玩家所猜的数字与实际数字相比是"大(high)&q ...
- 怎么用python编简单游戏_用Python实现一个简单的算术游戏详解
用Python实现一个简单的算术游戏 #!/usr/bin/env python from operator import add, sub from random import randint, c ...
- 用html5做一个简单网页_用Python做一个简单的翻译工具
编程本身是跟年龄无关的一件事,不论你现在是十四五岁,还是四五十岁,如果你热爱它,并且愿意持续投入其中,必定会有所收获. 本文就来自编程教室一位"小"读者的投稿(互助学习1群里的同学 ...
- 绝对干货3000字,手把手带你用Python实现一个量化炒股策略,小白也能看得懂!...
我一直都知道我会变得富有. 我认为自己从来没对此产生过一丝怀疑. --巴菲特 "菜鸟学Python",第"520"篇原创 玩Python这么久了,菜鸟哥写 ...
最新文章
- mysql rand()产生随机整数范围及方法
- Linux排序命令sort详解
- Bitsocket——BCH实时API,为BCH带来无限可能
- 【Flutter】Flutter 拍照示例 ( 拍照并获取照片源码示例 | image_picker 0.7.2+1 | Flutter 最新 SDK 安装 )
- Boost Part III. 函数对象与高级编程 Library 10. Lambda 用法 switch_statement
- MongoDB聚合运算之group和aggregate聚集框架简单聚合(10)
- mysql 建立一棵树_如何存储一颗树到文件或者数据库
- Web存储—本地存储Cookie
- pythonidechart_django+echart数据动态显示的例子
- 19_完成“我的订单”
- 变频器调试工具:ABB Drive Composer
- GUI图形用户界面设计
- python好玩的代码-python有趣的一行代码
- php网站 视频马赛克,如何给视频加马赛克 菜鸟也能学会的视频加马赛克解决方案...
- T-SNE可视化实现
- 老电脑换Linux系统是否会更快,旧电脑不要装Windows!Bodhi Linux系统,小巧强悍,运行更流畅...
- windows下安装redis并设置开机自启动
- 5分钟学会Pixel刷机
- 教程 | 10分钟入门简笔画(哆啦A梦篇)
- Linux_ubuntu系统安装Flash插件
热门文章
- np.argsort详解
- 乘“云”而上,有孚云为教育行业插上翅膀
- 企业成功认定国家专精特新的申报条件
- css html制做王者荣耀网站,CSS3实现王者荣耀匹配人员加载页面的方法
- LiveLink for MATLAB:COMSOL与MATLAB交互
- 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)
- python编程买什么书看_有什么自学python编程的书吗?
- 脏字过滤android代码,asp.NET 脏字过滤算法 修改版
- 格局越大的人,越懂得“藏”的智慧
- 元旦贺卡html,元旦贺卡贺词荟萃