java 设计纸牌游戏:(评论里有游戏规则。补充超了字数。。。)
创建一个程序,模拟如上所述的纸牌游戏。请记住,你不是建立一个游戏被用户运行(玩)。而是你要建立一个在内部运行的游戏的程序。你的程序的输出应该是电脑在1000模拟游戏中赢得...
创建一个程序,模拟如上所述的纸牌游戏。请记住,你不是建立一个游戏被用户运行(玩)。而是你要建立一个在内部运行的游戏的程序。你的程序的输出应该是电脑在1000模拟游戏中赢得的次数。包括赢率以百分比表示。然后重复该实验:2000次游戏/运行,3000次游戏/运行,等等直到10000次运行次游戏。因此,你的程序的输出会是这个样子(由问号取代实际数字):
?/1000 games won = ?%
?/2000 games won = ?%
?/3000 games won = ?%
?/4000 games won = ?%
?/5000 games won = ?%
。。。。。
?/10000 games won = ?%
我应该只需要运行一次你的代码,就可以得到上面的输出。别忘了想想你的输出手段。是游戏很难赢?还是只是运气不好?
至少含有下面的四个class
card:这个类表示一个单一的扑克牌。
实例变量:该卡的价值和花色(types:类型是由你决定)
•方法:
O 一个非默认的构造函数,其中牌的值(纸牌上的数字)和花色(以这种顺序)是其中的参数
O一个toString方法返回该卡作为可打印的字符串(如“黑桃q”)。原型为:公共字符串的toString()
O适当的getter方法(setter方法不是真的需要,因为一旦创建了卡,它不会改变它的值或花色。)
deck:此类表示卡的集合。
•实例变量:
“卡”这个对象的集合
通过一个int变量来记录哪张卡牌将是下一个被发牌。关于如何使用这个变量,请参阅下面的deal方法。
•方法:
一个默认的构造函数
一个toString方法返回这一整套牌做为可打印的字符串(连击“\ N”,当你想包含一个新行)
一个deal 方法 返回下一个将要发的卡牌。当我们发一张牌时,实际上我们不会将这个牌从整套牌里拿出去。相反,我们只是记录一个标志着这副牌里将要发的牌和已经发的牌的位置的instance variable(实例变量?)。所以此方法更新该变量。这是计算机科学的常用技巧,因为它比移动Card对象更节省时间效率。请确保你明白这一点。
一个shuffle方法 (shuffle是洗牌的意思)将这副牌里的卡牌随机化。做到这一点的方法之一是挑0-51之间的随机数,并在array(数组)中交换“那个刚才被我挑中的随机数代表”的卡与“索引为0”的卡牌。然后选择另一个随机数然后交换“该索引代表的卡”与“索引是1”的卡。坚持做下去,直到每一个数组索引(index)都被一个随机的卡片交换过。
这里请使用java docs里的Random class里的方法,别忘了import 这个句子哦。
SolitaireSimulator:这个类掌握游戏的模拟。
•实例变量:
o 一副扑克牌
o 一个代表正面朝上的牌 的一列卡的数组
o 目前正面朝上的牌的个数
•方法:
o 一个构造函数
o 一个playGame方法,这是整个模拟的“心脏”。此方法应根据上述规则进行游戏。这个方法应该返回true,如果赢得了这个游戏的冠军,返回false假如输了这个游戏。一个设计良好的playGame方法应该会被很短。
Client
这个类有main方法。它应该(次数)适当的调用playGame方法,并在System.out打印出数据
从一个标准的52张牌开始,游戏的玩法如下。花色是唯一重要的事情;卡值可忽略。
1. 洗牌并发4张牌,所有的牌正面向上,在同一排
2. 从这些展示的卡牌中取出卡片的规则:
a) 如果最右边的4张牌都具有相同的花色,除去那4张纸牌放到弃牌堆。 (虽然在游戏开始时,只有4张卡片显示,但是你最终会拥有更多。)
b) 如果在最右边的四张牌里的第一张牌和第四张牌有相同的花色,则去除在它们之间的两张牌(第二和第三卡)到弃牌堆。
c) 每当你删除卡片时,请重复(a)及(b)(按顺序),直到您不能删除任何更多的牌,或者您有少于四张牌显示。
3。发牌时正面朝上,放在那些已经显示出来的牌的右面。如果有少于四张正面朝上的牌,请重复此步骤。
4。直到这副纸牌里没有更多的牌了,请重复上面步骤2和3。如果所有的牌都被放进了(已被删除的)弃牌堆里,那么你赢了。 展开
?/1000 games won = ?%
?/2000 games won = ?%
?/3000 games won = ?%
?/4000 games won = ?%
?/5000 games won = ?%
。。。。。
?/10000 games won = ?%
我应该只需要运行一次你的代码,就可以得到上面的输出。别忘了想想你的输出手段。是游戏很难赢?还是只是运气不好?
至少含有下面的四个class
card:这个类表示一个单一的扑克牌。
实例变量:该卡的价值和花色(types:类型是由你决定)
•方法:
O 一个非默认的构造函数,其中牌的值(纸牌上的数字)和花色(以这种顺序)是其中的参数
O一个toString方法返回该卡作为可打印的字符串(如“黑桃q”)。原型为:公共字符串的toString()
O适当的getter方法(setter方法不是真的需要,因为一旦创建了卡,它不会改变它的值或花色。)
deck:此类表示卡的集合。
•实例变量:
“卡”这个对象的集合
通过一个int变量来记录哪张卡牌将是下一个被发牌。关于如何使用这个变量,请参阅下面的deal方法。
•方法:
一个默认的构造函数
一个toString方法返回这一整套牌做为可打印的字符串(连击“\ N”,当你想包含一个新行)
一个deal 方法 返回下一个将要发的卡牌。当我们发一张牌时,实际上我们不会将这个牌从整套牌里拿出去。相反,我们只是记录一个标志着这副牌里将要发的牌和已经发的牌的位置的instance variable(实例变量?)。所以此方法更新该变量。这是计算机科学的常用技巧,因为它比移动Card对象更节省时间效率。请确保你明白这一点。
一个shuffle方法 (shuffle是洗牌的意思)将这副牌里的卡牌随机化。做到这一点的方法之一是挑0-51之间的随机数,并在array(数组)中交换“那个刚才被我挑中的随机数代表”的卡与“索引为0”的卡牌。然后选择另一个随机数然后交换“该索引代表的卡”与“索引是1”的卡。坚持做下去,直到每一个数组索引(index)都被一个随机的卡片交换过。
这里请使用java docs里的Random class里的方法,别忘了import 这个句子哦。
SolitaireSimulator:这个类掌握游戏的模拟。
•实例变量:
o 一副扑克牌
o 一个代表正面朝上的牌 的一列卡的数组
o 目前正面朝上的牌的个数
•方法:
o 一个构造函数
o 一个playGame方法,这是整个模拟的“心脏”。此方法应根据上述规则进行游戏。这个方法应该返回true,如果赢得了这个游戏的冠军,返回false假如输了这个游戏。一个设计良好的playGame方法应该会被很短。
Client
这个类有main方法。它应该(次数)适当的调用playGame方法,并在System.out打印出数据
从一个标准的52张牌开始,游戏的玩法如下。花色是唯一重要的事情;卡值可忽略。
1. 洗牌并发4张牌,所有的牌正面向上,在同一排
2. 从这些展示的卡牌中取出卡片的规则:
a) 如果最右边的4张牌都具有相同的花色,除去那4张纸牌放到弃牌堆。 (虽然在游戏开始时,只有4张卡片显示,但是你最终会拥有更多。)
b) 如果在最右边的四张牌里的第一张牌和第四张牌有相同的花色,则去除在它们之间的两张牌(第二和第三卡)到弃牌堆。
c) 每当你删除卡片时,请重复(a)及(b)(按顺序),直到您不能删除任何更多的牌,或者您有少于四张牌显示。
3。发牌时正面朝上,放在那些已经显示出来的牌的右面。如果有少于四张正面朝上的牌,请重复此步骤。
4。直到这副纸牌里没有更多的牌了,请重复上面步骤2和3。如果所有的牌都被放进了(已被删除的)弃牌堆里,那么你赢了。 展开
3个回答
展开全部
主要是你想表的什么意思 这么多字 知识介绍 你这个 纸牌程序吗?
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
字数太多懒得看...
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询