亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? fivechessview.cpp

?? 一個網絡五子棋的C++源代碼
?? CPP
字號:
// FiveChessView.cpp : implementation of the CFiveChessView class
//

#include "stdafx.h"
#include "FiveChess.h"

#include "FiveChessDoc.h"
#include "FiveChessView.h"
#include "MainFrm.h"
#include "ClientDlg.h"
#include "ServerDlg.h"
#include "afxsock.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

#define TOPDIS 10
#define LEFTDIS 100 

/////////////////////////////////////////////////////////////////////////////
// CFiveChessView

IMPLEMENT_DYNCREATE(CFiveChessView, CView)

BEGIN_MESSAGE_MAP(CFiveChessView, CView)
	//{{AFX_MSG_MAP(CFiveChessView)
	ON_WM_LBUTTONDOWN()
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_SETSERVER, OnSetserver)
	ON_COMMAND(ID_SETCLIENT, OnSetclient)
	ON_EN_UPDATE(2, INPUTMESSAGE)

	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFiveChessView construction/destruction

CFiveChessView::CFiveChessView()
{
	// TODO: add construction code here
	m_bIsClient=FALSE;
	m_bIsInit=FALSE;
	m_bOver=FALSE;
	m_bWin=FALSE;
	m_turn= 1;//服務器先走,黑棋
}

CFiveChessView::~CFiveChessView()
{
}

BOOL CFiveChessView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/////////////////////////////////////////////////////////////////////////////
// CFiveChessView drawing

void CFiveChessView::OnDraw(CDC* pDC)
{
	CFiveChessDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	CBrush back(RGB(125,125,20));
	pDC->SelectObject((CBrush*)&back);
	CRect rect;
	rect.left=LEFTDIS;rect.right=LEFTDIS+(LW-1)*30;
	rect.top=TOPDIS;rect.bottom=TOPDIS+(LW-1)*30;
	pDC->FillRect(&rect,&back);

	CPen pen(PS_SOLID,2,RGB(25,25,255));
	pDC->SelectObject((CPen*)&pen);
	int i,j;
	CPoint pos;
	for(i=0;i<LW;i++)//豎直的線
	{
		pos.x=LEFTDIS+30*i;
		pos.y=TOPDIS;
		pDC->MoveTo(pos);
		pos.y=TOPDIS+(LW-1)*30;
		pDC->LineTo(pos);
	}
	for(i=0;i<LW;i++)//水平的線
	{
		pos.x=LEFTDIS;
		pos.y=TOPDIS+30*i;
		pDC->MoveTo(pos);
		pos.x=LEFTDIS+(LW-1)*30;
		pDC->LineTo(pos);
	}
	CBrush whitebrush(RGB(255,255,255));
	CBrush blackbrush(RGB(0,0,0));
	for(i=0;i<LW;i++)
		for(j=0;j<LW;j++)
		{
			if(m_match.chessboard[i][j]==1)
			{
				pDC->SelectObject((CBrush*)&blackbrush);
				pDC->Ellipse(j*30+LEFTDIS-15,i*30+TOPDIS-15,j*30+LEFTDIS+15,i*30+TOPDIS+15);
			}
			else
				if(m_match.chessboard[i][j]==2)
				{
					pDC->SelectObject((CBrush*)&whitebrush);
					pDC->Ellipse(j*30+LEFTDIS-15,i*30+TOPDIS-15,j*30+LEFTDIS+15,i*30+TOPDIS+15);
				}
		}
		//星位的繪制
	CBrush starbrush(RGB(0,0,0));
	pDC->SelectObject((CBrush*)&starbrush);
	j=4;i=4;
	if(m_match.chessboard[i][j]==0)
	pDC->Ellipse(j*30+LEFTDIS-8,i*30+TOPDIS-8,j*30+LEFTDIS+8,i*30+TOPDIS+8);
	j=4;i=14;
	if(m_match.chessboard[i][j]==0)
	pDC->Ellipse(j*30+LEFTDIS-8,i*30+TOPDIS-8,j*30+LEFTDIS+8,i*30+TOPDIS+8);
	j=9;i=9;
	if(m_match.chessboard[i][j]==0)
	pDC->Ellipse(j*30+LEFTDIS-8,i*30+TOPDIS-8,j*30+LEFTDIS+8,i*30+TOPDIS+8);
	j=14;i=4;
	if(m_match.chessboard[i][j]==0)
	pDC->Ellipse(j*30+LEFTDIS-8,i*30+TOPDIS-8,j*30+LEFTDIS+8,i*30+TOPDIS+8);
	j=14;i=14;
	if(m_match.chessboard[i][j]==0)
	pDC->Ellipse(j*30+LEFTDIS-8,i*30+TOPDIS-8,j*30+LEFTDIS+8,i*30+TOPDIS+8);

	if(m_bOver==TRUE)
	{
		CBrush redbrush(RGB(255,0,0));
		pDC->SelectObject((CBrush*)&redbrush);
		for(int k=0;k<5;k++)
		{
			i=m_winpos[k][0];
			j=m_winpos[k][1];
			pDC->Ellipse(j*30+LEFTDIS-15,i*30+TOPDIS-15,j*30+LEFTDIS+15,i*30+TOPDIS+15);
		}
	}
	// TODO: add draw code for native data here
}

