• 大小: 2.88MB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2023-09-15
  • 语言: C/C++
  • 标签:

资源简介

使用C++语言制作的中国象棋人机对弈程序,附带论文及源码

资源截图

代码片段和文件信息

// Chess.cpp : Defines the entry point for the application.
// Download by http://www.codefans.net
#include 
#include 
#include
#include 
#include 
#include “stdafx.h“
#include “resource.h“
#include “COMMDLG.h“
#include
#define MAX_LOADSTRING 100
#define IDB_INITCHESS 101
#define IDB_EXIT 102
#define IDB_HELP 103  
#define IDB_CCOMM 108
#define IDE_IPADDR 109
#define IDE_PORT 110
#define IDS_1    111
#define IDS_2    112
#define IDB_SEND  113
#define IDE_Msg1  114
#define IDE_Msg2  115
#define IDE_Msg3  116
#define IDB_SENDMSG 117
#define IDB_REPLAY 118
#define socklen_t int
#pragma comment(lib“wsock32.lib“)
// Global Variables://///////////////////////////////////////////////////////////////////////
HINSTANCE hInst; // current instance
TCHAR sztitle[MAX_LOADSTRING]; // The title bar text
TCHAR szWindowClass[MAX_LOADSTRING]; // The title bar text
const int cX=200cY=40;                         //设置棋盘左上角坐标cX(Coordinate.X)cY(Coordinate.Y)为(20040)
static int wcX=400wcY=250;                     //窗口左上角坐标wcX(WindowCoordinate.X)wcY(WindowCoordinate.Y)                          
int xArray[9][10]yArray[9][10]InfoArray[9][10];                  //为棋盘90个棋位分别分配x轴y轴坐标信息以及
//保存此位相关信息的infoAraay数组
static int GetChessman=0;       //判断棋子是否选中
static int RedOrBlack=2;        //判断轮到哪方走棋
static int Prei=0Prej=0;     //前一个坐标点  preceding ij
static  bool win=false;         //判断是否已有一方胜利

bool Online=false;              //判断是否联机
static int mytrun=1;            //联机时用于判断是否本方走棋
static bool Accept=false;       //网络联机接受对方邀请Accept=true
static bool Accept2=false;      //网络联机邀请对方对方接受Accept2=true
static bool NetExit=false;      //当用户强行退出时这个变量决定是否向对方发送消息

int UpdateAllData;              //7位数向对方发送更新的信息具体定义参见函数体
char CUpdateAllData[20];        //char型的UpdateAllData用做网络发送
char *ClientAddr;               //用做保存对方地址
short ClientPort;         //用做保存对方端口

int ReplayX1=0ReplayY1=0ReplayX2=0ReplayY2=0;  //保存棋子行走路径回看之用

HWND hWndPush;                                                  //用做添加按钮
PAINTSTRUCT ps;
HDC hdc;
HWND hWnd;
HFONT hf_Win;


int get=0;                        //get在WM_MOUSEMOVE消息响应中决定是否动态显示棋子(选中棋子:value=1)
int Frequency=0;                  //见WM_MOUSEMOVE消息响应Frequency(频率) 适当降低MOUSEMOVE的刷新频度
int IsGet=0;                        //当获得棋子时鼠标移出棋盘时释放光标当再次移到棋盘内则再次获得光标并重新设置成手形
//见WM_MOUSEMOVE

static HWND hEditIPAddrhEditPorthStatic1hStatic2;
static HWND hEditMsg1hEditMsg2hEditMsg3; 
///////////////////////////////////////////////////////////////////////////////////////////

// Foward declarations of functions included in this code module:
ATOM MyRegisterClass(HINSTANCE hInstance);
BOOL InitInstance(HINSTANCE int);
LRESULT CALLBACK WndProc(HWND UINT WPARAM LPARAM);
LRESULT CALLBACK About(HWND UINT WPARAM LPARAM);

//////////////////////////////////////////////////////////////////////////////////

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

----------- ---------  ---------- -----  ----

              5837186                    32


评论

共有 条评论

相关资源