php撲克牌數(shù)據(jù)結(jié)構(gòu) 撲克牌代碼面向?qū)ο蟪绦蛟O(shè)計(jì)

撲克牌不同花色分出來!

我做過j2me斗地主還有麻將的游戲;我的做法是:

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站建設(shè)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的懷安網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

1. 首先需要定義好數(shù)據(jù)結(jié)構(gòu)

牌類型

public class Card{

int value;// 有1~15 種可能

//1~13分別代表 A~K 14代表小王, 15代表大王

int color;//花色, 0~3種可以代表黑紅梅方

public Card(int v,int c){

value=v;color=c;

}

}

2. 定義好初始化牌堆(一幅新牌,沒切洗過)

Card[][] cards=new Card[15][4];

并初始化好它們,

for(int i=0;icards.length;i++)

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

Cards[i][j]=new Card(i,j);

當(dāng)然還要做例外處理,因?yàn)榈?4個(gè)元素存的是大小王,所以里面只包含兩個(gè)元素,要保證其cards[14][2]和cards[14][3]為NULL

3。如果隨機(jī)發(fā)牌?

策略一:

如果發(fā)N張牌;

int counter=0

Card[] myCards=new Card[n];//我想得到的隨機(jī)牌組

while(counter n){

a.每次生成0~14隨機(jī)數(shù) i;

b.再生成 0~3 隨機(jī)數(shù) j;

c. 判斷 如果 cards[i][j]==null,繼續(xù)循環(huán)

continue;

d. 判斷 如果 cards[i][j]!=null,得到一張隨機(jī)牌!

myCard[counter]=cards[i][j];

counter++; //并且~~~~~ 一定要~~~

cards[i][j]=null; //置空,以保證不會重復(fù)

}

策略二:

另一種可以效率更高的隨機(jī)產(chǎn)生牌的策略:

for(int i=0;icards.length;i++)

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

a.隨機(jī)生成 0~14 的數(shù)字 X;

b.隨機(jī)生成 0~3 的數(shù)字 Y;

c.讓 cards[i][j] 與cards[x][y]交換數(shù)據(jù)

然后再用循環(huán)將 cards[][]中的牌按順利發(fā)N張到 myCards[]中

如果第二個(gè)人需要,又可以發(fā)N張

另外: 由于牌的大小和花色都是按數(shù)字值表示的,所以可以很容易對cards數(shù)組進(jìn)行排序!

同時(shí)給玩家發(fā)完牌后,玩家也可以隨時(shí)進(jìn)行牌的排序??梢园创笮∨?,也可以按花色牌,非常方便,整個(gè)代碼寫下來一共才一兩百行就搞定!

我還有連連看的消去兩張同樣牌的尋路算法。

泡泡龍碰撞反彈的軌跡算法。

麻將的胡牌算法

中國象棋行棋規(guī)律算法

等等。歡迎感興趣的朋友,有需要的立個(gè)貼,給分就貼

唉,如今賺個(gè)分不容易啊,好吧,代碼送上

public static class Card{

int value;// 有1~15 種可能

int color;//花色, 0~3種可以代表黑紅梅方

public Card(int v,int c){

value=v;color=c;

}

}

public static Card[][] initCards(){

Card[][] cards=new Card[15][4];

for(int i=0;icards.length;i++) {

for(int j=0;j4;j++) {

cards[i][j]=new Card(i,j);

}

}

cards[14][2]=null;

cards[14][3]=null;

//打印生成結(jié)果

for(int i=0;icards.length;i++) {

for(int j=0;j4;j++) {

if(cards[i][j]!=null){

System.out.print(cards[i][j].value+","+cards[i][j].color);

System.out.print(" ");

}

}

System.out.println();

}

return cards;

}

//隨機(jī)洗亂牌

public static Card[][] randomCards( Card[][] cards){

Random random=new Random();

for(int i=0;icards.length;i++) {

for(int j=0;j4;j++) {

if(cards[i][j]!=null){

int x=random.nextInt(14);

int y=random.nextInt(4);

Card tmp=cards[i][j];

cards[i][j]=cards[x][y];

cards[x][y]=tmp;

}

}

}

//打印隨機(jī)結(jié)果

for(int i=0;icards.length;i++) {

for(int j=0;j4;j++) {

if(cards[i][j]!=null){

System.out.print(cards[i][j].value+","+cards[i][j].color);

System.out.print(" ");

}

}

System.out.println();

}

return cards;

}

