📄 dot04_20view.cpp
字号:
// Dot04_20View.cpp : implementation of the CDot04_20View class
//
#include "stdafx.h"
#include "Dot04_20.h"
#include "Dot04_20Doc.h"
#include "Dot04_20View.h"
#include "changecard.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDot04_20View
IMPLEMENT_DYNCREATE(CDot04_20View, CFormView)
BEGIN_MESSAGE_MAP(CDot04_20View, CFormView)
//{{AFX_MSG_MAP(CDot04_20View)
ON_BN_CLICKED(IDC_CARD1, OnCard1)
ON_BN_CLICKED(IDC_CARD2, OnCard2)
ON_BN_CLICKED(IDC_CARD3, OnCard3)
ON_BN_CLICKED(IDC_CARD4, OnCard4)
ON_BN_CLICKED(IDC_CARD5, OnCard5)
ON_BN_CLICKED(IDC_YES, OnYes)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
ON_COMMAND(ID_STOP, OnStop)
ON_EN_CHANGE(IDC_EDIT, OnChangeEdit)
ON_WM_CTLCOLOR()
ON_COMMAND(ID_CHANGECOLOR, OnChangecolor)
ON_COMMAND(ID_START, OnStart)
ON_BN_CLICKED(IDC_NONE, OnNone)
ON_COMMAND(ID_CHANGECARD, OnChangecard)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CDot04_20View construction/destruction
CDot04_20View::CDot04_20View()
: CFormView(CDot04_20View::IDD)
{
//{{AFX_DATA_INIT(CDot04_20View)
m_score =1000;//得分赋值
m_time = 0;
m_input = _T("");
m_ju = 0;
m_lun = 0;
m_mtd = _T("");
color=RGB(5,90,5);//背景为绿色
S=0;
noanswer=0;
m_none = FALSE;
h=0;
stop=0;
count=0;
//}}AFX_DATA_INIT
// TODO: add construction code here
}
CDot04_20View::~CDot04_20View()
{
}
void CDot04_20View::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CDot04_20View)
DDX_Text(pDX, IDC_SCORE, m_score);
DDX_Text(pDX, IDC_TIME, m_time);
DDX_Text(pDX, IDC_EDIT, m_input);
DDX_Text(pDX, IDC_JU, m_ju);
DDX_Text(pDX, IDC_LUN, m_lun);
DDX_LBString(pDX, IDC_MTD, m_mtd);
DDX_Check(pDX, IDC_NONE, m_none);
//}}AFX_DATA_MAP
}
BOOL CDot04_20View::PreCreateWindow(CREATESTRUCT& cs)
{
// TODO: Modify the Window class or styles here by modifying
// the CREATESTRUCT cs
return CFormView::PreCreateWindow(cs);
}
//对52张牌进行初始化,位图放进数组
void CDot04_20View::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
GetParentFrame()->RecalcLayout();
ResizeParentToFit();
m_Bitmapback.LoadBitmap(IDB_BACK);
bbjmap[0].LoadBitmap(IDB_BITMAP1);
bbjmap[1].LoadBitmap(IDB_BITMAP2);
bbjmap[2].LoadBitmap(IDB_BITMAP3);
bbjmap[3].LoadBitmap(IDB_BITMAP4);
bbjmap[4].LoadBitmap(IDB_BITMAP5);
m_card[0]=(CButton*)GetDlgItem(IDC_CARD1);
m_card[1]=(CButton*)GetDlgItem(IDC_CARD2);//五张牌的按钮指针放的数组里
m_card[2]=(CButton*)GetDlgItem(IDC_CARD3);
m_card[3]=(CButton*)GetDlgItem(IDC_CARD4);
m_card[4]=(CButton*)GetDlgItem(IDC_CARD5);
m_card[0]->SetBitmap(HBITMAP(m_Bitmapback));//开始时五张牌全为背面
m_card[1]->SetBitmap(HBITMAP(m_Bitmapback));
m_card[2]->SetBitmap(HBITMAP(m_Bitmapback));
m_card[3]->SetBitmap(HBITMAP(m_Bitmapback));
m_card[4]->SetBitmap(HBITMAP(m_Bitmapback));
m_Bitmap[0].LoadBitmap(IDB_HE1); //52张牌全部放到数组中
m_Bitmap[1].LoadBitmap(IDB_HE2);
m_Bitmap[2].LoadBitmap(IDB_HE3);
m_Bitmap[3].LoadBitmap(IDB_HE4);
m_Bitmap[4].LoadBitmap(IDB_HE5);
m_Bitmap[5].LoadBitmap(IDB_HE6);
m_Bitmap[6].LoadBitmap(IDB_HE7);
m_Bitmap[7].LoadBitmap(IDB_HE8);
m_Bitmap[8].LoadBitmap(IDB_HE9);
m_Bitmap[9].LoadBitmap(IDB_HE10);
m_Bitmap[10].LoadBitmap(IDB_HE11);
m_Bitmap[11].LoadBitmap(IDB_HE12);
m_Bitmap[12].LoadBitmap(IDB_HE13);
m_Bitmap[13].LoadBitmap(IDB_M1);
m_Bitmap[14].LoadBitmap(IDB_M2);
m_Bitmap[15].LoadBitmap(IDB_M3);
m_Bitmap[16].LoadBitmap(IDB_M4);
m_Bitmap[17].LoadBitmap(IDB_M5);
m_Bitmap[18].LoadBitmap(IDB_M6);
m_Bitmap[19].LoadBitmap(IDB_M7);
m_Bitmap[20].LoadBitmap(IDB_M8);
m_Bitmap[21].LoadBitmap(IDB_M9);
m_Bitmap[22].LoadBitmap(IDB_M10);
m_Bitmap[23].LoadBitmap(IDB_M11);
m_Bitmap[24].LoadBitmap(IDB_M12);
m_Bitmap[25].LoadBitmap(IDB_M13);
m_Bitmap[26].LoadBitmap(IDB_F1);
m_Bitmap[27].LoadBitmap(IDB_F2);
m_Bitmap[28].LoadBitmap(IDB_F3);
m_Bitmap[29].LoadBitmap(IDB_F4);
m_Bitmap[30].LoadBitmap(IDB_F5);
m_Bitmap[31].LoadBitmap(IDB_F6);
m_Bitmap[32].LoadBitmap(IDB_F7);
m_Bitmap[33].LoadBitmap(IDB_F8);
m_Bitmap[34].LoadBitmap(IDB_F9);
m_Bitmap[35].LoadBitmap(IDB_F10);
m_Bitmap[36].LoadBitmap(IDB_F11);
m_Bitmap[37].LoadBitmap(IDB_F12);
m_Bitmap[38].LoadBitmap(IDB_F13);
m_Bitmap[39].LoadBitmap(IDB_H1);
m_Bitmap[40].LoadBitmap(IDB_H2);
m_Bitmap[41].LoadBitmap(IDB_H3);
m_Bitmap[42].LoadBitmap(IDB_H4);
m_Bitmap[43].LoadBitmap(IDB_H5);
m_Bitmap[44].LoadBitmap(IDB_H6);
m_Bitmap[45].LoadBitmap(IDB_H7);
m_Bitmap[46].LoadBitmap(IDB_H8);
m_Bitmap[47].LoadBitmap(IDB_H8);
m_Bitmap[48].LoadBitmap(IDB_H9);
m_Bitmap[49].LoadBitmap(IDB_H10);
m_Bitmap[50].LoadBitmap(IDB_H11);
m_Bitmap[51].LoadBitmap(IDB_H12);
m_Bitmap[52].LoadBitmap(IDB_H13);
}
/////////////////////////////////////////////////////////////////////////////
// CDot04_20View diagnostics
#ifdef _DEBUG
void CDot04_20View::AssertValid() const
{
CFormView::AssertValid();
}
void CDot04_20View::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
CDot04_20Doc* CDot04_20View::GetDocument() // non-debug version is inline
{
ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDot04_20Doc)));
return (CDot04_20Doc*)m_pDocument;
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CDot04_20View message handlers
void CDot04_20View::OnCard1() //当点击第一张牌时随机发放其它四张牌
{ UpdateData(true);
m_none = false;
noanswer=1;
h=0;
if (stop==0)
{if(S==1)
{ m_card[1]=(CButton*)GetDlgItem(IDC_CARD2);
m_card[2]=(CButton*)GetDlgItem(IDC_CARD3);
m_card[3]=(CButton*)GetDlgItem(IDC_CARD4);
m_card[4]=(CButton*)GetDlgItem(IDC_CARD5);
m_card[1]->SetBitmap(HBITMAP(m_Bitmap[a=rand()%52]));//指向随机给出牌的数组
m_card[2]->SetBitmap(HBITMAP(m_Bitmap[x=rand()%52]));
m_card[3]->SetBitmap(HBITMAP(m_Bitmap[y=rand()%52]));
m_card[4]->SetBitmap(HBITMAP(m_Bitmap[z=rand()%52]));
//记录牌面的大小
if(a<13)
t1=a+1;
else
t1=a%13+1;
if(x<13)
t2=x+1;
else
t2=x%13+1;
if(y<13)
t3=y+1;
else
t3=y%13+1;
if(z<13)
t4=z+1;
else
t4=z%13+1;
SetTimer(1,1000,NULL);//按下牌记时器开始工作
m_time=0;
m_input = _T("");//对编辑框清空
m_lun++;
if(m_lun>13)
{m_lun=1;m_ju++;}
CListBox *p;
p=(CListBox *)GetDlgItem(IDC_MTD);
p->ResetContent();}
else MessageBox("请先开局!");
noanswer=0;
UpdateData(false);}
else MessageBox("现在游戏暂停,请按继续!");
}
void CDot04_20View::OnCard2()
{ if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
CString s;
s.Format("%d",t1);//把整形数字转换为字符型
m_input=m_input+s;//放到input数组中
UpdateData(false);}
}
void CDot04_20View::OnCard3()
{if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
CString s;
s.Format("%d",t2);//把整形数字转换为字符型
m_input=m_input+s;//放到input数组中
UpdateData(false);}
}
void CDot04_20View::OnCard4()
{if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
CString s;
s.Format("%d",t3);//把整形数字转换为字符型
m_input=m_input+s;//放到input数组中
UpdateData(false);}
}
void CDot04_20View::OnCard5()
{if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
CString s;
s.Format("%d",t4);//把整形数字转换为字符型
m_input=m_input+s;//放到input数组中
UpdateData(false);}
}
void CDot04_20View::OnYes()
{
CString s,s1,s2;
s=compu(t1,t2,t3,t4);
s1=compu(t3,t2,t1,t4);//四张牌的计算
s2=compu(t4,t2,t1,t3);
m_none = false;
if(stop==0)
{ if(noanswer==0)
{
if(S==1)
{ KillTimer(1);
CListBox *p;
p=(CListBox *)GetDlgItem(IDC_MTD);//把答案放到列表上
p->AddString(s);
p->AddString(s1);
p->AddString(s2);
n= TotalCompute(m_input);
if(n==24)
{ m_score=m_score+100;MessageBox("正确,请继续!");}
else MessageBox("错误!请看答案!");
}
if(S==0)
MessageBox("请先开局!");}
if(noanswer==1)
{if(s==R||s1==R||s2==R)
{m_score=m_score+100;
MessageBox("正确,请继续!");}
else { KillTimer(1);
CString s,s1,s2;
s=compu(t1,t2,t3,t4);
s1=compu(t3,t2,t1,t4);//四张牌的计算
s2=compu(t4,t2,t1,t3);
CListBox *p;
p=(CListBox *)GetDlgItem(IDC_MTD);//把答案放到列表上
p->AddString(s);
p->AddString(s1);
p->AddString(s2);
MessageBox("有解!请看答案!");}}
noanswer=0;
UpdateData(false);}
else MessageBox("现在游戏暂停,请按继续!");
}
void CDot04_20View::OnTimer(UINT nIDEvent)
{m_time++; //在记时器中数字的变换
m_score-- ; //得分减少
UpdateData(false);
// TODO: Add your message handler code here and/or call default
CFormView::OnTimer(nIDEvent);
}
void CDot04_20View::OnButton1() //按下(键
{
if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
m_input=m_input+"(";//在编辑框中显示符号
UpdateData(false);
}
}
void CDot04_20View::OnButton2() //按下+键
{if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
m_input=m_input+"+";
UpdateData(false);}
}
void CDot04_20View::OnButton3() //按下-键
{if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
m_input=m_input+"-";
UpdateData(false);
}
}
void CDot04_20View::OnButton4() //按下*键
{if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
m_input=m_input+"*";
UpdateData(false);}
}
void CDot04_20View::OnButton5() //按下/键
{if(S==1&&noanswer==0&&stop==0)
{ UpdateData(true);
m_input=m_input+"/";
UpdateData(false);
}
}
void CDot04_20View::OnButton6() //按下)键
{if(S==1&&noanswer==0&&stop==0)
{UpdateData(true);
m_input=m_input+")";
UpdateData(false);
}
}
void CDot04_20View::OnStop()
{count++;
if(count%2==0)
stop=0;
else stop=1;
KillTimer(1); // TODO: Add your command handler code here
}
//算法
CString CDot04_20View::compu(int i1, int i2, int i3, int i4)
{
CString s;
int i,j,k,l;
float a[4];
a[0]=(float)i1;
a[1]=(float)i2;
a[2]=(float)i3;
a[3]=(float)i4;
for (i=0;i<4;i++)
for (j=0;j<4;j++)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -