关于java21点游戏的信息

博主:adminadmin 2022-11-26 08:57:08 63

本篇文章给大家谈谈java21点游戏,以及对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用java编程21点牌简单最好

public class Point21 {

private static ArrayListCardBean cardsOfCom;

private static ArrayListCardBean mycards;

private static int comStatus = 0;

private static int myStatus = 0;

private static int comMoney = 100;//电脑当前的钱

private static int playerMoney = 100;//游戏者当前的钱

private static int betScore = 1;//游戏者下注数

private static int fact = 1;//下注倍数

private static CardBean getOneCard(CardBean src) {

CardBean cardnew = new CardBean();

cardnew.setName(src.getName());

cardnew.setScore(src.getScore());

return cardnew;

}

private static int startGame(Cards52 c52) {

cardsOfCom.clear();

mycards.clear();

betScore = 1;

fact = 1;

CardBean cb = null;

CardBean newcard = null;

for (int i = 0; i 2; i++) {

cb = c52.getOneCard();

if (cb == null) {

return 0;

}

newcard = getOneCard(cb);

cardsOfCom.add(newcard);

cb = c52.getOneCard();

if (cb == null) {

return 0;

}

newcard = getOneCard(cb);

mycards.add(newcard);

}

return 1;

}

/**

* 显示电脑目前的牌和分数,如果返回值为0,则电脑“爆炸”了

* @return

*/

private static int showComputerCards() {

String cards = " ";

int total = 0;

for (int i = 0; i cardsOfCom.size(); i++) {

CardBean cb = (CardBean) cardsOfCom.get(i);

cards = cards + cb.getName() + " ";

total += cb.getScore();

}

System.out.println("Computer's cards:" + cards + ";Computer's score:"

+ total);

if(total==21)//当游戏双方有一方刚好是21点的时候,赌注的赔率翻倍..

{

fact = 2;

}

if (total 21) {

return 0;

}

return 1;

}

/**

* 显示游戏者目前的牌和分数,如果返回值为0,则游戏者“爆炸”了

* @return

*/

private static int showPlayerCards() {

String cards = " ";

int total = 0;

for (int i = 0; i mycards.size(); i++) {

CardBean cb = (CardBean) mycards.get(i);

cards = cards + cb.getName() + " ";

total += cb.getScore();

}

System.out.println("your cards:" + cards + ";your score:" + total);

if(total==21)//当游戏双方有一方刚好是21点的时候,赌注的赔率翻倍..

{

fact = 2;

}

if (total 21) {

return 0;

}

return 1;

}

/**

*

* @return 返回1则表明还有牌发,如果为0则表示最后一张牌发完,游戏结束!

*/

private static int computerGetOneCard(Cards52 c52) {

if (comStatus == 1)//如果这一局电脑已经不要牌了,则不能再次要牌

{

return 1;

}

int total = 0;

for (int i = 0; i cardsOfCom.size(); i++) {

CardBean cb = (CardBean) cardsOfCom.get(i);

total += cb.getScore();

}

if (total = 18) {

comStatus = 1;//超过17分电脑就不再要牌

return 2;

}

CardBean src = c52.getOneCard();

if (src == null)//牌已经全部发完,退出并返回0已告知主程序

{

return 0;

}

CardBean newcard = getOneCard(src);

cardsOfCom.add(newcard);

System.out.println("Computer get one card:" + newcard.getName());

return 1;

}

/**

*

* @return 返回1则表明还有牌发,如果为0则表示最后一张牌发完,游戏结束!

*/

private static int playerGetOneCard(Cards52 c52) {

if (myStatus == 1)//如果这一局游戏者已经不要牌了,则不能再次要牌

{

return 1;

}

System.out.println("您是否还要牌?是(y)/否(n)");

int ii = -1;

try {

ii = System.in.read();

} catch (Exception e) {

e.printStackTrace();

return 0;

}

clearEnter();

char ch = Character.toChars(ii)[0];

if (ch == 'n') {

myStatus = 1;

return 2;

}

CardBean src = c52.getOneCard();

if (src == null)//牌已经全部发完,退出并返回0已告知主程序

{

return 0;

}

CardBean newcard = getOneCard(src);

mycards.add(newcard);

System.out.println("You get a card:" + newcard.getName());

return 1;

}

private static int compareScores() {

int pScore = 0;

int cScore = 0;

for (int i = 0; i mycards.size(); i++) {

CardBean cb = (CardBean) mycards.get(i);

pScore += cb.getScore();

}

for (int i = 0; i cardsOfCom.size(); i++) {

CardBean cb = (CardBean) cardsOfCom.get(i);

cScore += cb.getScore();

}

if (pScore cScore) {

return 1;

}

if (pScore cScore) {

return -1;

}

return 0;

}

private static void clearEnter() {

int ii = 13;

try {

while (ii == 13) {

ii = System.in.read();

}

} catch (Exception e) {

e.printStackTrace();

}

}

public Point21() {

}

public static int play(Cards52 cards52) {

comStatus = 0;

myStatus = 0;

int ret = 0;

//如果把Cards52 放在这里来new的话。就是每次打完一局都会重新洗牌,程序永远不会结束

//Cards52 cards52 = new Cards52();

if (startGame(cards52) == 0) {

System.out.println("牌已发完,退出程序!");

return 1;

}

showComputerCards();

showPlayerCards();

doBetScore();//选择把下注的时机放在刚发两张牌的时候,这样比较刺激点^_^

int nofinish = 1;

int noabort = 1;

int finished = 0;

while (finished 2) {

noabort = computerGetOneCard(cards52);

if (noabort == 0) {

System.out.println("牌发完鸟,游戏结束!");

return 1;

} else if (noabort == 2) {

finished++;

if (finished == 2) {

break;

}

}

nofinish = showComputerCards();

if (nofinish == 0) {

System.out.println("电脑爆咯,你赢了!");

return 0;

}

noabort = playerGetOneCard(cards52);

if (noabort == 0) {

System.out.println("牌发完鸟,游戏结束!");

return 1;

} else if (noabort == 2) {

finished++;

}

nofinish = showPlayerCards();

if (nofinish == 0) {

System.out.println("你爆咯,你Failed!");

return 0;

}

}

if (finished == 2) {

int result = compareScores();

if (result == 1) {

System.out.println("你赢了!");

} else if (result == -1) {

System.out.println("你输了!");

} else {

System.out.println("打平!");

}

}

return ret;

}

private static void finishOneGame(int isfinish) {

try {

if(isfinish==0)//如果不是牌发完而导致游戏退出,则需算分...

{

calculateScores();

}

System.out.println("游戏结束!!!请按回车键继续");

System.in.read();

clearEnter();

//System.out.print("这里应该输入清屏...");

} catch (Exception e) {

System.out.println("error while game finished:" + e.getMessage());

}

}

private static void calculateScores()

{

//int nFact = 0;//决定游戏者,电脑是加分还是减分的因子

int pScore = 0;//游戏者的分数

int cScore = 0;//计算机的分数

int reward = 0;//最终得分

for (int i = 0; i mycards.size(); i++) {

CardBean cb = (CardBean) mycards.get(i);

pScore += cb.getScore();

}

for (int i = 0; i cardsOfCom.size(); i++) {

CardBean cb = (CardBean) cardsOfCom.get(i);

cScore += cb.getScore();

}

if(cScore21)//如果电脑爆了..

{

int s1 = cScore - 21;

reward = betScore * fact + s1;

}

else if(pScore21)//如果游戏者爆了

{

int s1 = pScore - 21;

reward = -(betScore * fact + s1);

}

else if(pScorecScore)//如果游戏者比电脑接近21点

{

reward = betScore * fact + (pScore - cScore);

}

else if(pScorecScore)//如果电脑比游戏者接近21点

{

reward = -(betScore * fact) + (pScore - cScore);

}

playerMoney += reward;

comMoney -= reward;

System.out.println("您现在的余额是:"+playerMoney+",电脑的余额:"+comMoney);

}

private static void doBetScore()

{

System.out.println("请输入 1~9 进行下注(如果输入其他字符,将默认为下注1)");

String str = readinOneString();

if("123456789".indexOf(str)=0)//正确的下注将按实际的下注值

{

betScore = Integer.parseInt(str);

}

else//非法的输入将认为是下1块钱注

{

betScore = 1;

}

}

private static String readinOneString()

{

String ret = null;

try

{

int ii = System.in.read();

clearEnter();

ret = "" + Character.toChars(ii)[0];

}

catch(Exception e)

{

e.printStackTrace();

}

return ret;

}

public static void main(String[] args) {

mycards = new ArrayListCardBean();

cardsOfCom = new ArrayListCardBean();

Cards52 cards52 = new Cards52(2);

int isfinish = 0;

while (isfinish == 0) {

isfinish = play(cards52);

finishOneGame(isfinish);

}

System.out.println("最后得分:游戏者"+playerMoney+";电脑"+comMoney);

}

}