public static Card[] getCards(int num,Card[][] cards){

Card[] myCards=new Card[num];

int counter=0;

for(int i=0;icards.length;i++) {

for(int j=0;j4;j++) {

if(counter=num){

break;

}

myCards[counter]=cards[i][j];

cards[i][j]=null;

counter++;

}

if(counter=num){

break;

}

}

System.out.println("");

System.out.println("打印發(fā)牌結(jié)果:");

for(int j=0;jmyCards.length;j++) {

if(myCards[j]!=null){

System.out.print(myCards[j].value+","+myCards[j].color);

System.out.print(" ");

}

}

return myCards;

}

main()方法里的調(diào)用{

Card[][] cards=initCards();//初始化牌

cards=randomCards(cards);//洗牌,隨機(jī)

Card[] mycards= getCards(17,cards);//發(fā)17張牌出來

}

這總可以了吧? 總不會連main方法怎么用的也不知道吧? 哈

PHP 數(shù)據(jù)結(jié)構(gòu) 算法 三元組 Triplet

復(fù)制代碼

代碼如下:

?php

/**

*

三元組

Triplet

*

*/

class

Triplet

{

private

$_data

=

null;

//

初始化三元組

public

function

init($val1,$val2,$val3)

{

$this-_data[0]

=

$val1;

$this-_data[1]

=

$val2;

$this-_data[2]

=

$val3;

return

true;

}

//

銷毀三元組

public

function

destroy()

{

unset($this-_data);

return

true;

}

//

返回第$key的值

public

function

get($key)

{

if($key

1

||

$key

3)

return

false;

return

$this-_data[$key

-

1];

}

//

設(shè)置第$key元的值為$val

public

function

put($key,$val)

{

if($key

1

||

$key

3)

return

false;

$this-_data[$key

-

1]

=

$val;

return

true;

}

//

是否按升序排序

public

function

isAscending()

{

return

($this-_data[0]

=

$this-_data[1])

($this-_data[1]

=

$this-_data[2]);

}

//

是否按降序排序

public

function

isDescending()

{

return

($this-_data[0]

=

$this-_data[1])

($this-_data[1]

=

$this-_data[2]);

}

//

獲取最大值

public

function

max()

{

return

($this-_data[0]

=

$this-_data[1])?

($this-_data[0]

=

$this-_data[2])?

$this-_data[0]

:

$this-_data[2]

:

($this-_data[1]

=

$this-_data[2])?

$this-_data[1]

:

$this-_data[2];

}

//

獲取最小值

public

function

min()

{

return

($this-_data[0]

=

$this-_data[1])?

($this-_data[0]

=

$this-_data[2])?

$this-_data[0]

:

$this-_data[2]

:

($this-_data[1]

=

$this-_data[2])?

$this-_data[1]

:

$this-_data[2];

}

}

//

$objTriplet

=

new

Triplet();

echo

"init:";var_dump($objTriplet-init(1,2,3));

echo

"br/";

echo

"get

1:";var_dump($objTriplet-get(1));

echo

"br/";

echo

"get

4:";var_dump($objTriplet-get(4));

echo

"br/";

//

false

echo

"put

3,4:";var_dump($objTriplet-put(3,4));

echo

"br/";

echo

"max:";var_dump($objTriplet-max());

echo

"br/";

echo

"min:";var_dump($objTriplet-min());

echo

"br/";

echo

"isAscending:";var_dump($objTriplet-isAscending());

echo

"br/";

echo

"isDescending:";var_dump($objTriplet-isDescending());

echo

"br/";

?

C語言編程題:撲克牌排序問題

#include?stdlib.h

#include?stdio.h

#include?time.h

#define?Color?short

#define?Red?0

#define?Green?1

#define?Blue?2

#define?White?3

#define?Pink?4

#define?Purple?5

#define?Suit?short

#define?Spades?1

#define?Hearts?0

#define?Diamonds?2

#define?Clubs?3

#define?J?11

#define?Q?12

#define?K?13

#define?A?1

#define?SmallJoker?14

#define?BigJoker?15

typedef?struct?{

int?ranking;

Color?color;

Suit?suit;

}?Card;

void?create_cards(Card?cards[],?int?size)?{

int?i,?j;

Card?temp;

for?(i?=?0;?i??size;?i++)?{

cards[i].color?=?i?/?54;

cards[i].suit?=?i?%?54?%?4;

cards[i].ranking?=?i?%?54?=?52???i?%?54?-?53?+?BigJoker?:?i?%?54?/?4?+?1;

}

for?(i?=?0;?i??size;?i++)?{

j?=?rand()?%?(size?-?i)?+?i;

if?(j?!=?i)?{

temp?=?cards[i];

cards[i]?=?cards[j];

cards[j]?=?temp;

}

}

}

void?print_card(Card*?card,?FILE*?file)?{

const?char*?color[]?=?{"紅",?"綠",?"藍(lán)",?"白",?"粉",?"紫"};

const?char*?suit[]?=?{"紅心",?"黑桃",?"方塊",?"梅花"};

const?char*?ranking[]?=?{"dummy",?"A",?"2",?"3",?"4",?"5",?"6",?"7",?"8",?"9",?"10",?"J",?"Q",?"K",?"小王",?"大王"};

fprintf(file,?"%s底的",?color[card-color]);

if?(card-ranking??SmallJoker)?{

fprintf(file,?"%s",?suit[card-suit]);

}

fprintf(file,?"%s\n",?ranking[card-ranking]);

}

int?cmp(const?void*?a,?const?void*?b)?{

Card*?ca?=?(Card*)a;

Card*?cb?=?(Card*)b;

int?ranking[2]?=?{ca-ranking,?cb-ranking},?i;

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

if?(ranking[i]?=?SmallJoker)?{

ranking[i]?+=?2;

}

else?if(ranking[i]?=?2)?{

ranking[i]?+=?13;

}

}

if?(ranking[0]?!=?ranking[1])?{

return?ranking[0]?-?ranking[1];

}

if?(ca-color?!=?cb-color)?{

return?ca-color?-?cb-color;

}

return?ca-suit?-?cb-suit;

}

void?sort_all_cards(Card?cards[],?int?size)?{

qsort(cards,?size,?sizeof(cards[0]),?cmp);

}

int?main()?{

const?int?size?=?54?*?6;

int?i;

Card?cards[size];

FILE?*before,?*after;

srand((unsigned?int)time(NULL));

create_cards(cards,?size);

before?=?fopen("Before.txt",?"w");

if?(before?==?NULL)?{

printf("Error?open?Before.txt\n");

exit(-1);

}

for?(i?=?0;?i??size;?i++)?{

print_card(cards?+?i,?before);

}

fclose(before);

sort_all_cards(cards,?size);

after?=?fopen("After.txt",?"w");

if?(before?==?NULL)?{

printf("Error?open?After.txt\n");

exit(-1);

}

for?(i?=?0;?i??size;?i++)?{

print_card(cards?+?i,?after);

}

fclose(after);

return?0;

}

Before.txt (僅供參考)

白底的方塊3

紫底的梅花K

綠底的方塊9

紅底的梅花10

綠底的黑桃K

白底的方塊10

綠底的紅心3

紫底的梅花A

藍(lán)底的方塊10

粉底的黑桃A

藍(lán)底的黑桃A

藍(lán)底的黑桃8

粉底的梅花7

紫底的黑桃4

紫底的梅花8

紫底的梅花2

白底的梅花K

藍(lán)底的紅心2

藍(lán)底的黑桃6

紅底的紅心Q

粉底的方塊K

藍(lán)底的黑桃Q

綠底的紅心10

紅底的黑桃9

粉底的黑桃K

白底的方塊J

紫底的紅心10

紫底的梅花Q

紅底的黑桃4

綠底的黑桃A

綠底的黑桃9

白底的方塊8

藍(lán)底的梅花6

白底的黑桃J

綠底的方塊4

紫底的紅心2

粉底的黑桃10

紫底的紅心Q

紅底的黑桃Q

粉底的黑桃6

綠底的梅花2

白底的方塊K

藍(lán)底的梅花J

紅底的方塊A

藍(lán)底的梅花3

粉底的梅花4

紫底的紅心4

紫底的紅心5

白底的方塊5

藍(lán)底的大王

綠底的黑桃8

