#include "stdafx.h"
#include "AboutDlg.h"
#include "SuperDDP.h"
#include "SuperDDPDlg.h"
#include ".\superddpdlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
BOOL flagx=TRUE;
int point1x,point1y,point2x,point2y;
struct MYCOLOR
{
COLORREF c[30];
};
MYCOLOR tc[230];
int tcnum;
int map[8][8]=
{
01, 02, 03, 02, 04, 05, 04, 06,
01, 05, 06, 02, 06, 04, 06, 06,
06, 07, 01, 01, 07, 06, 01, 02,
03, 06, 02, 01, 04, 02, 02, 01,
07, 03, 04, 02, 05, 06, 06, 04,
01, 01, 06, 06, 02, 05, 06, 03,
04, 03, 04, 07, 02, 02, 03, 01,
05, 02, 02, 04, 05, 04, 03, 03,
};
int mymap[8][8];
int r1,g1,b1,r2,b2,g2;
struct result_s
{
int x1;
int y1;
int x2;
int y2;
int score; //分数,收3个80分,再增加1个加10分
}result[64];
int result_count = 0; //当前局有result_count种解
int UnknownObjID = 100; //当有局中有子消掉时,上面会掉下未知的子,他的编号从100开始
int BountyScore = 0; //奖励分数
/*
*******************************************************************************
function name:
description:
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
CSuperDDPDlg::CSuperDDPDlg(CWnd* pParent /*=NULL*/)
: CDialog(CSuperDDPDlg::IDD, pParent)
, mshow(_T(""))
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
m_pos_x = 269;
m_pos_y = 95;
}
/*
*******************************************************************************
function name:
description:
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
void CSuperDDPDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Text(pDX, IDC_EDIT_POS_X, m_pos_x);
DDX_Text(pDX, IDC_EDIT_POS_Y, m_pos_y);
DDX_Text(pDX, IDC_EDIT_SHOW, mshow);
}
/*
*******************************************************************************
function name:
description:
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
BEGIN_MESSAGE_MAP(CSuperDDPDlg, CDialog)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_CLEAR, OnBnClickedClear)
ON_WM_DESTROY()
ON_MESSAGE(WM_HOTKEY,OnHotKey)
END_MESSAGE_MAP()
/*
*******************************************************************************
function name:
description:
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
BOOL CSuperDDPDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 将\“关于...\”菜单项添加到系统菜单中。
// IDM_ABOUTBOX 必须在系统命令范围内。
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);
}
}
// 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动
// 执行此操作
SetIcon(m_hIcon, TRUE); // 设置大图标
SetIcon(m_hIcon, FALSE); // 设置小图标
/* 在窗口标题后增加版本号 */
CString strWindowsTitle;
CGeneralModule gm;
this->GetWindowText(strWindowsTitle);
strWindowsTitle += " ";
strWindowsTitle += gm.GetOwnVersion();
this->SetWindowText(strWindowsTitle);
//注册热键为"F9"
if(!RegisterHotKey(this->m_hWnd,IDC_HOTKEY,NULL,VK_F9))//MOD_CONTROL|MOD_SHIFT
{
MessageBox("注册热键error");
}
CRect r;
this->GetWindowRect(&r);
::SetWindowPos(this->m_hWnd,HWND_TOPMOST,0,0,0,0,SWP_NOREPOSITION|SWP_NOSIZE);
return TRUE; // 除非将焦点设置到控件,否则返回 TRUE
}
/*
*******************************************************************************
function name:
description:
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
void CSuperDDPDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
if ((nID & 0xFFF0) == IDM_ABOUTBOX)
{
CAboutDlg dlgAbout;
dlgAbout.DoModal();
}
else
{
CDialog::OnSysCommand(nID, lParam);
}
}
/*
*******************************************************************************
function name:
description:
// 如果向对话框添加最小化按钮,则需要下面的代码
// 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序,
// 这将由框架自动完成。
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
void CSuperDDPDlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // 用于绘制的设备上下文
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// 使图标在工作矩形中居中
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = (rect.Width() - cxIcon + 1) / 2;
int y = (rect.Height() - cyIcon + 1) / 2;
// 绘制图标
dc.DrawIcon(x, y, m_hIcon);
}
else
{
CDialog::OnPaint();
}
}
/*
*******************************************************************************
function name:
description:当用户拖动最小化窗口时系统调用此函数取得光标显示。
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
HCURSOR CSuperDDPDlg::OnQueryDragIcon()
{
return static_cast<HCURSOR>(m_hIcon);
}
/*
*******************************************************************************
function name:
description:
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
int cha(COLORREF a,COLORREF b)
{
r1=GetRValue(a);
r2=GetRValue(b);
g1=GetGValue(a);
g2=GetGValue(b);
b1=GetBValue(a);
b2=GetBValue(b);
return abs(r1-r2)+abs(g1-g2)+abs(b1-b2);
}
/*
*******************************************************************************
function name:
description:色差15就算是同一个
parameter:
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
int findcolor(MYCOLOR *m)
{
int tol=0;
for(int i=0;i<tcnum;i++)
{
tol=0;
for(int j=0;j<30;j++)
tol+=cha(tc[i].c[j],m->c[j]);
if(tol<15)
return i;
}
return -1;
}
/*
*******************************************************************************
function name:
description:
parameter:x=列,y=行
return:
date: 3/21/2009 Author:WuWJ
*******************************************************************************
*/
BOOL CSuperDDPDlg::GetScore()
{
int i;
int score = 50;
int recoder;
int tmp_map[8][8];
memcpy(tmp_map, mymap, sizeof(tmp_map));
//横向找
for(int y = 0 ; y < 8; y++)
{
for(int x = 0; x < 6; x++)
{
if((mymap[y][x] == mymap[y][x + 1]) && (mymap[y][x] == mymap[y][x + 2]))
{
recoder = mymap[y][x];
while((recoder == mymap[y][x]) && (x < 8))
{
tmp_map[y][x] = 0;
score+=10;
x++;
}
x--;
}
}
}
//列向找
for(int x = 0 ; x < 8; x++)
{
for(int y = 0; y < 6; y++)
{
if((mymap[y][x] == mymap[y + 1][x]) && (mymap[y][x] == mymap[y + 2][x]))
{
recoder = mymap[y][x];
while((recoder == mymap[y][x]) && (y < 8))
{
if(tmp_map[y][x])
{
score+=10;
tmp_map[y][x] = 0;
}
y++;
}
y--;
}
}
}
if(score >= 80)
{
//整理可以消去的
for(int y = 0 ; y < 8; y++)
{
for(int x = 0; x < 8; x++)
{
if(tmp_map[y][x] == 0)
{
for(i = y; i > 0 ; i--)
{
mymap[i][x] = mymap[i-1][x];
}
mymap[0][x] = UnknownObjID++;
}
}
}
result[result_count].score += (score + BountyScore);
BountyScore += 10;
GetScore();
rendao0563
- 粉丝: 123
- 资源: 164
最新资源
- 健身房会员锻炼数据集.zip
- 基于stm32和openmv的色块追踪云台详细文档+全部资料+高分项目.zip
- 基于51单片机声音定位系统课程设计 含源码,仿真,原理图,报告
- 基于STM32和OpenMV的可以实现识别灯自动停车的智能小车。详细文档+全部资料+高分项目.zip
- 自学Matlab必备的60个小程序代码.zip
- 基于STM32和ESP8266在机智云平台下的智能家居系统详细文档+全部资料+高分项目.zip
- 基于STM32控制步进电机云台画线画圆的工程详细文档+全部资料+高分项目.zip
- 基于stm32以及openmv的视觉云台追踪小车详细文档+全部资料+高分项目.zip
- 基于STM32有感直流无刷电机驱动控制程序,集成CANopen通讯电机控制子集协议 和 MONDBUS 协议。详细文档+全部资料+高分项目.zip
- 基于zigbee和stm32的智能家居系统,上位机使用Qt编写,实现了基本的监控。主要包括监控室内温度、湿度、烟雾浓度,用led灯模拟控制家中的灯。界面良好。详细文档+全部资料+高分项目.zip
- 基于uIP+IAP的STM32网络远程烧录升级程序。详细文档+全部资料+高分项目.zip
- whittaker-smoother去噪算法
- 基于安卓开发的智能车载APP具有智能车载健康检测地图定位短信验证登陆注册等功能 数据存储与传输采用MySQL+PHP+JSON 硬件开发基于STM32 F407详细文档+全部资料+高分项目.zip
- 基于输入MCU捕获的电容触摸演示套件,包含软件与硬件详细文档+全部资料+高分项目.zip
- 数据集-目标检测系列- 鸭舌帽 检测数据集 cap >> DataBall
- TSP(SA)模拟退火 地图 源码 可运行.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