基于python的游戏设计与实现-python五子棋游戏的设计与实现
这个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五子棋游戏的设计与实现相关推荐
- python 单机程序_Python tkinter制作单机五子棋游戏
本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 以下文章来源于Python家庭,作者Python家庭 实战项目:使用Python ...
- python写五子棋游戏下载_python实现简单五子棋游戏
本文实例为大家分享了python实现简单五子棋游戏的具体代码,供大家参考,具体内容如下 from graphics import * from math import * import numpy a ...
- python五子棋游戏_python小项目之五子棋游戏
本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 1.项目简介 在刚刚学习完python套接字的时候做的一个五子棋小游戏,可以在局域网内双人对战,也可以和电脑对战 2.实 ...
- python五子棋游戏控制台版_python实现五子棋游戏(pygame版)
本文实例为大家分享了python五子棋游戏的具体代码,供大家参考,具体内容如下 目录 简介 实现过程 结语 简介 使用python实现pygame版的五子棋游戏: 环境:Windows系统+pytho ...
- 基于C的α-β剪枝算法实现的AI五子棋游戏
源码下载 http://www.byamd.xyz/hui-zong-1/ 对抗问题 对抗问题:顾名思义,博弈双方是带有对抗性质的.博弈的任何一方都希望局面尽量对自己有利,同时局面也应该尽量令对方不利 ...
- c语言程序设计五子棋论文,C语言程序设计 课程设计(论文) 五子棋游戏
内容简介: C语言程序设计 课程设计(论文) 五子棋游戏,正文共21页,4231字. 目 录 第1章 课程设计的目的与要求1 1.1 课程设计目的1 1.2 课程设计的实验环境1 1.3 课程设计的预 ...
- 五子棋游戏html5界面设计,HTML5制作黑白五子棋游戏教程
今天分享一个只用css和js代码开发的黑白五子棋游戏,我们把代码进行解析,希望对大家可以有所帮助 先看看效果图: HTML5制作黑白五子棋游戏教程 js代码: 定义canvas及黑白棋变量 var c ...
- c语言五子棋游戏源程序代码,C语言五子棋游戏源代码
<C语言五子棋游戏源代码>由会员分享,可在线阅读,更多相关<C语言五子棋游戏源代码(12页珍藏版)>请在人人文库网上搜索. 1.include#define N 10void ...
- html五子棋游戏制作原理,JavaScript实现五子棋游戏的方法详解
本文实例讲述了JavaScript实现五子棋游戏的方法.分享给大家供大家参考,具体如下: 最近半个月一直在看深入的学习JavaScript,里面有很多重点和难点,比如闭包.词法分析.面向对象等.今天给 ...
- python五子棋游戏难吗_python写五子棋游戏
用python可以做一些小游戏,不如飞机,比如五子棋 今天就看一看,用python怎么做五子棋吧 (1) 五子棋界面实现: (2) 智能判定棋盘走势: (3) 改进了棋盘扫描方式: (4) 改良了系统 ...
最新文章
- 【带你重拾Redis】Redis事务
- [AsyncHandle]什么引发了ObjectDisposedException?
- Windows下Libvirt Java API使用教程(二)- 接口使用说明
- 在Apache上隐藏服务器签名的方法
- Java 程序中使用 MongoDB教程
- kafka+zookeeper安装配置
- Excel表Ctrl+v和Ctrl shift+v有什么区别_Ctrl键与10个数字键,26个字母键的组合应用技巧解读...
- Qt 调试Caffe
- LeetCode算法入门- 4Sum -day11
- php 两个类 相互调用_如何在 PHP 和 Laravel 中使用 Traits
- mysql warning 1618_MySQL - 错误1045 - 拒绝访问
- (30)FPGA米勒型状态机设计(一段式)(第6天)
- python把多个人声分离_python音轨分离神器
- 还在用git commit -m 吗?Git 提交规范和自动产生changelog手摸手教程。
- dumprep.exe 进程吃掉一半CPU
- 如何通俗理解Word2Vec
- centos7.1与无线网 (芯片rtl8723be)
- 前端异步请求async/await,axios的错误用法
- WDM波分复用中什么是C波段、L波段?
- 基于51单片机的扫地小车,扫地机器人设计 主要功能有寻迹避障,来回清扫功能,往返清扫功能
热门文章
- Java中判断String对象是否为空的方法
- python 异常和弹出框
- UVa 11063 - B2-Sequence
- Struts2返回JSON数据的具体应用范…
- python编程从入门到精通pdf-码哥—-Python从入门到精通(全60集),资源教程下载...
- python语言程序设计西安电子科技大学答案-徐悦甡 | 个人信息 | 西安电子科技大学个人主页...
- python详细教程-Python入门教程:超详细1小时学会Python
- python爬虫框架排行榜-常用python爬虫框架整理
- python能绘制统计图吗-python, 基本统计图的绘制
- python爬百度翻译-Python爬虫实现百度翻译功能过程详解