| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1647 人关注过本帖
标题:求助一下大佬们,几道python编程题
只看楼主 加入收藏
s1518838035
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-8
结帖率:0
收藏
已结贴  问题点数:10 回复次数:4 
求助一下大佬们,几道python编程题
现在设想我们使用Numpy来模拟这样一个游戏,具体要求如下:

利用Numpy生成一个 5×5 的二维数组(可以初始化每个元素都为0)作为棋盘,该数组的每个索引位置表示可放置棋子的位置,比如数组的[0, 0]可以表示棋盘上第一条横线与第一条竖线的交点,以此类推。在这一步你需要构造一个名为create_board()的函数用于生成一个 5×5 的棋盘,并以numpy数组作为返回值;
假如游戏中有两个玩家1和玩家2,分别使用1和2表示,即1表示玩家1持有的棋子,2表示玩家2持有的棋子。
构造一个函数game_one_move()表示一轮游戏后的结果,并以更新后的棋盘取值为返回值。
玩家1在棋盘上随机选择一个位置放置棋子,此时,该位置上数组取值将从0变成1,
玩家2也随机选择一个位置放置棋子,此时,该位置上数组取值将从0变成2,
玩家1和2依次进行以下步骤,注意,如果某个位置上已经被另一玩家放置了棋子,那么,当前玩家需要另选位置放置棋子,
构造一个函数game_results(),用于判断是否可以结束游戏,如果玩家1首先实现五子连线者获胜,则返回1,表示玩家1胜利,如果玩家2首先实现五子连线者获胜,则返回2,表示玩家2胜利,否则,返回0,表示平局。
构造一个函数game_playing(player1=1, player2=2),该函数接受三个参数,第一个参数是表示棋盘的数组,第二和第三个参数可以定义两个玩家的名字,默认分别是1和2,函数需要综合上述所有游戏的步骤,可以理解为,一旦你调用了game_playing()函数,游戏将自动开启,初始化棋盘并实现两个玩家依次下棋,直到分出胜负或平局,函数返回最终结果,如果玩家1胜则返回1,如果玩家2胜则返回2,平局则返回0。
在构造了game_playing(player1=1, player2=2)函数后,利用随机模拟验证一下五子棋游戏是否存在先手优势,也就是先落子的一方胜率更高?
搜索更多相关主题的帖子: 函数 棋盘 表示 返回 位置 
2021-06-24 09:07
s1518838035
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-8
收藏
得分:0 
回复 楼主 s1518838035
这题看的我很懵,希望有人能帮忙解答一下啊
2021-06-24 09:08
古123
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:14
帖 子:219
专家分:1098
注 册:2017-2-5
收藏
得分:5 
回复 2楼 s1518838035
一个5x5的棋盘,每一位用0,1,2分别代表那个位置有没有棋子,是谁的棋子。可以想成五子棋围棋,放在交点上。
下在哪一步就将哪个位置变成1或2。
图片附件: 游客没有浏览图片的权限,请 登录注册

连成5个就算胜利,类似井字棋的规则,

三种结果,1胜,2胜,要不放满但是平局。


写一个函数,创造棋盘,就尝见一个每个值为0的二维数组
开始游戏,就找个值是0的位置改成1或2,1就是1下的棋,2就是2下的棋子。一直循环下去,直到有结果。这样一局就好了。
然后设置多运行几次游戏函数。记录每次的先手是谁,先手胜的概率。
先手胜的概率高于50,就有先手优势

2021-06-24 18:25
s1518838035
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2020-4-8
收藏
得分:0 
回复 3楼 古123
最关键就是这个算法不会写呢
2021-06-25 10:32
wapjin
Rank: 1
等 级:新手上路
帖 子:7
专家分:5
注 册:2021-6-29
收藏
得分:5 
你需要一个算法

分享一下你的技术
2021-06-29 16:22
快速回复:求助一下大佬们,几道python编程题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017921 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved