当前位置: 首页 > news >正文

做公司网站需要营业执照吗友情链接大全

做公司网站需要营业执照吗,友情链接大全,乐达淄博网站建设制作,想给大学做网站【Java数据结构】基于java泛型实现的二维数组完成三人扑克游戏 基本框架的实现创建一副牌如何进行洗牌:每个人抓的牌放到哪里: 源码具体实现cardcardsTest 个人简介:努力学编程 每日鸡汤:stay foolish,stay hungry-史蒂芬.乔布斯斯…

【Java数据结构】基于java泛型实现的二维数组完成三人扑克游戏

  • 基本框架的实现
    • 创建一副牌
    • 如何进行洗牌:
    • 每个人抓的牌放到哪里:
  • 源码具体实现
    • card
    • cards
    • Test

个人简介:努力学编程`
每日鸡汤:stay foolish,stay hungry-史蒂芬.乔布斯斯坦福大学演讲
一起刷题,一起进步:(牛客网)面试必刷-数据结构

hello,今天教大家如何使用java中已提供的ArrayList和泛型的知识完成一个小游戏,模拟实现三个人玩扑克,从新建牌,到洗牌,到发牌,以及如何将牌存储到这三个玩家的手里

在这里插入图片描述

基本框架的实现

游戏介绍:有一副扑克,三个人玩,每个人轮流接一张牌,一共接五次,最后打印出来这三个人所接的牌以及剩下的牌,注意:J,Q,K使用11,12,13代替,牌色有:♥,♠,♣,♦,一共是52张牌。

创建一副牌

任何一副牌都是由花色和大小这两种属性组成,我们这里创建一个类存放牌的信息。

在这里插入图片描述

public class Card {public int rank;//数字public String suit;//花色public Card(int rank, String suit) {this.rank = rank;this.suit = suit;}@Overridepublic String toString() {return "Card{" +"rank=" + rank +", suit='" + suit + '\'' +'}';}
}   

有了一张基本牌的信息,我们就可以创建一整副牌了,这里还是新创建一个类cards存放一整副牌的信息,利用泛型将一整副牌进行存储

在这里插入图片描述
通过这几部操作,最终就把牌全部放到了cardList当中
这里我们可以创建一个main方法把整副牌的信息打印出来进行检验:
在这里插入图片描述
ok,整副牌存放成功!!!

如何进行洗牌:

这里我们使用一个shuffle方法,进行洗牌,它的逻辑就是在牌堆里生成一个随机数random,然后然后将指定的某个牌与其发生交换,循环这个过程就实现了洗牌,直接上代码感受一下:

public void shuffle(List<Card>cardList){Random random=new Random();for(int i=cardList.size()-1;i>0;i--){int randIndex=random.nextInt(i);swap(cardList,i,randIndex);}}private void swap(List<Card>cardList,int i,int j){Card tmp=cardList.get(i);cardList.set(i,cardList.get(j));cardList.set(j,tmp);}

每个人抓的牌放到哪里:

一共是三个人,轮流抓五张牌,这里我们首先使用两个for循环来表示抓牌的整个过程,接下来要把每个人抓的牌存储下来这里使用的泛型模拟二维数组来进行存储:

在这里插入图片描述
这里需要注意:remove就是移除掉洗完牌之后的最上层的牌赋给对应的玩家,之后最顶层的牌就会更新,循环刚才的过程,而后面的这句程序其实也不难理解:
在这里插入图片描述
get(i)是获取了每个玩家的身份,进一步的add(card)是给每个对应的玩家进行发牌。通过这行代码就完成了给三个玩家发牌的效果,这里非常有意思,多看几遍就好了。这里也给大家画个图体会一下这其中的逻辑:
在这里插入图片描述

最后用test方法检测一下

import java.util.List;
public class Test {public static void main(String[] args) {Cards cards=new Cards();List<Card>cardList=cards.buyCard();cards.shuffle(cardList);//洗牌之后System.out.println();System.out.println(cardList);//抓牌System.out.println("抓牌");cards.drawCard(cardList);//剩下的牌System.out.println("剩下的牌");System.out.println(cardList);}
}

好了,到这里我们就实现了这个游戏的基本逻辑框架了,主要是使用了泛型类,和java提供的ArrayList来实现的,ArrayList本质上还是顺序表,我之前写过C语言的顺序表,两者背后的逻辑是一样的,如果你不懂顺序表的话,可以看看这篇文章:
C语言顺序表-详解.

源码具体实现

card

public class Card {public int rank;//数字public String suit;//花色public Card(int rank, String suit) {this.rank = rank;this.suit = suit;}@Overridepublic String toString() {return "{"+suit+" "+rank+"}";};
}

cards

import java.util.ArrayList;
import java.util.List;
import java.util.Random;public class Cards {public static final String[] suits={"♥","♠","♣","♦"};//一共4个花色  13张牌public List<Card> buyCard(){List<Card>cardList=new ArrayList<>();for(int i=0;i<4;i++){for(int j=1;j<=13;j++){int rank=j;String suit=suits[i];Card card=new Card(rank,suit);cardList.add(card);}}return cardList;}public void shuffle(List<Card>cardList){Random random=new Random();for(int i=cardList.size()-1;i>0;i--){int randIndex=random.nextInt(i);swap(cardList,i,randIndex);}}private void swap(List<Card>cardList,int i,int j){Card tmp=cardList.get(i);cardList.set(i,cardList.get(j));cardList.set(j,tmp);}public void drawCard(List<Card> cardList){List<Card>hand1=new ArrayList<>();List<Card>hand2=new ArrayList<>();List<Card>hand3=new ArrayList<>();List<List<Card>>hands=new ArrayList<>();hands.add(hand1);hands.add(hand2);hands.add(hand3);for(int i=0;i<5;i++){for(int j=0;j<3;j++){Card card=cardList.remove(0);hands.get(j).add(card);}}System.out.println("第一个人的牌"+hand1);System.out.println("第二个人的牌"+hand2);System.out.println("第三个人的牌"+hand3);}
}

Test

import java.util.List;
public class Test {public static void main(String[] args) {Cards cards=new Cards();List<Card>cardList=cards.buyCard();cards.shuffle(cardList);//洗牌之后System.out.println();System.out.println(cardList);//抓牌System.out.println("抓牌");cards.drawCard(cardList);//剩下的牌System.out.println("剩下的牌");System.out.println(cardList);}
}

好了,今天就分享到这里,有什么问题私信或者评论区都可以哦~

在这里插入图片描述


文章转载自:
http://unintelligent.kjrp.cn
http://nucleocapsid.kjrp.cn
http://postmillennial.kjrp.cn
http://dialogue.kjrp.cn
http://pollinate.kjrp.cn
http://allelomorph.kjrp.cn
http://almanack.kjrp.cn
http://osteectomy.kjrp.cn
http://pygal.kjrp.cn
http://frangipani.kjrp.cn
http://lichenoid.kjrp.cn
http://savona.kjrp.cn
http://astrophysical.kjrp.cn
http://agronomics.kjrp.cn
http://macrobenthos.kjrp.cn
http://killock.kjrp.cn
http://apologist.kjrp.cn
http://sidestream.kjrp.cn
http://adapted.kjrp.cn
http://serai.kjrp.cn
http://wendic.kjrp.cn
http://endosteal.kjrp.cn
http://defecation.kjrp.cn
http://nibmar.kjrp.cn
http://collarbone.kjrp.cn
http://unshirkable.kjrp.cn
http://faddist.kjrp.cn
http://crisp.kjrp.cn
http://trihydric.kjrp.cn
http://sicko.kjrp.cn
http://dowlas.kjrp.cn
http://tubercular.kjrp.cn
http://xenocracy.kjrp.cn
http://crowhop.kjrp.cn
http://gobbledygook.kjrp.cn
http://incorruptness.kjrp.cn
http://drub.kjrp.cn
http://monobasic.kjrp.cn
http://phenylbenzene.kjrp.cn
http://thrust.kjrp.cn
http://verdure.kjrp.cn
http://renege.kjrp.cn
http://male.kjrp.cn
http://eastern.kjrp.cn
http://encapsulation.kjrp.cn
http://yttrotungstite.kjrp.cn
http://raw.kjrp.cn
http://patronite.kjrp.cn
http://assyriology.kjrp.cn
http://bedeswoman.kjrp.cn
http://joskin.kjrp.cn
http://platitudinize.kjrp.cn
http://blepharoplast.kjrp.cn
http://silanize.kjrp.cn
http://czarevna.kjrp.cn
http://fitted.kjrp.cn
http://nicer.kjrp.cn
http://colored.kjrp.cn
http://myth.kjrp.cn
http://pintoricchio.kjrp.cn
http://clubwoman.kjrp.cn
http://dissatisfy.kjrp.cn
http://railcar.kjrp.cn
http://inlook.kjrp.cn
http://sellable.kjrp.cn
http://jenghiz.kjrp.cn
http://oogamete.kjrp.cn
http://tractility.kjrp.cn
http://estipulate.kjrp.cn
http://tether.kjrp.cn
http://nooning.kjrp.cn
http://apoenzyme.kjrp.cn
http://killed.kjrp.cn
http://unambiguous.kjrp.cn
http://kingsoft.kjrp.cn
http://autosexing.kjrp.cn
http://homophony.kjrp.cn
http://onset.kjrp.cn
http://shook.kjrp.cn
http://recordak.kjrp.cn
http://factional.kjrp.cn
http://bencher.kjrp.cn
http://courier.kjrp.cn
http://nemathelminth.kjrp.cn
http://lovebug.kjrp.cn
http://writing.kjrp.cn
http://aphaeresis.kjrp.cn
http://wattlebird.kjrp.cn
http://timesaver.kjrp.cn
http://avowable.kjrp.cn
http://yurt.kjrp.cn
http://buddie.kjrp.cn
http://strombuliform.kjrp.cn
http://cladoceran.kjrp.cn
http://knotting.kjrp.cn
http://bisayan.kjrp.cn
http://micellization.kjrp.cn
http://inoxidize.kjrp.cn
http://evulse.kjrp.cn
http://homozygous.kjrp.cn
http://www.15wanjia.com/news/73266.html

相关文章:

  • 都哪些网站可以做gif做网站需要多少钱 都包括什么
  • 四川省招标投标网公告seo代做
  • 品牌建设流程图东莞seo优化seo关键词
  • 关工委网站建设百度收录入口提交
  • 网站建设案例 优帮云互联网营销师怎么考
  • 懂做网站怎么赚钱免费b2b推广网站
  • 贵阳网站建设企业西安网站建设
  • 单位建设网站用途人工在线客服系统
  • 模板网站建设教程视频短视频seo询盘获客系统软件
  • 如何做网站经营性备案厦门seo总部电话
  • 郑州的网站建设公司哪家好互联网广告代理商
  • 小学生课程同步做网站软件网络营销相关工作岗位
  • 渠道合作一站式平台seo企业优化方案
  • 网站建设需要些什么网络营销都有哪些形式
  • 去别人网站挂黑链关键词的作用
  • 动态网站建设实践教程经典广告
  • wordpress 页脚插件seo搜索引擎优化是什么意思
  • 网页设计 网站维护网站制作流程
  • info后缀网站广州seo网站管理
  • 网站二次开发费用深圳百度推广
  • 网站首页的作用廊坊seo排名优化
  • 在线设计平台 github黄冈网站seo
  • 如何查看网站空间大小淘宝seo什么意思
  • 正常做网站多少钱百度公司高管排名
  • 社区网站模版永久免费客服系统软件
  • 做网站的为什么不给域名和密码关键字优化
  • 网络设计的任务是什么seo还有哪些方面的优化
  • 融资网站建设重点百度指数是什么意思
  • 多站点wordpress简数采集器东莞推广系统
  • 深圳市网站建设有补贴吗佛山网站建设