// ServerDlg.cpp : implementation file
//
#include "stdafx.h"
#include "Server.h"
#include "ServerDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
//}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CServerDlg dialog
CServerDlg::CServerDlg(CWnd* pParent /*=NULL*/)
: CDialog(CServerDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CServerDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
nGamer=0;
nSocketNum[0]=-1;
nSocketNum[1]=-1;
nSocketNum[2]=-1;
nScore[0]=0;
nScore[1]=0;
nScore[2]=0;
}
void CServerDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CServerDlg)
DDX_Control(pDX, IDC_LIST1, m_list);
DDX_Control(pDX, IDC_EDIT2, m_send);
DDX_Control(pDX, IDC_EDIT1, m_read);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CServerDlg, CDialog)
//{{AFX_MSG_MAP(CServerDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_MESSAGE(WM_SOCKET, OnSocket)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_WM_ERASEBKGND()
ON_WM_CTLCOLOR()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CServerDlg message handlers
BOOL CServerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
hMod=LoadLibrary("CardsRes.dll");
if(!hMod)
{
MessageBox("加载资源库失败");
}
poke.InitAllCards(hMod);
//poke.Shuffle();
ocards.Add(&poke.C_M10);
ocards.Add(&poke.C_F9);
ocards.Add(&poke.C_H10);
CRect rect;
m_list.GetClientRect(&rect);
m_list.InsertColumn(0, "名字" , rect.right / 3, -1);
m_list.InsertColumn(1, "游戏玩家" , rect.right / 8, -1);
m_list.InsertColumn(2, "分数", rect.right / 6, -1);
m_list.InsertColumn(3, "IP 地址" , rect.right / 3, -1);
m_list.SetColumnWidth(0, rect.Width() / 4);
m_list.SetColumnWidth(1, rect.Width() / 4);
m_list.SetColumnWidth(2, rect.Width() / 6);
m_list.SetColumnWidth(3, rect.Width() / 3);
// TODO: Add extra initialization here
InitSocket();
char name[256];
PHOSTENT hostinfo;
ZeroMemory(name,20);
if(gethostname(name,sizeof(name))==0)
{
if((hostinfo=gethostbyname(name))!=NULL)
{
GetDlgItem(IDC_EDIT3)->SetWindowText(inet_ntoa(*(struct in_addr *)*hostinfo->h_addr_list));
}
}
return TRUE; // return TRUE unless you set the focus to a control
}
int CServerDlg::InitSocket()//初始化套接字
{
int nError;
int i;
//初始化套接字
if(nError=WSAStartup(MAKEWORD(2,0),&WSAData))
{
::MessageBox(NULL,"WinSock Startup Error!","Server",MB_ICONERROR|MB_OK);
return false;
}
//创建套接字
local_ser=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if(local_ser==INVALID_SOCKET)
{
::MessageBox(NULL,"Socket Creation Error!","Server",MB_ICONERROR|MB_OK);
WSACleanup();
return false;
}
if(SOCKET_ERROR==WSAAsyncSelect(local_ser,this->m_hWnd,WM_SOCKET,FD_ACCEPT|FD_READ))
{
::MessageBox(NULL,"WSAAsyncSelect Error!","Server",MB_ICONERROR|MB_OK);
WSACleanup();
return false;
}
server.sin_family=AF_INET;
server.sin_port=htons(SOCKET_PORT);
server.sin_addr.s_addr=INADDR_ANY;
if(bind(local_ser,(struct sockaddr *)&server,sizeof(server)))
{
::MessageBox(NULL,"Bind Error!","Server",MB_ICONERROR|MB_OK);
closesocket(local_ser);
WSACleanup();
return false;
}
for(i=0;i<10;i++)
{
clients[i].connectstate=0;
ZeroMemory(clients[i].name,10);
clients[i].clientsocket=NULL;
}
return true;
}
int CServerDlg::GetNoUseClientSocket()//获取没使用的套接字
{
int i;
for(i=0;i<10;i++)
{
if(clients[i].connectstate==0)
{
return i;
}
}
return -1;
}
void CServerDlg::UpdataListCtrl()//刷新列表控件
{
char str_score[10];
int i,t=0;
LVITEM lvi;
lvi.mask = LVIF_TEXT | LVIF_IMAGE;
lvi.iImage=0;
m_list.DeleteAllItems();
for(i=0;i<10;i++)
{
if(clients[i].connectstate==1)
{
lvi.iItem=t;
lvi.iSubItem=0;
lvi.pszText=clients[i].name;
m_list.InsertItem(&lvi);
if(i==nSocketNum[0])
{
lvi.mask = LVIF_TEXT;
lvi.iSubItem=1;
lvi.pszText="游戏-1";
m_list.SetItem(&lvi);
lvi.mask = LVIF_TEXT;
lvi.iSubItem=2;
lvi.pszText=itoa(nScore[0],str_score,10);
m_list.SetItem(&lvi);
}
if(i==nSocketNum[1])
{
lvi.mask = LVIF_TEXT;
lvi.iSubItem=1;
lvi.pszText="游戏-2";
m_list.SetItem(&lvi);
lvi.mask = LVIF_TEXT;
lvi.iSubItem=2;
lvi.pszText=itoa(nScore[1],str_score,10);
m_list.SetItem(&lvi);
}
if(i==nSocketNum[2])
{
lvi.mask = LVIF_TEXT;
lvi.iSubItem=1;
lvi.pszText="游戏-3";
m_list.SetItem(&lvi);
lvi.mask = LVIF_TEXT;
lvi.iSubItem=2;
lvi.pszText=itoa(nScore[2],str_score,10);
m_list.SetItem(&lvi);
}
lvi.mask = LVIF_TEXT;
lvi.iSubItem=3;
lvi.pszText=inet_ntoa(clients[i].from.sin_addr);
m_list.SetItem(&lvi);
t++;
}
}
}
void CServerDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
// If you add a minimize button to your dialog, you will need the code below
// to draw the icon. For MFC applications using the document/view model,
// this is automatically done for you by the framework.
void CServerDlg::OnP
没有合适的资源?快使用搜索试试~ 我知道了~
一个扑克牌网络游戏的C++源代码
共108个文件
bmp:57个
h:15个
cpp:10个
5星 · 超过95%的资源 需积分: 50 468 下载量 23 浏览量
2007-05-11
21:45:21
上传
评论 14
收藏 215KB RAR 举报
温馨提示
游戏名称为“五十K”,积分扑克牌游戏,三人两副牌玩,最后谁得的分最多就谁赢(只有5 10 K为分)。牌的大小比较(类似斗地主):8张牌点一样>7张牌点一样>...>5张牌点一样>纯五十K(指只含五十K三张牌,且花色一样)>4张牌点一样>杂五十K(指只含五十K三张牌,且花色不一样)>3张牌点一样、两张牌点一样、单张(这三类彼此平级),张数一样的按点数大小比较,纯五十K之间按黑红梅方比较,杂五十K都一样大。手上有管的住别人的牌不能不管。别人都管不住你的牌,你就将出下的牌的分得到。<br/>
资源推荐
资源详情
资源评论
收起资源包目录
一个扑克牌网络游戏的C++源代码 (108个子文件)
背景01.bmp 20KB
背景01.bmp 20KB
背景02.bmp 8KB
红8.bmp 3KB
方7.bmp 3KB
方2.bmp 3KB
黑J.bmp 3KB
红3.bmp 3KB
方6.bmp 3KB
方A.bmp 3KB
红6.bmp 3KB
方K.bmp 3KB
大王.bmp 3KB
红9.bmp 3KB
红J.bmp 3KB
方J.bmp 3KB
红10.bmp 3KB
红5.bmp 3KB
红2.bmp 3KB
方Q.bmp 3KB
方5.bmp 3KB
方4.bmp 3KB
黑K.bmp 3KB
红7.bmp 3KB
红K.bmp 3KB
方9.bmp 3KB
红A.bmp 3KB
方3.bmp 3KB
红Q.bmp 3KB
梅J.bmp 3KB
红4.bmp 3KB
梅Q.bmp 3KB
梅K.bmp 3KB
黑Q.bmp 3KB
方10.bmp 3KB
方8.bmp 3KB
梅A.bmp 1KB
梅9.bmp 1KB
黑9.bmp 1KB
梅3.bmp 1KB
黑6.bmp 1KB
黑4.bmp 1KB
黑5.bmp 1KB
梅2.bmp 1KB
梅6.bmp 1KB
梅10.bmp 1KB
黑8.bmp 1KB
小王.bmp 1KB
梅4.bmp 1KB
黑7.bmp 1KB
黑10.bmp 1KB
黑A.bmp 1KB
梅7.bmp 1KB
梅8.bmp 1KB
梅5.bmp 1KB
黑3.bmp 1KB
黑2.bmp 1KB
Client.clw 2KB
Server.clw 1KB
ServerDlg.cpp 19KB
CardClass.cpp 18KB
CardClass.cpp 18KB
ClientDlg.cpp 14KB
Client.cpp 2KB
Server.cpp 2KB
StdAfx.cpp 294B
CardRes.cpp 266B
StdAfx.cpp 208B
StdAfx.cpp 208B
CardsRes.dll 200KB
CardsRes.dll 200KB
CardRes.dll 200KB
Client.dsp 5KB
Server.dsp 5KB
CardRes.dsp 5KB
CardRes.dsw 539B
Client.dsw 537B
Server.dsw 537B
Server.exe 48KB
Client.exe 44KB
resource.fd 4KB
resource.fd 1KB
resource.fd 901B
ServerDlg.h 3KB
resource.h 3KB
ClientDlg.h 3KB
CardsRes.h 3KB
CardsRes.h 3KB
CardsRes.h 3KB
CardClass.h 3KB
CardClass.h 3KB
Client.h 1KB
Server.h 1KB
resource.h 1KB
StdAfx.h 1KB
StdAfx.h 1KB
resource.h 959B
StdAfx.h 802B
Client.ico 1KB
Server.ico 1KB
共 108 条
- 1
- 2
Y___Y
- 粉丝: 63
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
前往页