/////////////////////////////////////////////////////////////////////////////
// CFiveChessView printing

BOOL CFiveChessView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CFiveChessView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CFiveChessView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/////////////////////////////////////////////////////////////////////////////
// CFiveChessView diagnostics

#ifdef _DEBUG
void CFiveChessView::AssertValid() const
{
	CView::AssertValid();
}

void CFiveChessView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CFiveChessDoc* CFiveChessView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFiveChessDoc)));

	return (CFiveChessDoc*)m_pDocument;
}
#endif //_DEBUG

/////////////////////////////////////////////////////////////////////////////
// CFiveChessView message handlers
void CFiveChessView::OnSetserver() 
{
	// TODO: Add your command handler code here
	CServerDlg dlg;

	if(dlg.DoModal()==IDOK)
	{
		m_bIsClient=FALSE;
		m_bIsInit=TRUE;
		m_port=dlg.m_iPort;
		m_ListenSocket.Init(m_port,this);

	}
}

void CFiveChessView::OnSetclient() 
{
	// TODO: Add your command handler code here
	CClientDlg dlg;
	int ret=dlg.DoModal();
	if(ret==2000)
	{
		m_bIsClient=TRUE;
		m_bIsInit=TRUE;
		m_port=dlg.m_iPort;
		for(int i=0;i<4;i++)
			m_bIP[i]=dlg.m_bIP[i];
		m_ip.Format("%d.%d.%d.%d",dlg.m_bIP[0],dlg.m_bIP[1],dlg.m_bIP[2],dlg.m_bIP[3]);

		m_ClientSocket.Create();
		if(m_ClientSocket.Connect(LPCSTR(m_ip),m_port))
		{
			m_ClientSocket.Init(this);
			m_who=2;		//客戶端用白子
			AfxMessageBox("成功的連接到了服務器,可以開始游戲了");
		}
		else
		{
			m_ClientSocket.Close();
			AfxMessageBox("client connection failed");
		}
	}

}


void CFiveChessView::ProcessPendingAccept()
{
	if(m_ListenSocket.Accept(m_ClientSocket)==FALSE)
	{
		AfxMessageBox("Server Listen Socket Error");
		return;
	}
	else
	{
		m_who=1;//服務器端用黑子
		m_ClientSocket.Init(this);
		m_outputedit.SetWindowText("有人進來了");
		AfxMessageBox("有人進來了");
	}
}
void CFiveChessView::GetLocalIP()
{
	static BOOL first=TRUE;
	if(first==TRUE)
	{
		CClientSocket::GetLocalHostName(m_sLocalName);
		CClientSocket::GetIpAddress(LPCSTR(m_sLocalName),m_bIP[0],m_bIP[1],m_bIP[2],m_bIP[3]);
		m_ip.Format("%d.%d.%d.%d",m_bIP[0],m_bIP[1],m_bIP[2],m_bIP[3]);
		first=FALSE;
	}
}
void CFiveChessView::INPUTMESSAGE()
{
	if(!m_bIsInit)
	{
		AfxMessageBox("No Connection ");
		return;
	}
	CString in;
	CMessg msg;
	m_inputedit.GetWindowText(in);
	if(in.GetLength()<1)
	{
		return;
	}
	if(in.GetAt(in.GetLength()-1)=='\n')
	{
		in.TrimRight(" ");
		m_inputedit.SetWindowText("");
		if(in.GetLength()>2)
		{
			m_sMsgList+=in;		
			m_outputedit.SetWindowText(m_sMsgList);
			m_iLineCurrentPos=m_outputedit.GetLineCount();
			m_outputedit.LineScroll(m_iLineCurrentPos);
			msg.m_strText=in;
			m_ClientSocket.SendMessage(&msg);
		}
	}
}

void CFiveChessView::OnInitialUpdate() 
{
	CView::OnInitialUpdate();
	
	// TODO: Add your specialized code here and/or call the base class
	static bool oninitialupdatehaving=false;
	if(oninitialupdatehaving==false)
	{
		if(::AfxSocketInit()==FALSE)
		{
			AfxMessageBox("socket init error");
		}
		GetLocalIP();
		CRect rect;
		this->GetWindowRect(rect);
		m_outputedit.Create(ES_MULTILINE | WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER|ES_READONLY,CRect(10,rect.bottom-200,rect.right-10,rect.bottom-140),this,1);
		m_inputedit.Create(ES_MULTILINE|WS_CHILD | WS_VISIBLE | WS_TABSTOP | WS_BORDER|ES_AUTOVSCROLL,CRect(10,rect.bottom-140,rect.right-10,rect.bottom-100),this,2);	
	}
}

void CFiveChessView::OnLButtonDown(UINT nFlags, CPoint point) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_bOver==TRUE)
	{
		if(AfxMessageBox("你想重新開始游戲嗎?",MB_YESNO)==IDYES)
		{
			//重新開始游戲
			m_bIsClient=FALSE;
			m_bIsInit=FALSE;
			m_turn=1;
			m_match.Clear();
			m_bWin=FALSE;
			Invalidate(FALSE);
			return;
		}
	}
	if(m_turn==m_who)
	{
		m_POS[0]=(point.y-TOPDIS)/30;	//x	,繪圖坐標中的y
		if((point.y-TOPDIS)%30>15)
			m_POS[0]++;
		m_POS[1]=(point.x-LEFTDIS)/30;	//y ,繪圖坐標中的x
		if((point.x-LEFTDIS)%30>15)
			m_POS[1]++;
		if(m_POS[0]<0||m_POS[0]>=LW||m_POS[1]<0||m_POS[1]>=LW)
		{
			return;
		}
		if(m_match.CanDown(m_POS[0],m_POS[1],m_who)==TRUE)
		{
			Invalidate(FALSE);
			m_turn=m_who%2+1;
			CMessg msg;
			msg.m_turn=m_turn;
			msg.m_x=m_POS[0];
			msg.m_y=m_POS[1];
			m_ClientSocket.SendMessage(&msg);
			if(m_match.IsWin(m_who,m_winpos))
			{
				m_bWin=TRUE;
				m_bOver=TRUE;
				Invalidate(FALSE);
				AfxMessageBox("你贏了");	
				m_sMsgList+="你贏了";
				m_outputedit.SetWindowText(m_sMsgList);
			}
		}
	}
	else
	{
		m_sMsgList+="不該你走棋";
		m_outputedit.SetWindowText(m_sMsgList);
	}
	CView::OnLButtonDown(nFlags, point);
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美私人免费视频| 视频在线观看一区二区三区| 国产一区二区三区四区在线观看| 亚洲综合免费观看高清完整版在线| 欧美高清在线视频| 亚洲精品欧美专区| 欧美日韩一区成人| 99精品视频免费在线观看| 国产精品全国免费观看高清| 日韩一级精品视频在线观看| 欧美日韩一二三区| 欧美一级片在线看| 久久久久久久久久久久久夜| 欧美精品一区二区久久久| 91精彩视频在线观看| 亚洲综合色自拍一区| 久久综合五月天婷婷伊人| 91成人免费在线| 国产一区日韩二区欧美三区| 日韩精品三区四区| 亚洲欧洲成人精品av97| 91麻豆福利精品推荐| 一区二区三区四区在线| 国产日韩欧美精品在线| 免费在线视频一区| 国产传媒欧美日韩成人| 91精品视频网| 亚洲三级久久久| 色屁屁一区二区| 高清不卡一区二区在线| 国产一区二区三区电影在线观看| 国产91综合网| 成人午夜精品一区二区三区| 久久午夜国产精品| 免费成人深夜小野草| 日本韩国欧美国产| 久久精品日产第一区二区三区高清版| 一区视频在线播放| 欧美国产1区2区| 亚洲日本一区二区| 中文字幕一区二区三区av| 久久综合色播五月| 国产精品色哟哟| 亚洲国产美女搞黄色| 亚洲人成亚洲人成在线观看图片 | 国产精品久久久久久一区二区三区| 三级不卡在线观看| 欧美日韩的一区二区| 偷拍与自拍一区| 欧美一区二区三区在线观看 | 成人免费在线视频观看| 成人久久18免费网站麻豆| 国产日韩欧美a| 99久久综合精品| 亚洲电影欧美电影有声小说| 欧美老肥妇做.爰bbww视频| 日韩电影在线一区| 久久蜜桃av一区二区天堂 | 久久精品72免费观看| 精品捆绑美女sm三区| 东方aⅴ免费观看久久av| 亚洲欧美日韩电影| 4438x成人网最大色成网站| 国内精品在线播放| 亚洲色图另类专区| 欧美丰满少妇xxxxx高潮对白| 国精产品一区一区三区mba视频 | 国产拍欧美日韩视频二区| 91美女视频网站| 美国欧美日韩国产在线播放 | 日韩欧美高清dvd碟片| 国产精品亚洲午夜一区二区三区| 国产精品久久久99| 欧美美女视频在线观看| 成人一区二区三区中文字幕| 亚洲在线观看免费视频| 久久久亚洲综合| 欧美性欧美巨大黑白大战| 国产一区二区女| 午夜电影久久久| 中文av一区特黄| 日韩丝袜美女视频| 一本一道久久a久久精品综合蜜臀| 婷婷久久综合九色国产成人 | 日本不卡123| 中文字幕在线不卡视频| 欧美一区二区啪啪| 色婷婷精品大在线视频| 国产福利一区二区三区在线视频| 亚洲国产人成综合网站| 国产精品私人自拍| 欧美xxxx老人做受| 717成人午夜免费福利电影| 不卡在线视频中文字幕| 久久国产精品第一页| 亚洲国产精品自拍| 中文天堂在线一区| 国产欧美一区二区精品忘忧草 | 视频一区二区不卡| 亚洲精品视频在线| 国产偷v国产偷v亚洲高清| 欧美久久高跟鞋激| 日本道色综合久久| 99视频精品在线| 国产不卡视频在线观看| 国产一区二区福利| 精品影院一区二区久久久| 一区二区成人在线视频| 亚洲婷婷在线视频| 国产精品美日韩| 欧美国产激情一区二区三区蜜月| 久久亚洲一级片| 精品少妇一区二区三区视频免付费| 欧美日韩国产小视频| 欧美性受极品xxxx喷水| 色偷偷一区二区三区| 色综合久久中文综合久久97| av成人免费在线观看| 成人av网站在线| 99久久伊人久久99| 成人午夜电影网站| 成人永久看片免费视频天堂| 国产69精品一区二区亚洲孕妇| 国产一区二区三区四区五区美女| 国产一区二区三区电影在线观看 | 青青草国产精品亚洲专区无| 天天色天天爱天天射综合| 日韩精品欧美成人高清一区二区| 视频在线观看一区二区三区| 乱中年女人伦av一区二区| 精品一区二区av| 高清成人在线观看| 欧洲亚洲精品在线| 欧美精品欧美精品系列| 日韩色视频在线观看| 久久蜜臀精品av| 亚洲欧美色图小说| 亚洲国产视频在线| 韩国女主播成人在线| 东方欧美亚洲色图在线| 在线免费观看一区| 51精品久久久久久久蜜臀| 久久嫩草精品久久久精品| 国产精品国产成人国产三级| 亚洲专区一二三| 激情久久五月天| av成人免费在线观看| 欧美一区二区在线播放| 久久精品在这里| 一区二区三区毛片| 乱中年女人伦av一区二区| 99r国产精品| 欧美一级日韩一级| 中文字幕一区二区三区色视频| 午夜精品影院在线观看| 国产超碰在线一区| 欧美色图天堂网| 久久女同性恋中文字幕| 艳妇臀荡乳欲伦亚洲一区| 韩国女主播一区| 精品视频999| 中文字幕不卡三区| 石原莉奈一区二区三区在线观看 | 精品中文字幕一区二区| 99视频有精品| 欧美成人乱码一区二区三区| 亚洲图片激情小说| 蜜臀av一区二区在线观看| 波多野结衣在线aⅴ中文字幕不卡| 欧美日本一区二区在线观看| 国产精品美女久久久久久久| 日韩成人dvd| 色噜噜狠狠色综合中国| 国产视频一区在线观看| 日韩av中文字幕一区二区三区| 91在线精品一区二区三区| 精品国产人成亚洲区| 午夜精品一区二区三区电影天堂| 高清国产一区二区| 久久综合色天天久久综合图片| 五月婷婷另类国产| 91美女蜜桃在线| 国产精品免费视频观看| 精品一区二区三区在线播放视频| 欧美乱熟臀69xxxxxx| 亚洲免费观看高清完整版在线观看熊 | 国产精品一区二区黑丝| 欧美一区二区视频在线观看2020| 亚洲欧美日韩国产另类专区 | 国产一区二区在线观看免费| 51久久夜色精品国产麻豆| 亚洲成人自拍网| 欧美中文字幕亚洲一区二区va在线| 久久久国产午夜精品 | 日韩精品久久久久久| 一本大道久久精品懂色aⅴ| 国产精品卡一卡二卡三| 丰满少妇久久久久久久| 久久综合九色综合97婷婷女人 | 久久国产夜色精品鲁鲁99|