紅底的黑桃5

綠底的紅心9

綠底的方塊7

白底的小王

藍(lán)底的方塊4

紫底的梅花5

綠底的方塊J

紫底的梅花10

白底的紅心2

紫底的黑桃6

白底的方塊9

紅底的方塊7

綠底的大王

紅底的紅心5

粉底的紅心J

藍(lán)底的黑桃3

藍(lán)底的紅心10

白底的紅心3

粉底的梅花6

綠底的黑桃7

白底的紅心10

綠底的方塊5

綠底的黑桃4

藍(lán)底的紅心3

白底的梅花8

紅底的黑桃7

白底的梅花A

藍(lán)底的方塊2

紫底的梅花J

粉底的梅花A

紫底的方塊Q

紅底的黑桃A

綠底的紅心8

綠底的紅心J

白底的方塊A

藍(lán)底的方塊5

粉底的方塊2

粉底的黑桃7

藍(lán)底的方塊3

白底的方塊6

紅底的方塊8

綠底的梅花A

藍(lán)底的方塊A

紫底的方塊5

紫底的方塊J

粉底的方塊10

粉底的梅花8

粉底的梅花10

紅底的紅心K

白底的大王

粉底的紅心Q

紫底的方塊4

藍(lán)底的紅心Q

藍(lán)底的梅花2

紫底的小王

白底的梅花J

綠底的紅心7

藍(lán)底的梅花Q

綠底的梅花10

紅底的梅花3

粉底的紅心7

紫底的方塊10

綠底的黑桃6

紅底的梅花4

藍(lán)底的梅花A

紅底的黑桃6

藍(lán)底的黑桃9

綠底的小王

紫底的紅心7

白底的紅心K

粉底的梅花Q

白底的紅心9

紫底的方塊A

紅底的紅心4

白底的黑桃9

綠底的梅花4

紅底的方塊4

綠底的紅心4

紅底的黑桃8

紅底的紅心7

紫底的方塊2

白底的黑桃3

藍(lán)底的黑桃10

紅底的梅花2

紅底的方塊J

白底的黑桃2

粉底的黑桃5

綠底的黑桃Q

紫底的黑桃8

綠底的紅心K

藍(lán)底的黑桃J

粉底的紅心9

粉底的梅花J

紫底的黑桃7

白底的梅花4

藍(lán)底的紅心8

紫底的方塊6

藍(lán)底的黑桃2

藍(lán)底的黑桃K

藍(lán)底的黑桃7

藍(lán)底的黑桃4

紅底的方塊10

紅底的黑桃3

粉底的紅心8

紅底的梅花7

粉底的梅花5

粉底的紅心2

綠底的方塊8

紅底的黑桃10

紅底的梅花6

紫底的梅花7

白底的黑桃A

紅底的梅花5

白底的黑桃4

粉底的梅花K

綠底的方塊Q

紅底的方塊K

紫底的方塊K

粉底的方塊A

紫底的紅心6

粉底的梅花3

粉底的黑桃4

綠底的黑桃2

綠底的方塊10

綠底的梅花K

紅底的紅心3

粉底的黑桃8

紅底的梅花8

粉底的黑桃Q

紅底的大王

紫底的黑桃Q

綠底的黑桃5

藍(lán)底的梅花8

白底的梅花6

紅底的方塊2

粉底的紅心6

紅底的黑桃J

綠底的紅心5

綠底的紅心2

藍(lán)底的紅心7

紫底的方塊8

藍(lán)底的方塊8

白底的黑桃Q

藍(lán)底的紅心4

綠底的方塊A

粉底的方塊5

紅底的梅花Q

紫底的黑桃A

粉底的方塊9

紫底的梅花9

白底的黑桃5

藍(lán)底的方塊K

白底的黑桃7

藍(lán)底的方塊6

藍(lán)底的黑桃5

白底的梅花3

粉底的黑桃2

粉底的方塊8

綠底的梅花3

白底的黑桃10

紫底的黑桃2

紅底的黑桃2

藍(lán)底的梅花4

紅底的梅花K

綠底的梅花Q

藍(lán)底的方塊Q

藍(lán)底的梅花9

紫底的黑桃J

綠底的紅心6

粉底的紅心10

藍(lán)底的梅花K

綠底的梅花J

紅底的紅心2

紅底的紅心6

粉底的黑桃9

藍(lán)底的紅心A

綠底的梅花8

紅底的紅心A

紫底的方塊7

白底的紅心4

紫底的大王

藍(lán)底的紅心5

綠底的黑桃J

紫底的紅心3

粉底的方塊Q

白底的紅心A

白底的梅花10

藍(lán)底的紅心J

綠底的梅花5

白底的梅花7

白底的紅心J

紫底的黑桃10

粉底的紅心A

紅底的紅心8

紫底的梅花3

粉底的梅花2

綠底的紅心Q

白底的黑桃K

藍(lán)底的方塊J

綠底的方塊2

白底的梅花Q

綠底的方塊K

粉底的黑桃3

綠底的梅花7

紅底的方塊6

紫底的黑桃9

紅底的梅花A

紫底的紅心A

粉底的紅心5

粉底的紅心4

粉底的紅心3

藍(lán)底的紅心9

紫底的紅心K

綠底的黑桃3

綠底的梅花6

紅底的紅心J

白底的方塊Q

粉底的大王

白底的黑桃8

藍(lán)底的梅花5

粉底的小王

白底的紅心7

紫底的方塊3

紫底的黑桃3

白底的梅花9

白底的方塊2

紅底的方塊3

藍(lán)底的方塊9

粉底的方塊6

紅底的方塊9

白底的方塊7

紫底的紅心9

白底的紅心Q

粉底的方塊7

綠底的梅花9

白底的方塊4

紫底的黑桃5

白底的梅花5

粉底的梅花9

紫底的黑桃K

紫底的紅心J

紅底的梅花9

紅底的方塊5

白底的紅心5

粉底的方塊4

紫底的方塊9

綠底的紅心A

綠底的方塊3

紅底的方塊Q

粉底的方塊3

藍(lán)底的紅心K

藍(lán)底的梅花7

紅底的黑桃K

綠底的方塊6

藍(lán)底的方塊7

白底的紅心8

藍(lán)底的小王

紅底的紅心10

白底的紅心6

白底的梅花2

紅底的梅花J

藍(lán)底的梅花10

紅底的紅心9

綠底的黑桃10

藍(lán)底的紅心6

粉底的方塊J

紅底的小王

粉底的紅心K

紫底的梅花6

白底的黑桃6

紫底的梅花4

粉底的黑桃J

紫底的紅心8

After.txt

紅底的紅心3

紅底的黑桃3

紅底的方塊3

紅底的梅花3

綠底的紅心3

綠底的黑桃3

綠底的方塊3

綠底的梅花3

藍(lán)底的紅心3

藍(lán)底的黑桃3

藍(lán)底的方塊3

藍(lán)底的梅花3

白底的紅心3

白底的黑桃3

白底的方塊3

白底的梅花3

粉底的紅心3

粉底的黑桃3

粉底的方塊3

粉底的梅花3

紫底的紅心3

紫底的黑桃3

紫底的方塊3

紫底的梅花3

紅底的紅心4

紅底的黑桃4

紅底的方塊4

紅底的梅花4

綠底的紅心4

綠底的黑桃4

綠底的方塊4

綠底的梅花4

藍(lán)底的紅心4

藍(lán)底的黑桃4

藍(lán)底的方塊4

藍(lán)底的梅花4

白底的紅心4

白底的黑桃4

白底的方塊4

白底的梅花4

粉底的紅心4

粉底的黑桃4

粉底的方塊4

粉底的梅花4

紫底的紅心4

紫底的黑桃4

紫底的方塊4

紫底的梅花4

紅底的紅心5

紅底的黑桃5

紅底的方塊5

紅底的梅花5

綠底的紅心5

綠底的黑桃5

綠底的方塊5

綠底的梅花5

藍(lán)底的紅心5

藍(lán)底的黑桃5

藍(lán)底的方塊5

藍(lán)底的梅花5

白底的紅心5

白底的黑桃5

白底的方塊5

白底的梅花5

粉底的紅心5

粉底的黑桃5

粉底的方塊5

粉底的梅花5

紫底的紅心5

紫底的黑桃5

紫底的方塊5

紫底的梅花5

紅底的紅心6

紅底的黑桃6

紅底的方塊6

紅底的梅花6

