鬥地主源碼開發
㈠ 各位C++老師,我下了一個鬥地主的源程序,發現沒有main的入口函數,我該從什麼地方開始著手看
你在vc環境下,點擊edit-->find in file,工程選擇你源碼所在目錄,搜索關鍵字就是main,下面的項目都不要選,然後點擊find,查看一下結果
main函數是所有工程的入口函數,但有些地方會把他封裝起來,比如想WinMain,Win32等,名字不一定是什麼,但肯定會帶著一個main的
㈡ 求鬥地主java源代碼
為保證咱兩交易成功,我先發送代碼中的一部分
先開啟伺服器監聽 SocketServer ss = new SocketServer(6,8888);埠是8888 最多通 同時訪問6人。
然後ss.start();開啟監聽
然後在New一個Socket
String ip = "127.0.0.1";伺服器的IP
int port = 8888; 伺服器的埠
Socket socket = new Socket(ip,port);
socket.connec();
OutputStream os = socket.getOutputStream();
String message = "要發送的數據";
os.write(message.getBytes());
os.flush();
os.close();
socket.close();
㈢ 簡易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;
}
㈣ 歡樂鬥地主游戲源碼價格多少
傑米科技的是2-3萬,如客戶還有其他要求,費用另算
㈤ 我想開發鬥地主人工智慧程序,有人知道用什麼語言好嗎, 最後給個代碼
// GameLogic.cpp: implementation of the CGameLogic class. // ////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "GameLogic.h" ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// //靜態變數 //撲克數據 //撲克數據 const BYTE CGameLogic::m_cbCardData[FULL_COUNT]= { 0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0A,0x0B,0x0C,0x0D, //方塊 A - K 0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1A,0x1B,0x1C,0x1D, //梅花 A - K 0x21,0x22,0x23,0x24,0x25,0x26,0x27,0x28,0x29,0x2A,0x2B,0x2C,0x2D, //紅桃 A - K 0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x3A,0x3B,0x3C,0x3D, //黑桃 A - K 0x4E,0x4F, }; const BYTE CGameLogic::m_cbGoodcardData[GOOD_CARD_COUTN]= { 0x01,0x02, 0x11,0x12, 0x21,0x22, 0x31,0x32, 0x4E,0x4F, 0x07,0x08,0x09, 0x17,0x18,0x19, 0x27,0x28,0x29, 0x37,0x38,0x39, 0x0A,0x0B,0x0C,0x0D, 0x1A,0x1B,0x1C,0x1D, 0x2A,0x2B,0x2C,0x2D, 0x3A,0x3B,0x3C,0x3D }; ////////////////////////////////////////////////////////////////////////// //構造函數 CGameLogic::CGameLogic() { //AI變數 m_lBankerOutCardCount = 0 ; } //析構函數 CGameLogic::~CGameLogic() { #ifdef _CHECK_DUG file.Close() ; #endif } //獲取類型 BYTE CGameLogic::GetCardType(const BYTE cbCardData[], BYTE cbCardCount) { //簡單牌型 switch (cbCardCount) { case 0: //空牌 { return CT_ERROR; } case 1: //單牌 { return CT_SINGLE; } case 2: //對牌火箭 { //牌型判斷 if ((cbCardData[0]==0x4F)&&(cbCardData[1]==0x4E)) return CT_MISSILE_CARD; if (GetCardLogicValue(cbCardData[0])==GetCardLogicValue(cbCardData[1])) return CT_DOUBLE; return CT_ERROR; } } //分析撲克 tagAnalyseResult AnalyseResult; if(!AnalysebCardData(cbCardData,cbCardCount,AnalyseResult)) return CT_ERROR ; //四牌判斷 if (AnalyseResult.cbFourCount>0) { //牌型判斷 if ((AnalyseResult.cbFourCount==1)&&(cbCardCount==4)) return CT_BOMB_CARD; // if ((AnalyseResult.cbFourCount==1)&&(AnalyseResult.cbSignedCount==2)&&(cbCardCount==6)) return CT_FOUR_LINE_TAKE_ONE; if ((AnalyseResult.cbFourCount==1)&&(AnalyseResult.cbSignedCount==2)&&(cbCardCount==6)) return CT_FOUR_LINE_TAKE_ONE; if ((AnalyseResult.cbFourCount==1)&&(AnalyseResult.cbDoubleCount==2)&&(cbCardCount==8)) return CT_FOUR_LINE_TAKE_TWO; return CT_ERROR; } //三牌判斷 if (AnalyseResult.cbThreeCount>0) { //三條類型 if(AnalyseResult.cbThreeCount==1 && cbCardCount==3) return CT_THREE ; // 此源碼來自 棋牌基地 http://www.2qipai.com //連牌判斷 if (AnalyseResult.cbThreeCount>1) { //變數定義 BYTE cbCardData=AnalyseResult.cbThreeCardData[0]; BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData); //錯誤過慮 if (cbFirstLogicValue>=15) return CT_ERROR; //連牌判斷 for (BYTE i=1;i<AnalyseResult.cbThreeCount;i++) { BYTE cbCardData=AnalyseResult.cbThreeCardData[i*3]; if (cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR; } } //牌形判斷 if (AnalyseResult.cbThreeCount*3==cbCardCount) return CT_THREE_LINE; if (AnalyseResult.cbThreeCount*4==cbCardCount) return CT_THREE_LINE_TAKE_ONE; if ((AnalyseResult.cbThreeCount*5==cbCardCount)&&(AnalyseResult.cbDoubleCount==AnalyseResult.cbThreeCount)) return CT_THREE_LINE_TAKE_TWO; return CT_ERROR; } //兩張類型 if (AnalyseResult.cbDoubleCount>=3) { //變數定義 BYTE cbCardData=AnalyseResult.cbDoubleCardData[0]; BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData); //錯誤過慮 if (cbFirstLogicValue>=15) return CT_ERROR; //連牌判斷 for (BYTE i=1;i<AnalyseResult.cbDoubleCount;i++) { BYTE cbCardData=AnalyseResult.cbDoubleCardData[i*2]; if (cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR; } //二連判斷 if ((AnalyseResult.cbDoubleCount*2)==cbCardCount) return CT_DOUBLE_LINE; return CT_ERROR; } //單張判斷 if ((AnalyseResult.cbSignedCount>=5)&&(AnalyseResult.cbSignedCount==cbCardCount)) { //變數定義 BYTE cbCardData=AnalyseResult.cbSignedCardData[0]; BYTE cbFirstLogicValue=GetCardLogicValue(cbCardData); //錯誤過慮 if (cbFirstLogicValue>=15) return CT_ERROR; //連牌判斷 for (BYTE i=1;i<AnalyseResult.cbSignedCount;i++) { BYTE cbCardData=AnalyseResult.cbSignedCardData[i]; if (cbFirstLogicValue!=(GetCardLogicValue(cbCardData)+i)) return CT_ERROR; } return CT_SINGLE_LINE; } return CT_ERROR; } //排列撲克
求採納
㈥ 易語言區域網鬥地主源碼怎麼用!
用易語言的 客戶和 伺服器 發送文本信息 比如說發送「紅桃2:方片3」 然後接收端檢測發過來的一段文本 然後用分割文本 按照":"這個符號分割然後判斷 很麻煩的。。