ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:46.10KB ,
资源ID:4632143      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4632143.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(扑克牌生成与洗牌程序.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

扑克牌生成与洗牌程序.docx

1、扑克牌生成与洗牌程序扑克牌生成与洗牌程序 使用JAVA编写以下程序: 1、请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit;分别描述一张牌的牌面值(如:A、K、Q、J、10、9、3、2等)和花色(如:“黑桃”、“红桃”、“梅花”、“方块”);定义Card类中的public访问权限的构造方法,为类中的变量赋值;定义protected访问权限的方法getFace(),得到扑克牌的牌面值;定义protected访问权限的方法getSuit(),得到扑克牌的花色;定义方法toString(),返回表示扑克牌的花色和牌面值字符串(如“红桃A”、“梅花10”

2、等)。 2、若应用程序的main方法中,定义字符串数组f和s;分别表示扑克牌的牌面值和花色;定义52个元素的Card类型数组deck,用来存放4个花色的52张牌。如下所示。 String f =A,2,3,4,5,6,7,8,9,10,J,Q,K; String s = 黑桃,红桃,梅花,方块; Card deck = new Card52; (1)使用Card类的构造方法给deck数组的52张牌赋值,要求数组中先存放黑桃花色的A、2、3、K;然后是红桃花色的A、2、3、K;梅花花色的A、2、3、K;方块花色的A、2、3、K。请写出实现上述功能的程序段。 (2)请编写模拟洗牌的完整程序,即把数

3、组deck中的扑克牌随机打乱存放顺序。 原题如下: 引用内容 private String face; / A, K, Q, J, 10, . 2 private String suit; / Spade, Heart, Club, Diamond public Card(String suit, String face) this.face = face; this.suit = suit; protected String getFace() return face; protected String getSuit() return suit; public String toStrin

4、g() return suit + + face; 解题,完成程序解: 程序代码package poker; public class Card private String face; / A, K, Q, J, 10, . 2 private String suit; / Spade, Heart, Club, Diamond public Card(String suit, String face) this.face = face; this.suit = suit; protected String getFace() return face; protected String ge

5、tSuit() return suit; public String toString() return suit + + face; public static void shuffle(Card deck, int startIndex, int size, int splitIndex) /shuffle洗牌 System.out.println(startIndex: + startIndex); if (splitIndex * 2 size) /if rand is 30 Card.swap(deck, startIndex, splitIndex, size - splitInd

6、ex); /52、0、30、22 shuffle(deck, size - splitIndex, splitIndex, size - splitIndex); /52、22、30、22 else if (splitIndex * 2 size) /if rnd is 10 Card.swap(deck, startIndex, size - splitIndex, splitIndex); /52、0、42、10 shuffle(deck, startIndex, size - splitIndex, splitIndex); /52、0、42、10 else Card.swap(deck

7、, startIndex, splitIndex, splitIndex); public static void swap(Card deck, int srcIndex, int dstIndex, int size) /交换 /SRC是在本位置显示:source的缩写,源的意思 HREF是点击后连接的目标:HyperlinkReference,超链接引用 String face = ; String suit = ; for (int i = 0; i size; i+) face = decksrcIndex + i.face; suit = decksrcIndex + i.suit

8、; decksrcIndex + i.face = deckdstIndex + i.face; decksrcIndex + i.suit = deckdstIndex + i.suit; deckdstIndex + i.face = face; deckdstIndex + i.suit = suit; /* * param args */ public static void main(String args) /第一问解答 Card deck = new Card52; String f = A, 2, 3, 4, 5, 6, 7, 8, 9, 10, J, Q, K; String

9、 s = Spade, Heart, Club, Diamond; for (int i = 0; i s.length; i+) for (int j = 0; j f.length; j+) decki * 13 + j = new Card(si, fj); /依次存入数组之中,每13张一回合 /第二问解答 int rnd = 0; int numOfShuffle = 10; for (int i = 0; i numOfShuffle; i+) rnd = (int) Math.abs(Math.random() * 52); /Math.random()返回大于或等于 0.0 但小

10、于 1.0 的伪随机 double 值。 Card.shuffle(deck, 0, deck.length, rnd); / Test /* for (int i=0; ideck.length; i+) System.out.println(decki); */PS:函数shuffle是模拟洗牌的过程,这里的算法比较粗燥,随机产生一个52以内数字n,把牌分为两份,1.n-1,和n-52,然后把两份牌交换一下顺序,这里做了十次切牌。 shuffle是一个递归函数,startIndex 表示切牌的开始序号,splitIndex表示切牌的序号,即上面的n getXXX是用来得到牌的花色和数字,第

11、二问用不到本文来自CSDN博客,转载请标明出处:public class DeckOfCards extends Applet private Card deck; private int currentCard; private Button dealButton, shuffleButton; private TextField displayCard; public void init() String faces = Ace, Deuce, Three, Four, Five, Six, Seven, Eight, Nine, Ten, Jack, Queen, King ; Stri

12、ng suits = Hearts, Diamonds, Clubs, Spades ; deck = new Card 52 ; currentCard = -1; for( int i = 0; i deck.length; i+ ) deck i = new Card( faces i % 13 , suits i / 13 ); dealButton = new Button( Deal card ); shuffleButton = new Button( shuffle cards ); displayCard = new TextField( 20 ); displayCard.

13、setEditable( false ); add( dealButton ); add( shuffleButton ); add( displayCard ); public boolean action( Event event, Object object ) if( event.target = dealButton ) Card dealt = dealCard(); if( dealt != null ) displayCard.setText( dealt.toString() ); showStatus( Card #: + currentCard ); else displ

14、ayCard.setText( NO MORE CARDS TO DEAL! ); showStatus( Shuffle cards to continue! ); else if( event.target = shuffleButton ) displayCard.setText( SHUFFLE CARDS. ); showStatus( ); shuffle(); displayCard.setText( DECK IS SHUFFLED! ); return true; public void shuffle() currentCard = -1; for( int i = 0;

15、i deck.length; i+ ) int j = ( int )( Math.random() * 52 ); Card temp = deck i ; deck i = deck j ; deck j = temp; dealButton.enable(); public Card dealCard() if( +currentCard deck.length ) return deck currentCard ; else dealButton.disable(); return null; class Card private String face; private String

16、 suit; public Card( String f, String s ) face = f; suit = s; public String toString() return face + of + suit ; 两种洗牌发牌程序 收藏 用指针实现,这种比较低效#include #include void shuffle(int 13);void deal(int 13, char *, char *);int main(void) char *suit4 = hearts, diamonds, clubs, spades; char *face13 = one, two, thre

17、e, four, five, six, seven, eight,nine, ten, eleven, twelve, thrteen; srand(time(NULL); int deck413 = 0; shuffle(deck); deal(deck, face, suit); return 0;void shuffle(int deck13) int card, row, column; for (card = 1; card = 52; card+) row = rand() % 4; column = rand() % 13; while (deckrowcolumn != 0)

18、row = rand() % 4; column = rand() % 13; deckrowcolumn = card; void deal(int deck13, char *face, char *suit) int card, row, column; for (card = 1; card = 52; card+) for (row = 0; row = 3; row+) for (column = 0; column = 12; column+) if (deckrowcolumn = card) printf(%s of %sn, facecolumn, suitrow); 第二

19、种是直接用结构体实现,比较高效#include #include struct card char *suit; char *face;typedef struct card Card;void fillDeck(Card *, char *, char *);void shuffle(Card *);void deal(Card *);int main(void) Card card52; char *suit4 = hearts, diamonds, clubs, spades; char *face13 = one, two, three, four, five, six, seven,

20、 eight,nine, ten, eleven, twelve, thrteen; srand(time(NULL); fillDeck(card, face, suit); shuffle(card); deal(card); return 0;/*void shuffle(int deck13) int card, row, column; for (card = 1; card = 52; card+) row = rand() % 4; column = rand() % 13; while (deckrowcolumn != 0) row = rand() % 4; column

21、= rand() % 13; deckrowcolumn = card; void deal(int deck13, char *face, char *suit) int card, row, column; for (card = 1; card = 52; card+) for (row = 0; row = 3; row+) for (column = 0; column = 12; column+) if (deckrowcolumn = card) printf(%s of %sn, facecolumn, suitrow); */void fillDeck(Card *deck,

22、 char *face, char *suit) int i; for (i = 0; i 52; i+) decki.face = facei % 13; decki.suit = suiti / 13; void shuffle(Card *deck) int i, j; Card temp; for (i = 0; i 52; i+) j = rand() % 52; temp = decki; decki = deckj; deckj = temp; void deal(Card *deck) int i; for (i = 0; i 52; i+) printf(%s of %sn,

23、 decki.face, decki.suit); 用C+写的扑克牌洗牌、发牌和检测牌质量的程序代码(2010-12-12 23:00:09) 转载标签: c、扑克牌it用C+写的扑克牌洗牌、发牌和检测牌质量的程序代码编译器我用的是VS2008 。执行结果如图:源文件:有三个文件,一个是主函数文件 扑克牌游戏.cpp,一个是类函数成员的实现文件dapai.cpp,还有一个是系统生成的stdafx.app。头文件:有两个,一个是dapai.h,另一个是系统生成的stdafx.h。可以实现的简单功能:可以从一副扑克牌(不带王牌)发出n手牌(n4),每手牌发m张牌(n*m 52)。每次执行都是随机发

24、牌,发的牌没有重复出现,可以检测每一手牌的质量,比如有多少对牌出现、是否有同花出现、是否有连对出现、是否有顺子出现。我只是凭着我的思路写下的。里面没有复杂的算法,只是一些简单的语句,也有比较详细的注释。虽然写得不专业,但是我还会继续努力学习下去的。下面是源码:/dapai.h文件#pragma onceclass dapaipublic:int m;/要发几手牌int n;/要发牌的张数int count0;/是否有连续的五张牌出现标记int count2;/成对牌出现的对数int count3;/三张同号牌出现的个数int count4;/四张同号牌一起出现的标记int count222;v

25、oid xipai();/洗牌void fapai(int,int);/发牌int a413;/ 发牌时统计同号牌出现的次数int b44;/ 发牌时统计每中花色出现的次数dapai(void);dapai(void);private:int puke413;const char *color 4 ;/ 花色char *face 13 ;/ 牌面;/ stdafx.h : 标准系统包含文件的包含文件,这个是系统生成的stdafx.h/ 或是经常使用但不常更改的/ 特定于项目的包含文件/#pragma once#define WIN32_LEAN_AND_MEAN/ 从 Windows 头中排除

26、极少使用的资料#include #include / TODO: 在此处引用程序需要的其他头文件/ 扑克牌游戏.cpp : 定义控制台应用程序的入口点。/主函数文件#include stdafx.h#includeiostream#include dapai.husing namespace std;void compare( int ( *p1) 13 , int (*p2) 4 )/检测哪手牌比较好int max=*p2;int row1 = 0;for ( int i = 0; i 4; i+ )for ( int j =0; j max )max = *(*(p2 + i)+j);row1 = i;if ( max =5 )cout第 row1+1 手牌比较好!endl;int _tmain(int argc, _TCHAR* argv)dapai A;docout你要发几手牌?A.m;cout你要发多少张牌?A.n;if ( A.m*A.n 52 )cout 4)cout输入非法,只允许发4手牌以内! 52 | A.m 4 );A.xipai();A.fapai(A.m,A.n);compare(A.a, A.b);/dapai.cpp文件#include StdAfx.h#include dapai.h#incl

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1