我做過j2me斗地主還有麻將的游戲;我的做法是:
創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務領域包括:成都網(wǎng)站建設、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務,滿足客戶于互聯(lián)網(wǎng)時代的懷安網(wǎng)站設計、移動媒體設計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡建設合作伙伴!
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);
當然還要做例外處理,因為第14個元素存的是大小王,所以里面只包含兩個元素,要保證其cards[14][2]和cards[14][3]為NULL
3。如果隨機發(fā)牌?
策略一:
如果發(fā)N張牌;
int counter=0
Card[] myCards=new Card[n];//我想得到的隨機牌組
while(counter n){
a.每次生成0~14隨機數(shù) i;
b.再生成 0~3 隨機數(shù) j;
c. 判斷 如果 cards[i][j]==null,繼續(xù)循環(huán)
continue;
d. 判斷 如果 cards[i][j]!=null,得到一張隨機牌!
myCard[counter]=cards[i][j];
counter++; //并且~~~~~ 一定要~~~
cards[i][j]=null; //置空,以保證不會重復
}
策略二:
另一種可以效率更高的隨機產(chǎn)生牌的策略:
for(int i=0;icards.length;i++)
for(int j=0;j4;j++)
a.隨機生成 0~14 的數(shù)字 X;
b.隨機生成 0~3 的數(shù)字 Y;
c.讓 cards[i][j] 與cards[x][y]交換數(shù)據(jù)
然后再用循環(huán)將 cards[][]中的牌按順利發(fā)N張到 myCards[]中
如果第二個人需要,又可以發(fā)N張
另外: 由于牌的大小和花色都是按數(shù)字值表示的,所以可以很容易對cards數(shù)組進行排序!
同時給玩家發(fā)完牌后,玩家也可以隨時進行牌的排序。可以按大小排,也可以按花色牌,非常方便,整個代碼寫下來一共才一兩百行就搞定!
我還有連連看的消去兩張同樣牌的尋路算法。
泡泡龍碰撞反彈的軌跡算法。
麻將的胡牌算法
中國象棋行棋規(guī)律算法
等等。歡迎感興趣的朋友,有需要的立個貼,給分就貼
唉,如今賺個分不容易啊,好吧,代碼送上
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;
}
//隨機洗亂牌
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;
}
}
}
//打印隨機結(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);//洗牌,隨機
Card[] mycards= getCards(17,cards);//發(fā)17張牌出來
}
這總可以了吧? 總不會連main方法怎么用的也不知道吧? 哈
復制代碼
代碼如下:
?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];
}
//
設置第$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/";
?
#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[]?=?{"紅",?"綠",?"藍",?"白",?"粉",?"紫"};
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
藍底的方塊10
粉底的黑桃A
藍底的黑桃A
藍底的黑桃8
粉底的梅花7
紫底的黑桃4
紫底的梅花8
紫底的梅花2
白底的梅花K
藍底的紅心2
藍底的黑桃6
紅底的紅心Q
粉底的方塊K
藍底的黑桃Q
綠底的紅心10
紅底的黑桃9
粉底的黑桃K
白底的方塊J
紫底的紅心10
紫底的梅花Q
紅底的黑桃4
綠底的黑桃A
綠底的黑桃9
白底的方塊8
藍底的梅花6
白底的黑桃J
綠底的方塊4
紫底的紅心2
粉底的黑桃10
紫底的紅心Q
紅底的黑桃Q
粉底的黑桃6
綠底的梅花2
白底的方塊K
藍底的梅花J
紅底的方塊A
藍底的梅花3
粉底的梅花4
紫底的紅心4
紫底的紅心5
白底的方塊5
藍底的大王
綠底的黑桃8
紅底的黑桃5
綠底的紅心9
綠底的方塊7
白底的小王
藍底的方塊4
紫底的梅花5
綠底的方塊J
紫底的梅花10
白底的紅心2
紫底的黑桃6
白底的方塊9
紅底的方塊7
綠底的大王
紅底的紅心5
粉底的紅心J
藍底的黑桃3
藍底的紅心10
白底的紅心3
粉底的梅花6
綠底的黑桃7
白底的紅心10
綠底的方塊5
綠底的黑桃4
藍底的紅心3
白底的梅花8
紅底的黑桃7
白底的梅花A
藍底的方塊2
紫底的梅花J
粉底的梅花A
紫底的方塊Q
紅底的黑桃A
綠底的紅心8
綠底的紅心J
白底的方塊A
藍底的方塊5
粉底的方塊2
粉底的黑桃7
藍底的方塊3
白底的方塊6
紅底的方塊8
綠底的梅花A
藍底的方塊A
紫底的方塊5
紫底的方塊J
粉底的方塊10
粉底的梅花8
粉底的梅花10
紅底的紅心K
白底的大王
粉底的紅心Q
紫底的方塊4
藍底的紅心Q
藍底的梅花2
紫底的小王
白底的梅花J
綠底的紅心7
藍底的梅花Q
綠底的梅花10
紅底的梅花3
粉底的紅心7
紫底的方塊10
綠底的黑桃6
紅底的梅花4
藍底的梅花A
紅底的黑桃6
藍底的黑桃9
綠底的小王
紫底的紅心7
白底的紅心K
粉底的梅花Q
白底的紅心9
紫底的方塊A
紅底的紅心4
白底的黑桃9
綠底的梅花4
紅底的方塊4
綠底的紅心4
紅底的黑桃8
紅底的紅心7
紫底的方塊2
白底的黑桃3
藍底的黑桃10
紅底的梅花2
紅底的方塊J
白底的黑桃2
粉底的黑桃5
綠底的黑桃Q
紫底的黑桃8
綠底的紅心K
藍底的黑桃J
粉底的紅心9
粉底的梅花J
紫底的黑桃7
白底的梅花4
藍底的紅心8
紫底的方塊6
藍底的黑桃2
藍底的黑桃K
藍底的黑桃7
藍底的黑桃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
藍底的梅花8
白底的梅花6
紅底的方塊2
粉底的紅心6
紅底的黑桃J
綠底的紅心5
綠底的紅心2
藍底的紅心7
紫底的方塊8
藍底的方塊8
白底的黑桃Q
藍底的紅心4
綠底的方塊A
粉底的方塊5
紅底的梅花Q
紫底的黑桃A
粉底的方塊9
紫底的梅花9
白底的黑桃5
藍底的方塊K
白底的黑桃7
藍底的方塊6
藍底的黑桃5
白底的梅花3
粉底的黑桃2
粉底的方塊8
綠底的梅花3
白底的黑桃10
紫底的黑桃2
紅底的黑桃2
藍底的梅花4
紅底的梅花K
綠底的梅花Q
藍底的方塊Q
藍底的梅花9
紫底的黑桃J
綠底的紅心6
粉底的紅心10
藍底的梅花K
綠底的梅花J
紅底的紅心2
紅底的紅心6
粉底的黑桃9
藍底的紅心A
綠底的梅花8
紅底的紅心A
紫底的方塊7
白底的紅心4
紫底的大王
藍底的紅心5
綠底的黑桃J
紫底的紅心3
粉底的方塊Q
白底的紅心A
白底的梅花10
藍底的紅心J
綠底的梅花5
白底的梅花7
白底的紅心J
紫底的黑桃10
粉底的紅心A
紅底的紅心8
紫底的梅花3
粉底的梅花2
綠底的紅心Q
白底的黑桃K
藍底的方塊J
綠底的方塊2
白底的梅花Q
綠底的方塊K
粉底的黑桃3
綠底的梅花7
紅底的方塊6
紫底的黑桃9
紅底的梅花A
紫底的紅心A
粉底的紅心5
粉底的紅心4
粉底的紅心3
藍底的紅心9
紫底的紅心K
綠底的黑桃3
綠底的梅花6
紅底的紅心J
白底的方塊Q
粉底的大王
白底的黑桃8
藍底的梅花5
粉底的小王
白底的紅心7
紫底的方塊3
紫底的黑桃3
白底的梅花9
白底的方塊2
紅底的方塊3
藍底的方塊9
粉底的方塊6
紅底的方塊9
白底的方塊7
紫底的紅心9
白底的紅心Q
粉底的方塊7
綠底的梅花9
白底的方塊4
紫底的黑桃5
白底的梅花5
粉底的梅花9
紫底的黑桃K
紫底的紅心J
紅底的梅花9
紅底的方塊5
白底的紅心5
粉底的方塊4
紫底的方塊9
綠底的紅心A
綠底的方塊3
紅底的方塊Q
粉底的方塊3
藍底的紅心K
藍底的梅花7
紅底的黑桃K
綠底的方塊6
藍底的方塊7
白底的紅心8
藍底的小王
紅底的紅心10
白底的紅心6
白底的梅花2
紅底的梅花J
藍底的梅花10
紅底的紅心9
綠底的黑桃10
藍底的紅心6
粉底的方塊J
紅底的小王
粉底的紅心K
紫底的梅花6
白底的黑桃6
紫底的梅花4
粉底的黑桃J
紫底的紅心8
After.txt
紅底的紅心3
紅底的黑桃3
紅底的方塊3
紅底的梅花3
綠底的紅心3
綠底的黑桃3
綠底的方塊3
綠底的梅花3
藍底的紅心3
藍底的黑桃3
藍底的方塊3
藍底的梅花3
白底的紅心3
白底的黑桃3
白底的方塊3
白底的梅花3
粉底的紅心3
粉底的黑桃3
粉底的方塊3
粉底的梅花3
紫底的紅心3
紫底的黑桃3
紫底的方塊3
紫底的梅花3
紅底的紅心4
紅底的黑桃4
紅底的方塊4
紅底的梅花4
綠底的紅心4
綠底的黑桃4
綠底的方塊4
綠底的梅花4
藍底的紅心4
藍底的黑桃4
藍底的方塊4
藍底的梅花4
白底的紅心4
白底的黑桃4
白底的方塊4
白底的梅花4
粉底的紅心4
粉底的黑桃4
粉底的方塊4
粉底的梅花4
紫底的紅心4
紫底的黑桃4
紫底的方塊4
紫底的梅花4
紅底的紅心5
紅底的黑桃5
紅底的方塊5
紅底的梅花5
綠底的紅心5
綠底的黑桃5
綠底的方塊5
綠底的梅花5
藍底的紅心5
藍底的黑桃5
藍底的方塊5
藍底的梅花5
白底的紅心5
白底的黑桃5
白底的方塊5
白底的梅花5
粉底的紅心5
粉底的黑桃5
粉底的方塊5
粉底的梅花5
紫底的紅心5
紫底的黑桃5
紫底的方塊5
紫底的梅花5
紅底的紅心6
紅底的黑桃6
紅底的方塊6
紅底的梅花6
綠底的紅心6
綠底的黑桃6
綠底的方塊6
綠底的梅花6
藍底的紅心6
藍底的黑桃6
藍底的方塊6
藍底的梅花6
白底的紅心6
白底的黑桃6
白底的方塊6
白底的梅花6
粉底的紅心6
粉底的黑桃6
粉底的方塊6
粉底的梅花6
紫底的紅心6
紫底的黑桃6
紫底的方塊6
紫底的梅花6
紅底的紅心7
紅底的黑桃7
紅底的方塊7
紅底的梅花7
綠底的紅心7
綠底的黑桃7
綠底的方塊7
綠底的梅花7
藍底的紅心7
藍底的黑桃7
藍底的方塊7
藍底的梅花7
白底的紅心7
白底的黑桃7
白底的方塊7
白底的梅花7
粉底的紅心7
粉底的黑桃7
粉底的方塊7
粉底的梅花7
紫底的紅心7
紫底的黑桃7
紫底的方塊7
紫底的梅花7
紅底的紅心8
紅底的黑桃8
紅底的方塊8
紅底的梅花8
綠底的紅心8
綠底的黑桃8
綠底的方塊8
綠底的梅花8
藍底的紅心8
藍底的黑桃8
藍底的方塊8
藍底的梅花8
白底的紅心8
白底的黑桃8
白底的方塊8
白底的梅花8
粉底的紅心8
粉底的黑桃8
粉底的方塊8
粉底的梅花8
紫底的紅心8
紫底的黑桃8
紫底的方塊8
紫底的梅花8
紅底的紅心9
紅底的黑桃9
紅底的方塊9
紅底的梅花9
綠底的紅心9
綠底的黑桃9
綠底的方塊9
綠底的梅花9
藍底的紅心9
藍底的黑桃9
藍底的方塊9
藍底的梅花9
白底的紅心9
白底的黑桃9
白底的方塊9
白底的梅花9
粉底的紅心9
粉底的黑桃9
粉底的方塊9
粉底的梅花9
紫底的紅心9
紫底的黑桃9
紫底的方塊9
紫底的梅花9
紅底的紅心10
紅底的黑桃10
紅底的方塊10
紅底的梅花10
綠底的紅心10
綠底的黑桃10
綠底的方塊10
綠底的梅花10
藍底的紅心10
藍底的黑桃10
藍底的方塊10
藍底的梅花10
白底的紅心10
白底的黑桃10
白底的方塊10
白底的梅花10
粉底的紅心10
粉底的黑桃10
粉底的方塊10
粉底的梅花10
紫底的紅心10
紫底的黑桃10
紫底的方塊10
紫底的梅花10
紅底的紅心J
紅底的黑桃J
紅底的方塊J
紅底的梅花J
綠底的紅心J
綠底的黑桃J
綠底的方塊J
綠底的梅花J
藍底的紅心J
藍底的黑桃J
藍底的方塊J
藍底的梅花J
白底的紅心J
白底的黑桃J
白底的方塊J
白底的梅花J
粉底的紅心J
粉底的黑桃J
粉底的方塊J
粉底的梅花J
紫底的紅心J
紫底的黑桃J
紫底的方塊J
紫底的梅花J
紅底的紅心Q
紅底的黑桃Q
紅底的方塊Q
紅底的梅花Q
綠底的紅心Q
綠底的黑桃Q
綠底的方塊Q
綠底的梅花Q
藍底的紅心Q
藍底的黑桃Q
藍底的方塊Q
藍底的梅花Q
白底的紅心Q
白底的黑桃Q
白底的方塊Q
白底的梅花Q
粉底的紅心Q
粉底的黑桃Q
粉底的方塊Q
粉底的梅花Q
紫底的紅心Q
紫底的黑桃Q
紫底的方塊Q
紫底的梅花Q
紅底的紅心K
紅底的黑桃K
紅底的方塊K
紅底的梅花K
綠底的紅心K
綠底的黑桃K
綠底的方塊K
綠底的梅花K
藍底的紅心K
藍底的黑桃K
藍底的方塊K
藍底的梅花K
白底的紅心K
白底的黑桃K
白底的方塊K
白底的梅花K
粉底的紅心K
粉底的黑桃K
粉底的方塊K
粉底的梅花K
紫底的紅心K
紫底的黑桃K
紫底的方塊K
紫底的梅花K
紅底的紅心A
紅底的黑桃A
紅底的方塊A
紅底的梅花A
綠底的紅心A
綠底的黑桃A
綠底的方塊A
綠底的梅花A
藍底的紅心A
藍底的黑桃A
藍底的方塊A
藍底的梅花A
白底的紅心A
白底的黑桃A
白底的方塊A
白底的梅花A
粉底的紅心A
粉底的黑桃A
粉底的方塊A
粉底的梅花A
紫底的紅心A
紫底的黑桃A
紫底的方塊A
紫底的梅花A
紅底的紅心2
紅底的黑桃2
紅底的方塊2
紅底的梅花2
綠底的紅心2
綠底的黑桃2
綠底的方塊2
綠底的梅花2
藍底的紅心2
藍底的黑桃2
藍底的方塊2
藍底的梅花2
白底的紅心2
白底的黑桃2
白底的方塊2
白底的梅花2
粉底的紅心2
粉底的黑桃2
粉底的方塊2
粉底的梅花2
紫底的紅心2
紫底的黑桃2
紫底的方塊2
紫底的梅花2
紅底的小王
綠底的小王
藍底的小王
白底的小王
粉底的小王
紫底的小王
紅底的大王
綠底的大王
藍底的大王
白底的大王
粉底的大王
紫底的大王
#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計
文章轉(zhuǎn)載:http://jinyejixie.com/article32/ddcccsc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站、微信小程序、外貿(mào)網(wǎng)站建設、網(wǎng)站改版、響應式網(wǎng)站、電子商務
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)