綠底的紅心6

綠底的黑桃6

綠底的方塊6

綠底的梅花6

藍(lán)底的紅心6

藍(lán)底的黑桃6

藍(lán)底的方塊6

藍(lán)底的梅花6

白底的紅心6

白底的黑桃6

白底的方塊6

白底的梅花6

粉底的紅心6

粉底的黑桃6

粉底的方塊6

粉底的梅花6

紫底的紅心6

紫底的黑桃6

紫底的方塊6

紫底的梅花6

紅底的紅心7

紅底的黑桃7

紅底的方塊7

紅底的梅花7

綠底的紅心7

綠底的黑桃7

綠底的方塊7

綠底的梅花7

藍(lán)底的紅心7

藍(lán)底的黑桃7

藍(lán)底的方塊7

藍(lán)底的梅花7

白底的紅心7

白底的黑桃7

白底的方塊7

白底的梅花7

粉底的紅心7

粉底的黑桃7

粉底的方塊7

粉底的梅花7

紫底的紅心7

紫底的黑桃7

紫底的方塊7

紫底的梅花7

紅底的紅心8

紅底的黑桃8

紅底的方塊8

紅底的梅花8

綠底的紅心8

綠底的黑桃8

綠底的方塊8

綠底的梅花8

藍(lán)底的紅心8

藍(lán)底的黑桃8

藍(lán)底的方塊8

藍(lán)底的梅花8

白底的紅心8

白底的黑桃8

白底的方塊8

白底的梅花8

粉底的紅心8

粉底的黑桃8

粉底的方塊8

粉底的梅花8

紫底的紅心8

紫底的黑桃8

紫底的方塊8

紫底的梅花8

紅底的紅心9

紅底的黑桃9

紅底的方塊9

紅底的梅花9

綠底的紅心9

綠底的黑桃9

綠底的方塊9

綠底的梅花9

藍(lán)底的紅心9

藍(lán)底的黑桃9

藍(lán)底的方塊9

藍(lán)底的梅花9

白底的紅心9

白底的黑桃9

白底的方塊9

白底的梅花9

粉底的紅心9

粉底的黑桃9

粉底的方塊9

粉底的梅花9

紫底的紅心9

紫底的黑桃9

紫底的方塊9

紫底的梅花9

紅底的紅心10

紅底的黑桃10

紅底的方塊10

紅底的梅花10

綠底的紅心10

綠底的黑桃10

綠底的方塊10

綠底的梅花10

藍(lán)底的紅心10

藍(lán)底的黑桃10

藍(lán)底的方塊10

藍(lán)底的梅花10

白底的紅心10

白底的黑桃10

白底的方塊10

白底的梅花10

粉底的紅心10

粉底的黑桃10

粉底的方塊10

粉底的梅花10

紫底的紅心10

紫底的黑桃10

紫底的方塊10

紫底的梅花10

紅底的紅心J

紅底的黑桃J

紅底的方塊J

紅底的梅花J

綠底的紅心J

綠底的黑桃J

綠底的方塊J

綠底的梅花J

藍(lán)底的紅心J

藍(lán)底的黑桃J

藍(lán)底的方塊J

藍(lán)底的梅花J

白底的紅心J

白底的黑桃J

白底的方塊J

白底的梅花J

粉底的紅心J

粉底的黑桃J

粉底的方塊J

粉底的梅花J

紫底的紅心J

紫底的黑桃J

紫底的方塊J

紫底的梅花J

紅底的紅心Q

紅底的黑桃Q

紅底的方塊Q

紅底的梅花Q

綠底的紅心Q

綠底的黑桃Q

綠底的方塊Q

綠底的梅花Q

藍(lán)底的紅心Q

藍(lán)底的黑桃Q

藍(lán)底的方塊Q

藍(lán)底的梅花Q

白底的紅心Q

白底的黑桃Q

白底的方塊Q

白底的梅花Q

粉底的紅心Q

粉底的黑桃Q

粉底的方塊Q

粉底的梅花Q

紫底的紅心Q

紫底的黑桃Q

紫底的方塊Q

紫底的梅花Q

紅底的紅心K

紅底的黑桃K

紅底的方塊K

紅底的梅花K

綠底的紅心K

綠底的黑桃K

綠底的方塊K

綠底的梅花K

