⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 vwumpusdlg.cpp

📁 一个基于MFC的人工智能的巫魔问题求解
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// vwumpusDlg.cpp : implementation file
//

#include "stdafx.h"
#include "vwumpus.h"
#include "vwumpusDlg.h"
#include "wumpus.h"

Hero hero;
CString HeroInfo="欢迎来到巫魔世界!\r\n";

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

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVwumpusDlg dialog

CVwumpusDlg::CVwumpusDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CVwumpusDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CVwumpusDlg)
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CVwumpusDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CVwumpusDlg)
	DDX_Control(pDX, IDC_BUTTON3, m_nNext);
	DDX_Control(pDX, IDC_RANDMAP, m_nRandMap);
	DDX_Control(pDX, IDC_ONCEAGAIN, m_nOnceAgain);
	DDX_Control(pDX, IDC_GAME, m_nGame);
	DDX_Control(pDX, IDC_GRID9, grid9);
	DDX_Control(pDX, IDC_GRID8, grid8);
	DDX_Control(pDX, IDC_GRID7, grid7);
	DDX_Control(pDX, IDC_GRID6, grid6);
	DDX_Control(pDX, IDC_GRID5, grid5);
	DDX_Control(pDX, IDC_GRID4, grid4);
	DDX_Control(pDX, IDC_GRID3, grid3);
	DDX_Control(pDX, IDC_GRID2, grid2);
	DDX_Control(pDX, IDC_GRID16, grid16);
	DDX_Control(pDX, IDC_GRID15, grid15);
	DDX_Control(pDX, IDC_GRID14, grid14);
	DDX_Control(pDX, IDC_GRID13, grid13);
	DDX_Control(pDX, IDC_GRID12, grid12);
	DDX_Control(pDX, IDC_GRID11, grid11);
	DDX_Control(pDX, IDC_GRID10, grid10);
	DDX_Control(pDX, IDC_GRID1, grid1);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CVwumpusDlg, CDialog)
	//{{AFX_MSG_MAP(CVwumpusDlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_RANDMAP, OnShow)
	ON_BN_CLICKED(IDC_GAME, OnGame)
	ON_BN_CLICKED(IDC_ONCEAGAIN, OnOnceagain)
	ON_BN_CLICKED(IDC_BUTTON3, OnButton3)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CVwumpusDlg message handlers

BOOL CVwumpusDlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	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);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here

	ShowMap(hero.map);
	ShowDanger(hero.handbook);
	ShowSence(hero.handbook);
	ShowGain(hero.score);
	ShowHeroInfo(HeroInfo);
	m_nOnceAgain.EnableWindow(FALSE);
	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

void CVwumpusDlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CVwumpusDlg::OnPaint() 
{
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		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;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CVwumpusDlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CVwumpusDlg::ShowMap(Map map)
{

	CStatic * Grid1=&grid1;
	CStatic * Grid2=&grid2;
	CStatic * Grid3=&grid3;
	CStatic * Grid4=&grid4;
	CStatic * Grid5=&grid5;
	CStatic * Grid6=&grid6;
	CStatic * Grid7=&grid7;
	CStatic * Grid8=&grid8;
	CStatic * Grid9=&grid9;
	CStatic * Grid10=&grid10;
	CStatic * Grid11=&grid11;
	CStatic * Grid12=&grid12;
	CStatic * Grid13=&grid13;
	CStatic * Grid14=&grid14;
	CStatic * Grid15=&grid15;
	CStatic * Grid16=&grid16;


	HBITMAP Blank,Wumpus,Pit,Gold,Hero,DeadWumpus;
	Blank=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_BLANK));
	Wumpus=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_WUMPUS));
	Pit=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_PIT));
	Gold=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_GOLD));
	Hero=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_HERO));
	DeadWumpus=::LoadBitmap(::AfxGetInstanceHandle(),MAKEINTRESOURCE(IDB_DWUMPUS));

	
	if(map.maze[0][0].sthin==him)
		Grid1->SetBitmap(Hero);
	else if(map.maze[0][0].sthin==wumpus)
		Grid1->SetBitmap(Wumpus);
	else if(map.maze[0][0].sthin==deadwumpus)
		Grid1->SetBitmap(DeadWumpus);
	else if(map.maze[0][0].sthin==pit)
		Grid1->SetBitmap(Pit);
	else if(map.maze[0][0].sthin==gold)
		Grid1->SetBitmap(Gold);
	else Grid1->SetBitmap(Blank);

	if(map.maze[0][1].sthin==him)
		Grid2->SetBitmap(Hero);
	else if(map.maze[0][1].sthin==wumpus)
		Grid2->SetBitmap(Wumpus);
	else if(map.maze[0][1].sthin==deadwumpus)
		Grid2->SetBitmap(DeadWumpus);
	else if(map.maze[0][1].sthin==pit)
		Grid2->SetBitmap(Pit);
	else if(map.maze[0][1].sthin==gold)
		Grid2->SetBitmap(Gold);
	else Grid2->SetBitmap(Blank);

	if(map.maze[0][2].sthin==him)
		Grid3->SetBitmap(Hero);
	else if(map.maze[0][2].sthin==wumpus)
		Grid3->SetBitmap(Wumpus);
	else if(map.maze[0][2].sthin==deadwumpus)
		Grid3->SetBitmap(DeadWumpus);
	else if(map.maze[0][2].sthin==pit)
		Grid3->SetBitmap(Pit);
	else if(map.maze[0][2].sthin==gold)
		Grid3->SetBitmap(Gold);
	else Grid3->SetBitmap(Blank);

	if(map.maze[0][3].sthin==him)
		Grid4->SetBitmap(Hero);
	else if(map.maze[0][3].sthin==wumpus)
		Grid4->SetBitmap(Wumpus);
	else if(map.maze[0][3].sthin==deadwumpus)
		Grid4->SetBitmap(DeadWumpus);
	else if(map.maze[0][3].sthin==pit)
		Grid4->SetBitmap(Pit);
	else if(map.maze[0][3].sthin==gold)
		Grid4->SetBitmap(Gold);
	else Grid4->SetBitmap(Blank);

	if(map.maze[1][0].sthin==him)
		Grid5->SetBitmap(Hero);
	else if(map.maze[1][0].sthin==wumpus)
		Grid5->SetBitmap(Wumpus);
	else if(map.maze[1][0].sthin==deadwumpus)
		Grid5->SetBitmap(DeadWumpus);
	else if(map.maze[1][0].sthin==pit)
		Grid5->SetBitmap(Pit);
	else if(map.maze[1][0].sthin==gold)
		Grid5->SetBitmap(Gold);
	else Grid5->SetBitmap(Blank);

	if(map.maze[1][1].sthin==him)
		Grid6->SetBitmap(Hero);
	else if(map.maze[1][1].sthin==wumpus)
		Grid6->SetBitmap(Wumpus);
	else if(map.maze[1][1].sthin==deadwumpus)
		Grid6->SetBitmap(DeadWumpus);
	else if(map.maze[1][1].sthin==pit)
		Grid6->SetBitmap(Pit);
	else if(map.maze[1][1].sthin==gold)
		Grid6->SetBitmap(Gold);
	else Grid6->SetBitmap(Blank);

	if(map.maze[1][2].sthin==him)
		Grid7->SetBitmap(Hero);
	else if(map.maze[1][2].sthin==wumpus)
		Grid7->SetBitmap(Wumpus);
	else if(map.maze[1][2].sthin==deadwumpus)
		Grid7->SetBitmap(DeadWumpus);
	else if(map.maze[1][2].sthin==pit)
		Grid7->SetBitmap(Pit);
	else if(map.maze[1][2].sthin==gold)
		Grid7->SetBitmap(Gold);
	else Grid7->SetBitmap(Blank);
	
	if(map.maze[1][3].sthin==him)
		Grid8->SetBitmap(Hero);
	else if(map.maze[1][3].sthin==wumpus)
		Grid8->SetBitmap(Wumpus);
	else if(map.maze[1][3].sthin==deadwumpus)
		Grid8->SetBitmap(DeadWumpus);
	else if(map.maze[1][3].sthin==pit)
		Grid8->SetBitmap(Pit);
	else if(map.maze[1][3].sthin==gold)
		Grid8->SetBitmap(Gold);
	else Grid8->SetBitmap(Blank);

	if(map.maze[2][0].sthin==him)
		Grid9->SetBitmap(Hero);
	else if(map.maze[2][0].sthin==wumpus)
		Grid9->SetBitmap(Wumpus);
	else if(map.maze[2][0].sthin==deadwumpus)
		Grid9->SetBitmap(DeadWumpus);
	else if(map.maze[2][0].sthin==pit)
		Grid9->SetBitmap(Pit);
	else if(map.maze[2][0].sthin==gold)
		Grid9->SetBitmap(Gold);
	else Grid9->SetBitmap(Blank);

	if(map.maze[2][1].sthin==him)
		Grid10->SetBitmap(Hero);
	else if(map.maze[2][1].sthin==wumpus)
		Grid10->SetBitmap(Wumpus);
	else if(map.maze[2][1].sthin==deadwumpus)
		Grid10->SetBitmap(DeadWumpus);
	else if(map.maze[2][1].sthin==pit)
		Grid10->SetBitmap(Pit);
	else if(map.maze[2][1].sthin==gold)
		Grid10->SetBitmap(Gold);
	else Grid10->SetBitmap(Blank);

	if(map.maze[2][2].sthin==him)
		Grid11->SetBitmap(Hero);
	else if(map.maze[2][2].sthin==wumpus)
		Grid11->SetBitmap(Wumpus);
	else if(map.maze[2][2].sthin==deadwumpus)
		Grid11->SetBitmap(DeadWumpus);
	else if(map.maze[2][2].sthin==pit)
		Grid11->SetBitmap(Pit);
	else if(map.maze[2][2].sthin==gold)
		Grid11->SetBitmap(Gold);
	else Grid11->SetBitmap(Blank);

	if(map.maze[2][3].sthin==him)
		Grid12->SetBitmap(Hero);
	else if(map.maze[2][3].sthin==wumpus)
		Grid12->SetBitmap(Wumpus);
	else if(map.maze[2][3].sthin==deadwumpus)
		Grid12->SetBitmap(DeadWumpus);
	else if(map.maze[2][3].sthin==pit)
		Grid12->SetBitmap(Pit);
	else if(map.maze[2][3].sthin==gold)
		Grid12->SetBitmap(Gold);
	else Grid12->SetBitmap(Blank);

	if(map.maze[3][0].sthin==him)
		Grid13->SetBitmap(Hero);
	else if(map.maze[3][0].sthin==wumpus)
		Grid13->SetBitmap(Wumpus);
	else if(map.maze[3][0].sthin==deadwumpus)
		Grid13->SetBitmap(DeadWumpus);
	else if(map.maze[3][0].sthin==pit)
		Grid13->SetBitmap(Pit);
	else if(map.maze[3][0].sthin==gold)
		Grid13->SetBitmap(Gold);
	else Grid13->SetBitmap(Blank);

	if(map.maze[3][1].sthin==him)
		Grid14->SetBitmap(Hero);
	else if(map.maze[3][1].sthin==wumpus)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -