當前位置:首頁 » 操作系統 » cocos2d鬥地主源碼

cocos2d鬥地主源碼

發布時間: 2022-04-23 15:45:46

A. 請問哪為朋友知道比較完整的網頁游戲源碼(如視頻鬥地主,三國等)一定要完整的哦 商業版的最好

源碼超市!

B. 求一個用c++編寫的dos版的鬥地主的完整源碼,小女子不勝感激。

好復雜啊 這么復雜我怎麼知道

C. 求java單機鬥地主完整源碼

一共實現了如下功能
1. 搶地主功能,玩家可以選擇自己當地主,還是留給電腦搶地主
2.牌型判斷,判斷 單牌,對子,3對,順子,飛機,等等可能情況 為後面出牌跟牌做准備
3. 實現輪流出牌邏輯,並簡單測試
4. 實現倒計時功能,如果玩家30秒為出牌自動超時,歸為下一家出牌,電腦默認操作時間2秒

public void run() { while(i>-1 && isRun){ main.time[1].setText("倒計時:"+i--); second(1);//等一秒 } if(i==-1)//正常終結,說明超時 main.time[1].setText("不搶"); //如果自己搶到地主 if(main.time[1].getText().equals("搶地主")){ //得到地主牌 main.playerList[1].addAll(main.lordList); openlord(true); second(2);//等待五秒 Common.order(main.playerList[1]); Common.rePosition(main, main.playerList[1], 1); setlord(1); }else{ //電腦選地主 if(Common.getScore(main.playerList[0])

上面是實現邏輯的一個線程
Time.java文件裡面

下面給出拆牌的邏輯

下面是一個枚舉,命名不是很規范,但是容易懂,形象化的特徵10多種牌型

package com; public enum CardType { c1,//單牌 c2,//對子 c3,//3不帶 c4,//炸彈 c31,//3帶1 c32,//3帶2 c411,//4帶2個單,或者一對 c422,//4帶2對 c123,//連子 c1122,//連隊 c111222,//飛機 c11122234,//飛機帶單排 c1112223344,//飛機帶對子 c0//不能出牌 }

下面是具體判斷方法
//判斷牌型 public static CardType jugdeType(List list){ //因為之前排序過所以比較好判斷 int len=list.size(); //單牌,對子,3不帶,4個一樣炸彈 if(len<=4) { //如果第一個和最後個相同,說明全部相同 if(Common.getValue(list.get(0))==Common.getValue(list.get(len-1))) { switch (len) { case 1: return CardType.c1; case 2: return CardType.c2; case 3: return CardType.c3; case 4: return CardType.c4; } } //雙王,化為對子返回 if(len==2&&Common.getColor(list.get(1))==5) return CardType.c2; //當第一個和最後個不同時,3帶1 if(len==4 &&Common.getValue(list.get(0))==Common.getValue(list.get(len-2))) return CardType.c31; else { return CardType.c0; } } //當5張以上時,連字,3帶2,飛機,2順,4帶2等等 if(len>=5) {//現在按相同數字最大出現次數 Card_index card_index=new Card_index(); for(int i=0;i<4;i++) card_index.a[i]=new ArrayList(); //求出各種數字出現頻率 Common.getMax( card_index,list); //a[0,1,2,3]分別表示重復1,2,3,4次的牌 //3帶2 -----必含重復3次的牌 if(card_index.a[2].size()==1 &&card_index.a[1].size()==1 && len==5) return CardType.c32; //4帶2(單,雙) if(card_index.a[3].size()==1 && len==6) return CardType.c411; if(card_index.a[3].size()==1 && card_index.a[1].size()==2 &&len==8) return CardType.c422; //單連,保證不存在王 if((Common.getColor(list.get(0))!=5)&&(card_index.a[0].size()==len) && (Common.getValue(list.get(0))-Common.getValue(list.get(len-1))==len-1)) return CardType.c123; //連隊 if(card_index.a[1].size()==len/2 && len%2==0 && len/2>=3 &&(Common.getValue(list.get(0))-Common.getValue(list.get(len-1))==(len/2-1))) return CardType.c1122; //飛機 if(card_index.a[2].size()==len/3 && (len%3==0) && (Common.getValue(list.get(0))-Common.getValue(list.get(len-1))==(len/3-1))) return CardType.c111222; //飛機帶n單,n/2對 if(card_index.a[2].size()==len/4 && ((Integer)(card_index.a[2].get(len/4-1))-(Integer)(card_index.a[2].get(0))==len/4-1)) return CardType.c11122234; //飛機帶n雙 if(card_index.a[2].size()==len/5 && card_index.a[2].size()==len/5 && ((Integer)(card_index.a[2].get(len/5-1))-(Integer)(card_index.a[2].get(0))==len/5-1)) return CardType.c1112223344; } return CardType.c0; }

下面是上面函數用到的一個函數
//返回花色 public static int getColor(Card card){ return Integer.parseInt(card.name.substring(0,1)); } //返回值 public static int getValue(Card card){ int i= Integer.parseInt(card.name.substring(2,card.name.length())); if(card.name.substring(2,card.name.length()).equals("2")) i+=13; if(card.name.substring(2,card.name.length()).equals("1")) i+=13; return i; } //得到最大相同數 public static void getMax(Card_index card_index,List list){ int count[]=new int[14];//1-13各算一種,王算第14種 for(int i=0;i<14;i++) count[i]=0; for(int i=0,len=list.size();i<14;i++) { switch (count[i]) { case 1: card_index.a[0].add(i+1); break; case 2: card_index.a[1].add(i+1); break; case 3: card_index.a[2].add(i+1); break; case 4: card_index.a[3].add(i+1); break; } } } } class Card_index{ List a[]=new ArrayList[4];//單張 }

D. 簡易c++鬥地主源碼,簡單的鬥地主不需要ui,只要能發牌,隨機決定地主,把牌按大小順序排列

#include <time.h>
#include <iostream>
#include <string>
#include <vector>

enum em_CardClass_t
{
_CC_hearts = 0, // 紅桃
_CC_Spade, // 黑桃
_CC_Clubs, // 梅花
_CC_Diamonds, // 方塊
_CC_King // 大小王
};

struct st_Card_t
{
em_CardClass_t _emCardClass;
UINT _uCardIndex; // _emCardClass為_CC_King時,有效取值[1,2]
// _emCardClass非_CC_King時,有效取值[1,13]
};

using namespace std;

void InitCard(vector<st_Card_t>& vtCard)
{
st_Card_t card;
for( UINT i=0; i<_CC_King; i++ )
{
card._emCardClass = (em_CardClass_t)i;
for( UINT j=1; j<14; j++ )
{
card._uCardIndex = j;
vtCard.push_back(card);
}
}

card._emCardClass = _CC_King;
card._uCardIndex = 1;
vtCard.push_back(card);

card._uCardIndex = 2;
vtCard.push_back(card);
}
// 分牌
void DealCard(vector<st_Card_t>& vtCard, vector<st_Card_t>& vtPlayer1,
vector<st_Card_t>& vtPlayer2, vector<st_Card_t>& vtPlayer3)
{
srand( (unsigned)time( NULL ) );
for( int i = 0; i < 51; i++ )
{
int iCard = rand() % vtCard.size();

switch( i % 3 )
{
case 0:
vtPlayer1.push_back(vtCard[iCard]);
break;

case 1:
vtPlayer2.push_back(vtCard[iCard]);
break;

default:
vtPlayer3.push_back(vtCard[iCard]);
break;
}

if( iCard != vtCard.size()-1 )
{
vtCard[iCard] = vtCard[vtCard.size()-1];
}
vtCard.pop_back();
}
}
// 叫牌
int Bid(vector<st_Card_t>& vtCard, vector<st_Card_t>& vtPlayer1,
vector<st_Card_t>& vtPlayer2, vector<st_Card_t>& vtPlayer3)
{
srand( (unsigned)time( NULL ) );

int iBider = rand() % 3; // 叫牌者,也就是地主
vector<st_Card_t>* pPlayer = NULL;
switch( iBider )
{
case 0:
pPlayer = &vtPlayer1;
break;

case 1:
pPlayer = &vtPlayer2;
break;

default:
pPlayer = &vtPlayer3;
break;
}

for( UINT i = 0; i < vtCard.size(); i++ )
{
pPlayer->push_back(vtCard[i]);
}
return iBider;
}
// 整牌(按紅桃、黑桃、梅花、方塊、小大王的花色順序整理,同一花色再按從小到大的順序整理)
void SortCard(vector<st_Card_t>& vtPlayer)
{
st_Card_t tmp;
for( UINT i=0; i<vtPlayer.size()-1; i++ )
{
for( UINT j=i+1; j<vtPlayer.size(); j++ )
{
if( vtPlayer[i]._emCardClass < vtPlayer[j]._emCardClass )
{
continue;
}

if( vtPlayer[i]._emCardClass == vtPlayer[j]._emCardClass &&
vtPlayer[i]._uCardIndex < vtPlayer[j]._uCardIndex )
{
continue;
}

tmp = vtPlayer[i];
vtPlayer[i] = vtPlayer[j];
vtPlayer[j] = tmp;
}
}
}

void PrintPlayerCard(const string& sPlayerName,
const vector<st_Card_t>& vtPlayer)
{
cout << sPlayerName << " cards:" << endl;
for( UINT i=0; i< vtPlayer.size(); i++ )
{
switch( vtPlayer[i]._emCardClass )
{
case _CC_hearts:
cout << "紅桃";
break;

case _CC_Spade:
cout << "黑桃";
break;

case _CC_Clubs:
cout << "梅花";
break;

case _CC_Diamonds:
cout << "方塊";
break;

default:
cout << "King";
break;
}
cout << vtPlayer[i]._uCardIndex<< " ";
}
cout << endl << endl;
}

void main()
{
vector<st_Card_t> vtCard;

vector<st_Card_t> vtPlayer1;
vector<st_Card_t> vtPlayer2;
vector<st_Card_t> vtPlayer3;

InitCard(vtCard);
DealCard(vtCard, vtPlayer1, vtPlayer2, vtPlayer3);
int iBider = Bid(vtCard, vtPlayer1, vtPlayer2, vtPlayer3);

SortCard(vtPlayer1);
SortCard(vtPlayer2);
SortCard(vtPlayer3);

PrintPlayerCard("Player1", vtPlayer1);
PrintPlayerCard("Player2", vtPlayer2);
PrintPlayerCard("Player3", vtPlayer3);

cout <<"地主是Player"<< iBider+1 << endl << endl;

}

E. cocos2dx 鬥地主 服務端 怎麼實現

基本流程如下:

  1. Cocos2d-x庫,分別在Windows和Mac上解壓,並安裝對應的向導。

  2. 2.在Windows和Mac上創建同名工程。

  3. 3.在Windows上開發代碼,保證將代碼放在Class目錄和Resource目錄。

  4. 4.把Windows上開發的Class目錄和Resource目錄中的代碼拷貝到Mac電腦上,覆蓋同名目錄。

  5. 5.在Xcode中將剛添加的代碼和資源加入工程。

  6. 6.在Xcode中啟動編譯,在虛擬機和真機上測試,完工。

F. iOS的,鬥地主和麻將的游戲源碼,哪裡能有啊,想學習一下~

必勝怎麼可能?一般要看你做哪門了啊?比方地主的,要給你上家壓力,給他主動出牌的自由,別人要出你就要壓,保證不讓別人逃牌,讓主動保持在自己手裡.還有上家是攔地主的一般出錯把地主的副牌放掉就可以結束了啊.不算必勝,只是一個宗旨.
竅門道也是有,當你有大牌接手不妨打一對,或單張,如果沒人要(有彈不用,三個不拆,連對...),接著打,直至自己的副牌逃走,就可以採取攻勢了.

G. 如何在cocos2d裡面實現mvc

Cocos2d本身並不是基於mvc的理念來設計的,但是,這並不防礙在自己的游戲開發中使用mvc。實現方式肯定是多種多樣的,在此是怎麼在cocos2d裡面實現mvc的,同時,在最後,會寫一個簡單的游戲demo,當然,裡面使用的是cocos2d+mvc。

現有問題
cocos2d裡面有這樣一些類,CCSprite,CCLayer,CCScene,所有這些,都是CCNode的子類。基本上,大家在使用cocos2d開發游戲的時候,都會採用下面的步驟來實現游戲邏輯:
通過應用程序代理類來初始化第一個CCScene(即AppDelegate裡面的第一個CCScene),
CCScene裡面實例化一個或者多個CCLayer,並把它們當作孩子添加進去。
CCLayer 裡面實例化一個或者多個CCSprite,也調用addChild添加進去
CCScene 處理用戶輸入(比如touch事件和加速計的改變),同時更新CCLayer和CCSpirte的屬性,比如更改CCSprite的position,讓sprite運行一個或多個actioin等。
CCScene里在運行一個游戲循環(game loop,一般是1/60更新一次),然後CCLayer和CCSprite就在這個game loop裡面做一些更新和游戲邏輯。
這個過程看起來非常簡單,而且也可以很快地做出遊戲來。這也是為什麼cocos2d這么流行的原因,它實在是太簡單了。但是,當你的游戲邏輯越來越復雜的時候,你的代碼會變得越來越難以維護。這裡面最突出的問題就是,CCScene這個類負責的事情太多了---同時要處理用戶交互,還有負責游戲邏輯(邏輯層)和畫面顯示(表示層)。(譯者:根據SoC的原則,這顯然是不合理的,我們應該把職責分離開來,這樣代碼才更容易維護。同時SRP(單一職責原則)也是這么要求的,一個類只負責一件事情)

模型(Model)
MVC它會把一個系統劃分為以下幾個組件:
Model ,它負責與領域相關的邏輯處理代碼,也可以說是邏輯層,或者領域層。
View ,只負責界面顯示。
Controller ,它負責處理用戶交互。
讓我們先從model開始。Model代表了游戲邏輯。因為我現在正在製作一個platform游戲,所以,我講的一些東西也是與platform游戲相關聯的。我的游戲裡面的model包含下面一些類(當然,僅僅是一部分類)
Player,
包含一些屬性,比如:player的位置、當前速度(x軸速度、y軸速度)等。
包含一些與player有關的處理邏輯,比如:run,walk,jmup等。
包含一個update方法,該方法會被游戲主循環每一幀刷新時所調用,它主要負責更新player model。
Platform,
包含一些屬性,比如:platform位置、寬度、高度等。
包含一些與platform有關的處理邏輯,比如:傾塌等
包含一個update方法,該方法會被游戲主循環每一幀刷新時所調用,它主要負責更新patform的model。
GameModel,
包含一些游戲世界的屬性,比如重力等。
包含一些方法來執行游戲邏輯。
包含一個update方法,該方法會在每一幀刷新的時候被game loop所調用,然後它就可以更新自己的狀態,同時還會觸發游戲世界裡面的其它對象也相應地更新自己的狀態。
你可能會問:有些屬性你完全沒有必要重復定義,你可以直接從CCSprite裡面得到,比如position、width、height等。我想說:有對有錯。說對呢,是因為它們確實差不多,可以拿來就用。說不對呢,那是因為,model有可能使用一些不同的計量單位,比如米,而不是像素。(比如box2d這樣的,就不是使用像素作為單位)。在我的model裡面,我使用的是米,當然,你也可以使用英尺,或者其它單位。渲染引擎對於model來說是透明的,model完全不用關心。
視圖(View)
根據mvc的原則,view應該只負責界面顯示。它實際上也是在cocos2d裡面實現mvc時,最簡單的一個。如果你有一個model,你可以使用CCLayer,然後添加一些CCSprite或者其它coocs2d類來處理顯示問題。把model和view分開的好處就是,你沒必要把model的屬性直接映射到view的屬性上面去。比如,你的玩家在x軸方向上移動,但是,你想讓它總是在距離屏幕左邊10px的位置。這時候,你就可以移動CCLayer了,而不是真的在移動sprite。當把model對象顯示出來的時候,你必須考慮單位,如果你使用的是米作為計量單位,你在渲染的時候必須轉化為像素。(你可以像box2d裡面一樣,定義一個PTM_RATIO)那麼你的model怎麼和view打交道呢?你可以從controller裡面得到view,或者你可以把game model製作成一個單例,然後使用靜態方法來處理它。
控制器(Controller)
controlller負責把view和model聯系起來。它的主要職責就是處理用戶輸入。由於我們需要實例化model和view,我發現在controller裡面來做非常合適。我是把controller類繼承到CCScene類,然後我們需要建立一個初始的controller類,它由appDelegate來實例化。然而,這里會有一個問題,touch事件是由CCLayer來處理的,而它在我的設計裡面的角色是view。而我又不想讓view來處理用戶輸入,所以,我需要傳遞一個view的引用給controller(不是直接傳遞,而是通過delegate),然後通過delegate來執行controller的touch事件處理代碼,以此來處理view裡面的touch事件。好了,現在我的controller類就能夠處理來自view的用戶事件了。然後,它可以根據用戶的輸入來操作model,要麼通過修改model的屬性,或者調用model的方法。再更新完model之後,我們的view也需要得到通知並更新。所有這些,我都在game loop裡面完成,實際上它就是一個controller。controller的職責只是負責調用view的update方法,然後剩下的就交給view去完成即可。

H. 求unity3d鬥地主游戲源碼

我根據自己的理解寫一點吧,純手寫。第一題: 1,腳本中定義public變數,然後在檢視面板(inspector)中拖拽賦值獲取 2,使用GameObject.Find+游戲物體名字獲取如:GameObject.Find("cube"); 3,使用GameObject.FindGameObjectWithTag

I. 誰有鬥地主源碼(C++/VC++)

http://www.1knx.cn/webbox_web_izvccc.html

J. 歡樂鬥地主游戲源碼價格多少

傑米科技的是2-3萬,如客戶還有其他要求,費用另算

熱點內容
重慶青少年編程加盟哪家靠譜 發布:2024-10-02 16:08:02 瀏覽:506
寫游戲腳本的人 發布:2024-10-02 16:07:50 瀏覽:813
android波浪 發布:2024-10-02 16:02:20 瀏覽:483
我的世界java版伺服器埠碼 發布:2024-10-02 15:54:34 瀏覽:518
php獲取客戶端地址 發布:2024-10-02 15:53:54 瀏覽:275
小米6的存儲是什麼牌子的 發布:2024-10-02 15:42:26 瀏覽:684
網頁取源碼 發布:2024-10-02 15:38:06 瀏覽:126
安卓系統如何使用scipy 發布:2024-10-02 15:22:12 瀏覽:329
電腦緩存輸入錯誤 發布:2024-10-02 15:14:15 瀏覽:539
androidstring轉byte 發布:2024-10-02 15:13:25 瀏覽:614