这个python的小案例是五子棋游戏的实现,在这个案例中,我们可以实现五子棋游戏的两个玩家在指定的位置落子,画出落子后的棋盘,并且根据函数判断出输赢的功能。

这个案例的思路如下所示:

首先,根据棋盘的样子画出棋盘

然后,对棋盘进行初始化,将可以落子的位置进行统一化处理

接下来,就是进入游戏的环节,双方轮流落子,落子后,并将棋盘画出

最后,根据落子的位置判断选手的的输赢情况,游戏结束

五子棋游戏的设计和实现

代码如下:

def main():

print("五子棋游戏".center(50,'='))

guige=int(input("请输入棋盘的规格:"))

#按照五子棋的棋盘样式,画出棋盘

print_init(guige)

# 初始化棋盘

wzq = {}

for i in range(1, guige + 1):

for j in range(1, guige + 1):

wzq[(i, j)] = "+"

#重画棋盘

reprint(guige,wzq)

#按照五子棋的棋盘样式,画出棋盘

def print_init(guige):

#打印出首行的棋盘列

for i in range(guige):

print("%4d"%(i+1),end='')

print()

#双重循环,第一重为棋盘的行,隔一行输出棋盘的行数

for i in range(guige*2-1):

#打印出类似 “1 +---+---+---+---+---+”,行号,+,―

if(i%2==0):

print("%-3d"%((i+2)/2),end='')

#第二重循环,为棋盘的列,主要在于找出对应位置显示的内容

for j in range(guige * 4 - 3):

if (j % 4 == 0):

print("+", end='')

else:

print("-", end='')

#打印出类似“ | | | | | |”

else:

print("%3s"%' ',end='')

for j in range(guige*4-3):

if(j%4==0):

print("|",end='')

else:

print(" ",end='')

#每行输出完成之后换行

print()

#重画棋盘,对双方下子进行重画

def reprint(guige,wzq):

for i in range(guige*guige) :

if i % 2 == 0:

xuanshou = "X"

else:

xuanshou = "O"

# 双方轮流下棋

while 1:

print("现在轮到%s方落子" % xuanshou)

position = input("请输入落子位置:")

x_position = int(position.split()[0])

y_position = int(position.split()[1])

#判断输入的位置是否有子,有子一直输入,直到输入的位置无子

if wzq[(x_position, y_position)] in ["X", "O"]:

print("您输入的位置有子,请重新输入!")

else:

break

if wzq[(x_position, y_position)]=="+":

#重画棋盘

wzq[(x_position, y_position)] = xuanshou

for i in range(guige):

print("%4d"%(i+1),end='')

print()

for i in range(guige*2-1):

if(i%2==0):

print("%-3d"%((i+2)/2),end='')

for j in range(guige * 4 - 3):

if (j % 4 == 0):

x=(i+2)/2

y=j/4+1

print(wzq[(x,y)],end='')

else:

print("-", end='')

else:

print("%3s"%' ',end='')

for j in range(guige*4-3):

if(j%4==0):

print("|",end='')

else:

print(" ",end='')

print()

else:

isture=True

print("您输入的位置已经有子,请重新输入!")

# 判断输赢

# 第一种情况

wzq_win1(wzq,guige,xuanshou)

# 第二种情况

wzq_win2(wzq,guige,xuanshou)

# 第三种情况

wzq_win3(wzq,guige,xuanshou)

# 第四种情况

wzq_win4(wzq,guige,xuanshou)

else:

print("游戏结束,平局!")

# 判断输赢

def wzq_win1(wzq,guige,xuanshou):

# 第一种输赢情况

for i in range(1, guige + 1):

for j in range(1, guige - 3):

if (wzq[(i, j)] == wzq[(i, j + 1)] == wzq[(i, j + 2)] == wzq[(i, j + 3)] == wzq[(i, j + 4)] and wzq[(i, j)] in ["X", "O"]):

print("%s获胜,游戏结束!" % xuanshou)

exit()

def wzq_win2(wzq,guige,xuanshou):

# 第二种输赢情况

for i in range(1, guige - 3):

for j in range(1, guige + 1):

if (wzq[(i, j)] == wzq[(i + 1, j)] == wzq[(i + 2, j)] == wzq[(i + 3, j)] == wzq[(i + 4, j)] and wzq[(i, j)] in ["X", "O"]):

print("%s获胜,游戏结束!" % xuanshou)

exit()

def wzq_win3(wzq,guige,xuanshou):

# 第三种输赢情况

for i in range(1, guige - 3):

for j in range(1, guige - 3):

if (wzq[(i, j)] == wzq[(i + 1, j + 1)] == wzq[(i + 2, j + 2)] == wzq[(i + 3, j + 3)] == wzq[(i + 4, j + 4)] and wzq[(i, j)] in ["X", "O"]):

print("%s获胜,游戏结束!" % xuanshou)

exit()

def wzq_win4(wzq, guige, xuanshou):

# 第四种输赢情况

for i in range(1, guige - 3):

for j in range(5, guige + 1):

if (wzq[(i, j)] == wzq[(i +1, j - 1)] == wzq[(i + 2, j - 2)] == wzq[(i + 3, j - 3)] == wzq[(i + 4, j - 4)] and wzq[(i, j)] in ["X", "O"]):

print("%s获胜,游戏结束!" % xuanshou)

exit()

main()

结果如下:

======================五子棋游戏=======================

请输入棋盘的规格:8

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---+---+---+---+---+---+

| | | | | | | |

4 +---+---+---+---+---+---+---+

| | | | | | | |

5 +---+---+---+---+---+---+---+

| | | | | | | |

6 +---+---+---+---+---+---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到X方落子

请输入落子位置:5 5

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---+---+---+---+---+---+

| | | | | | | |

4 +---+---+---+---+---+---+---+

| | | | | | | |

5 +---+---+---+---X---+---+---+

| | | | | | | |

6 +---+---+---+---+---+---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到O方落子

请输入落子位置:6 1

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---+---+---+---+---+---+

| | | | | | | |

4 +---+---+---+---+---+---+---+

| | | | | | | |

5 +---+---+---+---X---+---+---+

| | | | | | | |

6 O---+---+---+---+---+---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到X方落子

请输入落子位置:4 4

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---+---+---+---+---+---+

| | | | | | | |

4 +---+---+---X---+---+---+---+

| | | | | | | |

5 +---+---+---+---X---+---+---+

| | | | | | | |

6 O---+---+---+---+---+---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到O方落子

请输入落子位置:5 4

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---+---+---+---+---+---+

| | | | | | | |

4 +---+---+---X---+---+---+---+

| | | | | | | |

5 +---+---+---O---X---+---+---+

| | | | | | | |

6 O---+---+---+---+---+---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到X方落子

请输入落子位置:6 6

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---+---+---+---+---+---+

| | | | | | | |

4 +---+---+---X---+---+---+---+

| | | | | | | |

5 +---+---+---O---X---+---+---+

| | | | | | | |

6 O---+---+---+---+---X---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到O方落子

请输入落子位置:6 5

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---+---+---+---+---+---+

| | | | | | | |

4 +---+---+---X---+---+---+---+

| | | | | | | |

5 +---+---+---O---X---+---+---+

| | | | | | | |

6 O---+---+---+---O---X---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到X方落子

请输入落子位置:3 3

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---X---+---+---+---+---+

| | | | | | | |

4 +---+---+---X---+---+---+---+

| | | | | | | |

5 +---+---+---O---X---+---+---+

| | | | | | | |

6 O---+---+---+---O---X---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到O方落子

请输入落子位置:5 6

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---+---+---+---+---+---+---+

| | | | | | | |

3 +---+---X---+---+---+---+---+

| | | | | | | |

4 +---+---+---X---+---+---+---+

| | | | | | | |

5 +---+---+---O---X---O---+---+

| | | | | | | |

6 O---+---+---+---O---X---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

现在轮到X方落子

请输入落子位置:2 2

1 2 3 4 5 6 7 8

1 +---+---+---+---+---+---+---+

| | | | | | | |

2 +---X---+---+---+---+---+---+

| | | | | | | |

3 +---+---X---+---+---+---+---+

| | | | | | | |

4 +---+---+---X---+---+---+---+

| | | | | | | |

5 +---+---+---O---X---O---+---+

| | | | | | | |

6 O---+---+---+---O---X---+---+

| | | | | | | |

7 +---+---+---+---+---+---+---+

| | | | | | | |

8 +---+---+---+---+---+---+---+

X获胜,游戏结束!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

