// fchesvw.cpp : implementation of the CFchessView class
//
#include "stdafx.h"
#include "winsock.h"
#include "fchess.h"
#include ".\tcpsock\ts.h"
#include "fchesdoc.h"
#include "messageb.h"
#include "fchesvw.h"
//#include "estdlg.h"
//#include <afxext.h> // MFC extensions
char szYourTurn[10][40]=
{"该你了,加油啊...",
"该你了,这小子挺难对付的...",
"该你了,看来你要认真思考一下了...",
"该你了,这难不倒你的...",
"该你了,你可是天下第一哦...",
"该你了,加油啊...",
"该你了,加油啊...",
"该你了,加油啊...",
"该你了,加油啊...",
"该你了,加油啊..."};
#ifdef _DEBUG
#undef THIS_FILE
static char BASED_CODE THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFchessView
IMPLEMENT_DYNCREATE(CFchessView, CView)
BEGIN_MESSAGE_MAP(CFchessView, CView)
ON_MESSAGE(WSA_READ, OnWSARead)
//{{AFX_MSG_MAP(CFchessView)
ON_COMMAND(ID_GAME_NEW, OnGameNew)
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
ON_WM_RBUTTONDOWN()
ON_WM_DESTROY()
ON_COMMAND(ID_FUNCTION_SENDMESSAGETOOTHER, OnFunctionSendMessage)
ON_UPDATE_COMMAND_UI(ID_FUNCTION_SENDMESSAGETOOTHER, OnUpdateFunctionSendMessage)
ON_WM_SETCURSOR()
ON_COMMAND(ID_GAME_QUITCURRENTGAME, OnAbortGame)
ON_UPDATE_COMMAND_UI(ID_GAME_QUITCURRENTGAME, OnUpdateAbortGame)
ON_COMMAND(IDM_BEEP, OnBeep)
ON_UPDATE_COMMAND_UI(IDM_BEEP, OnUpdateBeep)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFchessView construction/destruction
CFchessView::CFchessView()
{
srand(time(NULL));
// TODO: add construction code here
m_fSound=AfxGetApp()->GetProfileInt("config","sound",1);
m_iTotalWin=AfxGetApp()->GetProfileInt("config","tw",0);
m_iTotalLost=AfxGetApp()->GetProfileInt("config","tl",0);
m_fFirstDeside=m_fEst=m_fCanDeside=FALSE;
for(int i=0;i<XVALUE;i++)
for(int j=0;j<YVALUE;j++)
m_bChessArray[i][j]=0;
}
CFchessView::~CFchessView()
{
AfxGetApp()->WriteProfileInt("config","sound",m_fSound);
AfxGetApp()->WriteProfileInt("config","tw",m_iTotalWin);
AfxGetApp()->WriteProfileInt("config","tl",m_iTotalLost);
}
BOOL is_five(int* piF)
{
for(int i=0;i<5;i++)
{
if(piF[i]==0)
return FALSE;
}
return TRUE;
}
BOOL is_six(int* piF)
{
for(int i=0;i<4;i++)
{
if(piF[i]==0)
return FALSE;
}
return TRUE;
}
BOOL CFchessView::IsMatch(const int iX,const int iY)
{//判断是否连续五颗
int fRes[6];
int x,y,i;
memset(fRes,0,sizeof(int)*5);
for(x=iX;x<iX+5 && x<XVALUE;x++)// to right
{
fRes[x-iX]=(m_bChessArray[iX][iY]==m_bChessArray[x][iY])?1:0;
}
if(is_five(fRes))
return TRUE;
memset(fRes,0,sizeof(int)*5);
for(y=iY;y<iY+5 && y<YVALUE;y++)// to down
{
fRes[y-iY]=(m_bChessArray[iX][iY]==m_bChessArray[iX][y])?1:0;
}
if(is_five(fRes))
return TRUE;
memset(fRes,0,sizeof(int)*5);
for(x=iX,y=iY;x>=0 && y<YVALUE && x>iX-5 ;x--,y++)// left down
{
fRes[y-iY]=(m_bChessArray[iX][iY]==m_bChessArray[x][y])?1:0;
}
if(is_five(fRes))
return TRUE;
memset(fRes,0,sizeof(int)*5);
for(x=iX,y=iY;x<XVALUE && y<YVALUE && y<iY+5 ;x++,y++)// right down
{
fRes[x-iX]=(m_bChessArray[iX][iY]==m_bChessArray[x][y])?1:0;
}
if(is_five(fRes))
return TRUE;
return FALSE;
}
BOOL CFchessView::IsMatch2(const int iX,const int iY)
{//判断是否连续四颗
int fRes[6];
int x,y,i;
memset(fRes,0,sizeof(int)*4);
for(x=iX;x<iX+4 && x<XVALUE;x++)// to right
{
fRes[x-iX]=(m_bChessArray[iX][iY]==m_bChessArray[x][iY] )?1:0;
}
if(is_six(fRes))
{
if(iX>0 && m_bChessArray[iX-1][iY]==0 && iX+5<XVALUE && m_bChessArray[iX+4][iY]==0)
return TRUE;
}
memset(fRes,0,sizeof(int)*4);
for(y=iY;y<iY+4 && y<YVALUE;y++)// to down
{
fRes[y-iY]=(m_bChessArray[iX][iY]==m_bChessArray[iX][y])?1:0;
}
if(is_six(fRes))
{
if(iY>0 && m_bChessArray[iX][iY-1]==0 && iY+5<YVALUE && m_bChessArray[iX][iY+4]==0)
return TRUE;
}
memset(fRes,0,sizeof(int)*4);
for(x=iX,y=iY;x>=0 && y<YVALUE && x>iX-4 ;x--,y++)// left down
{
fRes[y-iY]=(m_bChessArray[iX][iY]==m_bChessArray[x][y])?1:0;
}
if(is_six(fRes))
{
if(iX>0 && iY+5<YVALUE && m_bChessArray[iX-1][iY+4]==0
&& iX+5<XVALUE &&iY>0 && m_bChessArray[iX+4][iY-1]==0)
return TRUE;
}
memset(fRes,0,sizeof(int)*4);
for(x=iX,y=iY;x<XVALUE && y<YVALUE && y<iY+4 ;x++,y++)// right down
{
fRes[x-iX]=(m_bChessArray[iX][iY]==m_bChessArray[x][y])?1:0;
}
if(is_six(fRes))
{
if(iX>0 && iY>0&& m_bChessArray[iX-1][iY-1]==0
&& iX+5<XVALUE && iY+5<YVALUE && m_bChessArray[iX+4][iY+4]==0)
return TRUE;
}
return FALSE;
}
BOOL CFchessView::IsWin(int iChessValue)
{
for(int y=0;y<YVALUE;y++)
for(int x=0;x<XVALUE;x++)
{
if(m_bChessArray[x][y]==iChessValue)
if(IsMatch2(x,y))
return TRUE;
}
for(int y1=1;y1<YVALUE;y1++)
for(int x1=1;x1<XVALUE;x1++)
{
if(m_bChessArray[x1][y1]==iChessValue)
if(IsMatch(x1,y1))
return TRUE;
}
return FALSE;
}
BOOL CFchessView::JudgeWin(void)
{
int iCV=(m_tsComm.IsListenSide())?BLACK_CHESS:WHITE_CHESS;
return IsWin(iCV);
}
BOOL CFchessView::JudgeLost(void)
{
int iCV=(!m_tsComm.IsListenSide())?BLACK_CHESS:WHITE_CHESS;
return IsWin(iCV);
}
/////////////////////////////////////////////////////////////////////////////
// CFchessView drawing
void CFchessView::PlayMessage(void)
{
if(m_fSound)
MessageBeep(MB_ICONQUESTION);
}
void CFchessView::DrawBoard(CDC* pDC)
{
CPen penNew(PS_SOLID,1,RGB(0,0,0)),*ppenOld;
ppenOld=pDC->SelectObject(&penNew);
int iX,iY;
iX=iY=XSIZE;
for(int i=0;i<XVALUE;i++)
{//draw |
pDC->MoveTo(XSTART+iX*i,YSTART+0);
pDC->LineTo(XSTART+iX*i,YSTART+iY*(YVALUE-1));
}
for(int j=0;j<YVALUE;j++)
{
pDC->MoveTo(XSTART+0,YSTART+iY*j);
pDC->LineTo(XSTART+iX*(XVALUE-1),YSTART+iY*j);
}
pDC->SelectObject(ppenOld);
}
void CFchessView::DrawChess(CDC* pDC)
{
HICON hiconB=AfxGetApp()->LoadIcon(IDI_BLACK);
HICON hiconW=AfxGetApp()->LoadIcon(IDI_WHITE);
HICON hiconLB=AfxGetApp()->LoadIcon(IDI_LASTB);
HICON hiconLW=AfxGetApp()->LoadIcon(IDI_LASTW);
int iX,iY;
iX=iY=XSIZE;
for(int i=0;i<XVALUE;i++)
for(int j=0;j<YVALUE;j++)
{
switch(m_bChessArray[i][j])
{
case BLACK_CHESS:
pDC->DrawIcon(i*iX,j*iY,hiconB);
if(i==m_CPLast.bX && j==m_CPLast.bY)
pDC->DrawIcon(i*iX,j*iY,hiconLB);
break;
case WHITE_CHESS:
pDC->DrawIcon(i*iX,j*iY,hiconW);
if(i==m_CPLast.bX && j==m_CPLast.bY)
pDC->DrawIcon(i*iX,j*iY,hiconLW);
break;
default:
break;
}
}
}
void CFchessView::DrawCurrent(CDC* pDC)
{
DrawBoard(pDC);
DrawChess(pDC);
}
void CFchessView::OnDraw(CDC* pDC)
{
CFchessDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
DrawCurrent(pDC);
// TODO: add draw code for native data here
}
/////////////////////////////////////////////////////////////////////////////
// CFchessView diagnostics
#ifdef _DEBUG
void CFchessView::AssertValid() const
{
CView::AssertValid();
}
void CFchessView::Dump(CDumpContext& dc) const
{
CView::Dump(dc);
}
CFchessDoc* CFchessView::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CFchessDoc)));
return (CFchessDoc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CFchessView message handlers
void CFchessView::OnGameNew()
{
//Sleep(40);
//m_tsComm.Close();
//m_fFirstDeside=m_fEst=m_fCanDeside=FALSE;
for(int i=0;i<XVALUE;i++)
for(int j=0;j<YVALUE;j++)
m_bChessArray[i][j]=0;
if(!m_fEst)
EstNew();
else
{
MakeNew(m_CP);
m_tsComm.W
没有合适的资源?快使用搜索试试~ 我知道了~
wuziqi.rar_网络游戏
共67个文件
h:11个
cpp:10个
ico:10个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 158 浏览量
2022-09-20
14:20:23
上传
评论
收藏 151KB RAR 举报
温馨提示
这是一个小程序,实现网络游戏!
资源推荐
资源详情
资源评论
收起资源包目录
wuziqi.rar (67个子文件)
www.pudn.com.txt 218B
fchess_src
stdafx.cpp 204B
fchess.dsw 537B
messageb.h 762B
Release
fchess.mdp 36KB
res
black1.ico 766B
icon1.ico 766B
ico00002.ico 766B
ico00003.ico 766B
cur00001.cur 326B
fchess.ico 1KB
cursor1.cur 326B
toolbar.bmp 982B
white1.ico 766B
fchess.rc2 398B
bitmap1.bmp 87KB
ico00001.ico 766B
stdafx.h 306B
fchesdoc.cpp 2KB
fchess.opt 57KB
fchess.h 961B
fchess.mak 7KB
fchess.aps 32KB
messageb.cpp 915B
fchesdoc.h 1KB
fchess.plg 2KB
tcpsock
stdafx.cpp 205B
Release
tcpsock.lib 8KB
tcpsock.dsp 4KB
estdlg.cpp 3KB
res
trysound.ico 1KB
icon1.ico 766B
tcpsock.rc2 399B
ico00001.ico 766B
tcpsock.clw 690B
stdafx.h 499B
tcpsock.exp 4KB
tcpsock.dsw 539B
ts.h 2KB
tcpsock.001 4KB
tcpsock.def 178B
tcpsock.vcp 11KB
estdlg.h 1KB
tcpsock.plg 2KB
tcpsock.mdp 36KB
tcpsock.opt 55KB
resource.h 776B
tcpsock.aps 20KB
tcpsock.rc 5KB
tcpsock.ncb 49KB
tcpsock.mak 9KB
tcpsock.cpp 1KB
ts.cpp 9KB
www.pudn.com.txt 218B
fchesvw.cpp 14KB
mainfrm.h 983B
fchess.cpp 4KB
resource.h 2KB
fchess.clw 3KB
fchess.dsp 5KB
fchesvw.h 3KB
tcpsock.dll 28KB
fchess.rc 10KB
mainfrm.cpp 3KB
fchess.exe 40KB
fchess.vcp 14KB
fchess.ncb 249KB
共 67 条
- 1
资源评论
局外狗
- 粉丝: 67
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功