藍(lán)底的紅心K

藍(lán)底的黑桃K

藍(lán)底的方塊K

藍(lán)底的梅花K

白底的紅心K

白底的黑桃K

白底的方塊K

白底的梅花K

粉底的紅心K

粉底的黑桃K

粉底的方塊K

粉底的梅花K

紫底的紅心K

紫底的黑桃K

紫底的方塊K

紫底的梅花K

紅底的紅心A

紅底的黑桃A

紅底的方塊A

紅底的梅花A

綠底的紅心A

綠底的黑桃A

綠底的方塊A

綠底的梅花A

藍(lán)底的紅心A

藍(lán)底的黑桃A

藍(lán)底的方塊A

藍(lán)底的梅花A

白底的紅心A

白底的黑桃A

白底的方塊A

白底的梅花A

粉底的紅心A

粉底的黑桃A

粉底的方塊A

粉底的梅花A

紫底的紅心A

紫底的黑桃A

紫底的方塊A

紫底的梅花A

紅底的紅心2

紅底的黑桃2

紅底的方塊2

紅底的梅花2

綠底的紅心2

綠底的黑桃2

綠底的方塊2

綠底的梅花2

藍(lán)底的紅心2

藍(lán)底的黑桃2

藍(lán)底的方塊2

藍(lán)底的梅花2

白底的紅心2

白底的黑桃2

白底的方塊2

白底的梅花2

粉底的紅心2

粉底的黑桃2

粉底的方塊2

粉底的梅花2

紫底的紅心2

紫底的黑桃2

紫底的方塊2

紫底的梅花2

紅底的小王

綠底的小王

藍(lán)底的小王

白底的小王

粉底的小王

紫底的小王

紅底的大王

綠底的大王

藍(lán)底的大王

白底的大王

粉底的大王

紫底的大王

c語言編程題??!急求!! 關(guān)于撲克牌(要完整代碼最好有解釋)

#includestdio.h

int asc(char p[][3]);

int?isError(char p1[][3],char p2[][3]);

void compare(char p3[][3],char p4[][3]);

int main()

{

char a[3][3],b[3][3],c;

int i,j,resulta,resultb,result,flag=0;

printf("請輸入A的撲克牌,撲克牌之間以空格隔開,然后按下回車:\n");

for(i=0;i3;i++)

{

for(j=0;j3;j++)

{

c=getchar();

if(c!=' 'c!=10)

{

if(j==0)

{

if(c=='H'||c=='S'||c=='D'||c=='C')

;

else

{

printf("Input Error!\n");

return 0;

}

}

if(j==1)

{

if(c=='J'||c=='Q'||c=='K'||c=='A'||(c='1'c='9'))

{

if(c=='J')

c=59;

if(c=='Q')

c=60;

if(c=='K')

c=61;

if(c=='A')

c=62;

if(c=='1')

flag=1;

}

else

{

printf("Input Error!\n");

return 0;

}

}

if(j==2)

{

if(c!='0')

{

printf("Input Error!\n");

return 0;

}else

{

flag=0;

c=58;

a[i][1]=c;

break;

}

}

a[i][j]=c;

}else

{

if(flag==1)

{

printf("Input Error!\n");

return 0;

}

if(j==2)

break;

j--;

}

}

}

printf("請輸入B的撲克牌,撲克牌之間以空格隔開,然后按下回車:\n");

for(i=0;i3;i++)

{

for(j=0;j3;j++)

{

c=getchar();

if(c!=' 'c!=10)

{

if(j==0)

{

if(c=='H'||c=='S'||c=='D'||c=='C')

;

else

{

printf("Input Error!\n");

return 0;

}

}

if(j==1)

{

if(c=='J'||c=='Q'||c=='K'||c=='A'||(c='1'c='9'))

{

if(c=='J')

c=59;

if(c=='Q')

c=60;

if(c=='K')

c=61;

if(c=='A')

c=62;

if(c=='1')

flag=1;

}

else

{

printf("Input Error!\n");

return 0;

}

}

if(j==2)

{

if(c!='0')

{

printf("Input Error!\n");

return 0;

}else

{

flag=0;

c=58;

b[i][1]=c;

break;

}

}

b[i][j]=c;

}else

{

if(flag==1)

{

printf("Input Error!\n");

return 0;

}

if(j==2)

break;

j--;

}

}

}

resulta=asc(a);

if(resulta==0)

return 0;

resultb=asc(b);

if(resultb==0)

return 0;

result=isError(a,b);

if(result==0)

return 0;

compare(a,b);

for(i=0;i3;i++)

{

a[i][2]='\0';

b[i][2]='\0';

}

printf("A: ");

for(i=0;i3;i++)

{

if(a[i][1]'2'a[i][1]'9')

printf("%s ",a[i]);

else

{

if(a[i][1]==58)

{

printf("%c",a[i][0]);

printf("10 ");

}

if(a[i][1]==59)

{

printf("%c",a[i][0]);

printf("J ");

}

if(a[i][1]==60)

{

printf("%c",a[i][0]);

printf("Q ");

}

if(a[i][1]==61)

{

printf("%c",a[i][0]);

printf("K ");

}

if(a[i][1]==62)

{

printf("%c",a[i][0]);

printf("A ");

}

}

}

printf("\nB: ");

for(i=0;i3;i++)

{

if(b[i][1]'2'b[i][1]'9')

printf("%s ",b[i]);

else

{

if(b[i][1]==58)

{

printf("%c",b[i][0]);

printf("10 ");

}

if(b[i][1]==59)

{

printf("%c",b[i][0]);

printf("J ");

}

if(b[i][1]==60)

{

printf("%c",b[i][0]);

printf("Q ");

}

if(b[i][1]==61)

{

printf("%c",b[i][0]);

printf("K ");

}

if(b[i][1]==62)

{

printf("%c",b[i][0]);

printf("A ");

}

}

}

printf("\n");

return 0;

}