基于python的游戏设计与实现-python五子棋游戏的设计与实现相关推荐

  1. python 单机程序_Python tkinter制作单机五子棋游戏

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于Python家庭,作者Python家庭 实战项目:使用Python ...

  2. python写五子棋游戏下载_python实现简单五子棋游戏

    本文实例为大家分享了python实现简单五子棋游戏的具体代码,供大家参考,具体内容如下 from graphics import * from math import * import numpy a ...

  3. python五子棋游戏_python小项目之五子棋游戏

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 1.项目简介 在刚刚学习完python套接字的时候做的一个五子棋小游戏,可以在局域网内双人对战,也可以和电脑对战 2.实 ...

  4. python五子棋游戏控制台版_python实现五子棋游戏(pygame版)

    本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...

  5. 基于C的α-β剪枝算法实现的AI五子棋游戏

    源码下载 http://www.byamd.xyz/hui-zong-1/ 对抗问题 对抗问题:顾名思义,博弈双方是带有对抗性质的.博弈的任何一方都希望局面尽量对自己有利,同时局面也应该尽量令对方不利 ...

  6. c语言程序设计五子棋论文,C语言程序设计 课程设计(论文) 五子棋游戏

    内容简介: C语言程序设计 课程设计(论文) 五子棋游戏,正文共21页,4231字. 目 录 第1章 课程设计的目的与要求1 1.1 课程设计目的1 1.2 课程设计的实验环境1 1.3 课程设计的预 ...

  7. 五子棋游戏html5界面设计,HTML5制作黑白五子棋游戏教程

    今天分享一个只用css和js代码开发的黑白五子棋游戏,我们把代码进行解析,希望对大家可以有所帮助 先看看效果图: HTML5制作黑白五子棋游戏教程 js代码: 定义canvas及黑白棋变量 var c ...

  8. c语言五子棋游戏源程序代码,C语言五子棋游戏源代码

    <C语言五子棋游戏源代码>由会员分享,可在线阅读,更多相关<C语言五子棋游戏源代码(12页珍藏版)>请在人人文库网上搜索. 1.include#define N 10void ...

  9. html五子棋游戏制作原理,JavaScript实现五子棋游戏的方法详解

    本文实例讲述了JavaScript实现五子棋游戏的方法.分享给大家供大家参考,具体如下: 最近半个月一直在看深入的学习JavaScript,里面有很多重点和难点,比如闭包.词法分析.面向对象等.今天给 ...

  10. python五子棋游戏难吗_python写五子棋游戏

    用python可以做一些小游戏,不如飞机,比如五子棋 今天就看一看,用python怎么做五子棋吧 (1) 五子棋界面实现: (2) 智能判定棋盘走势: (3) 改进了棋盘扫描方式: (4) 改良了系统 ...

最新文章

  1. 【带你重拾Redis】Redis事务
  2. [AsyncHandle]什么引发了ObjectDisposedException?
  3. Windows下Libvirt Java API使用教程(二)- 接口使用说明
  4. 在Apache上隐藏服务器签名的方法
  5. Java 程序中使用 MongoDB教程
  6. kafka+zookeeper安装配置
  7. Excel表Ctrl+v和Ctrl shift+v有什么区别_Ctrl键与10个数字键,26个字母键的组合应用技巧解读...
  8. Qt 调试Caffe
  9. LeetCode算法入门- 4Sum -day11
  10. php 两个类 相互调用_如何在 PHP 和 Laravel 中使用 Traits
  11. mysql warning 1618_MySQL - 错误1045 - 拒绝访问
  12. (30)FPGA米勒型状态机设计(一段式)(第6天)
  13. python把多个人声分离_python音轨分离神器
  14. 还在用git commit -m 吗?Git 提交规范和自动产生changelog手摸手教程。
  15. dumprep.exe 进程吃掉一半CPU
  16. 如何通俗理解Word2Vec
  17. centos7.1与无线网 (芯片rtl8723be)
  18. 前端异步请求async/await,axios的错误用法
  19. WDM波分复用中什么是C波段、L波段?
  20. 基于51单片机的扫地小车,扫地机器人设计 主要功能有寻迹避障,来回清扫功能,往返清扫功能

热门文章

  1. Java中判断String对象是否为空的方法
  2. python 异常和弹出框
  3. UVa 11063 - B2-Sequence
  4. Struts2返回JSON数据的具体应用范…
  5. python编程从入门到精通pdf-码哥—-Python从入门到精通(全60集),资源教程下载...
  6. python语言程序设计西安电子科技大学答案-徐悦甡 | 个人信息 | 西安电子科技大学个人主页...
  7. python详细教程-Python入门教程:超详细1小时学会Python
  8. python爬虫框架排行榜-常用python爬虫框架整理
  9. python能绘制统计图吗-python, 基本统计图的绘制
  10. python爬百度翻译-Python爬虫实现百度翻译功能过程详解