public class CardBean {

private String name;

private String color;

private int score;

private int status;

public String getColor() {

return color;

}

public void setColor(String color) {

this.color = color;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getScore() {

return score;

}

public void setScore(int score) {

this.score = score;

}

public int getStatus() {

return status;

}

public void setStatus(int status) {

this.status = status;

}

}

public class Cards52 {

public static final int ONE_PAIR_COUNT = 52;

//有多少副牌

private int size = 1;

private int unused = 0;

private ArrayListCardBean cards = null;

public Cards52()

{

initialize();

}

public Cards52(int nSize)

{

size = nSize;

initialize();

}

protected void initialize()

{

cards = new ArrayListCardBean();

for(int i=0;i4*size;i++)

{

for(int j=0;j13;j++)

{

initCardBean(j);

}

}

unused = ONE_PAIR_COUNT * size;

}

private void initCardBean(int index)

{

CardBean cd = new CardBean();

if(index==0)

{

cd.setName("A");

cd.setScore(11);

}

else if(index==10)

{

cd.setName("J");

cd.setScore(1);

}

else if(index==11)

{

cd.setName("Q");

cd.setScore(1);

}

else if(index==12)

{

cd.setName("K");

cd.setScore(1);

}

else

{

cd.setName(String.valueOf(index+1));

cd.setScore(index+1);

}

cd.setStatus(0);

cards.add(cd);

}

public CardBean getOneCard()

{

if(unused==0)

{

return null;

}

int seed = (int)System.currentTimeMillis() % 100;

Random rd = new Random();

int n = rd.nextInt(seed);

n = (Math.abs(n)) % cards.size();

CardBean cb = (CardBean)cards.get(n);

while(cb.getStatus()!=0)

{

n = (n+1) % cards.size();

cb = (CardBean)cards.get(n);

}

cb.setStatus(1);//这张牌已经发出去了,下次不能选了

unused--;

return cb;

}

}

java 21点游戏中 如何实现玩家和电脑所得到的牌不重复呢??

写一个判断啊,再发之前进行判断,如果牌面重复则从新获得随机牌

可以采用类似随机数在判断的原理

在统计学的不同技术中需要使用随机数,比如在从统计总体中抽取有代

随机数

表性的样本的时候,或者在将实验动物分配到不同的试验组的过程中,或者在进行蒙特卡罗模拟法计算的时候等等。

产生随机数有多种不同的方法。这些方法被称为随机数发生器。随机数最重要的特性是:它所产生的后面的那个数与前面的那个数毫无关系。

真正的随机数是使用物理现象产生的:比如掷钱币、骰子、转轮、使用电子元件的噪音、核裂变等等。这样的随机数发生器叫做物理性随机数发生器,它们的缺点是技术要求比较高。

在实际应用中往往使用伪随机数就足够了。这些数列是“似乎”随机的数,实际上它们是通过一个固定的、可以重复的计算方法产生的。计算机或计算器产生的随机数有很长的周期性。它们不真正地随机,因为它们实际上是可以计算出来的,但是它们具有类似于随机数的统计特征。这样的发生器叫做伪随机数发生器。

在真正关键性的应用中,比如在密码学中,人们一般使用真正的随机数。

C语言、C++、C#、Java、Matlab等程序语言和软件中都有对应的随机数生成函数,如rand等。

求大神帮帮!用JAVA编写21点扑克牌游戏问题

有可能是暖气里面污堵、或者没有及时将里面的凉气排出。 1、供热设施使用有寿命。 管网散热器使用年限为8年,用户因未按时维修保养,就会造成内部腐蚀、结垢、堵塞严重,影响散热效果。所以用户要在运行前请求物业或专业人员对供热设施及时进行冲洗或更换。 2、暖气片不热应该考虑放水,实际是放气,暖气片及暖气片管里的气泡有很强的"气阻"作用。放水开关在暖气片侧面上方的螺栓里(此螺栓与温控旋钮分列暖气的两侧,且螺栓上有一个白色塑料部件)。放水前需将放水开关上的白色塑料部件旋转,将塑料部件上的放水小孔对准接水的水盆(先端着盆,喷稳定了再放下,不累的),然后再用"一"字改锥逆时针旋转塑料部件中心的小金属螺钉。拧上一点就有反应了。以前没放过水的暖气一开始肯定是喷气,然后喷泡沫,最后喷水。因为放水小孔非常小,所以喷的气、泡、水的速度不快,那个水杯就可以接水了。在有水流出且水流稳定没有放气声音后即可关闭放水开关,也就是把螺栓中心的小螺钉顺时针拧紧。 3、对于顽强的暖气片需要特别处理。大量放水后依然不热的暖气一般处在暖气管线循环的旁支上,也就是该暖气片不在暖气循环的总线上。暖气片热水总在主线上流动,不经过旁支流到该暖气上,于是该暖气始终没有热水流过,对应的地下暖管内的气泡也无法排出,于是:首先,关闭其它已经热了的暖气,先关闭出水阀门(从地下出来的金属阀门),再关闭进水阀门。进水阀门在暖气温控开关一侧,出水阀门在远离温控开关的一侧。如果实在搞不清就同时关。然后,对唯一通暖气的暖气组放水,此时强制暖气循环从该暖气组通过,可以有效排除通往该暖气的地下管线中的阻碍,应该可以看到有新的气体放出。该暖气片的温控开关附近的位置会很快加温。等水流稳定后关闭放水开关。最后,打开原先关闭的暖气组,打开时先打开进水开关再打开出水开关,同时开也可。但是仍需要放一下气,以免刚才处理的暖气组里的气泡跑到这里来。不过只需要拧开一下,确保流出的是水即可。剩下的暖气依次处理。所有暖气内的气阻全部排除,暖气应该会热的。

急需一段用纯JAVA语言编的21点纸牌游戏的源代码

请不要发违规广告,是违法行为

请不要发违法消息,是违规的行为

请不要发违规广告,是违法行为

有谁能告诉我怎么用eclipse做出21点游戏啊

用eclipse或者用别的,都不是什么问题。关键是你要会java.你会java,用不用eclipse都能够做出21点游戏。 首先你需要java的入门书,thinking in java就是一本入门好书。安装一个JDK,然后就可以开始慢慢试验,慢慢学了。

21点游戏,其实很简单,首先你需要建立一个数组,存放56张扑克牌。然后用一个随即函数Math.random()*56产生一个随机数抽取一张牌。嗯,这段话你学好了java,一看就懂了,就做出来了。

关于java21点游戏和的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-26,除非注明,否则均为首码项目网原创文章,转载请注明出处。