int asc(char p[][3])

{

int m,temp[2];

if(p[0][1]==p[1][1])

{

if(p[0][0]==p[1][0])

{

printf("Input Error!\n");

return 0;

}

}

if(p[1][1]==p[2][1])

{

if(p[1][0]==p[2][0])

{

printf("Input Error!\n");

return 0;

}

}

if(p[0][1]==p[2][1])

{

if(p[0][0]==p[2][0])

{

printf("Input Error!\n");

return 0;

}

}

m=0;

if(p[m][1]p[m+1][1])

{

temp[0]=p[m][0];

temp[1]=p[m][1];

p[m][0]=p[m+1][0];

p[m][1]=p[m+1][1];

p[m+1][0]=temp[0];

p[m+1][1]=temp[1];

}

if(p[m][1]p[m+2][1])

{

temp[0]=p[m][0];

temp[1]=p[m][1];

p[m][0]=p[m+2][0];

p[m][1]=p[m+2][1];

p[m+2][0]=temp[0];

p[m+2][1]=temp[1];

}

m=1;

if(p[m][1]p[m+1][1])

{

temp[0]=p[m][0];

temp[1]=p[m][1];

p[m][0]=p[m+1][0];

p[m][1]=p[m+1][1];

p[m+1][0]=temp[0];

p[m+1][1]=temp[1];

}

return 1;

}

int?isError(char p1[][3],char p2[][3])

{

int n;

for(n=0;n3;n++)

{

if(p1[n][0]==p2[0][0]p1[n][1]==p2[0][1])

{

printf("Input Error!\n");

return 0;

}

if(p1[n][0]==p2[n][0]p1[1][1]==p2[1][1])

{

printf("Input Error!\n");

return 0;

}

if(p1[n][0]==p2[n][0]p1[2][1]==p2[2][1])

{

printf("Input Error!\n");

return 0;

}

}

return 1;

}

void compare(char p3[][3],char p4[][3])

{

int x;

for(x=0;x3;x++)

{

if(p3[x][1]==p4[x][1])

continue;

if(p3[x][1]p4[x][1]){

printf("Winner is A!\n");

return;

}

if(p3[x][1]p4[x][1]){

printf("Winner is B!\n");

return;

}

}

printf("Winner is X!\n");

}

這次對了。

本文題目:php撲克牌數(shù)據(jù)結(jié)構(gòu) 撲克牌代碼面向?qū)ο蟪绦蛟O(shè)計(jì)
文章轉(zhuǎn)載:http://bm7419.com/article32/ddcccsc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、微信小程序、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站改版響應(yīng)式網(wǎng)站、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)