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

📄 vwumpusdlg.cpp

📁 一个基于MFC的人工智能的巫魔问题求解
💻 CPP
📖 第 1 页 / 共 2 页
字号:
		Grid14->SetBitmap(Wumpus);
	else if(map.maze[3][1].sthin==deadwumpus)
		Grid14->SetBitmap(DeadWumpus);
	else if(map.maze[3][1].sthin==pit)
		Grid14->SetBitmap(Pit);
	else if(map.maze[3][1].sthin==gold)
		Grid14->SetBitmap(Gold);
	else Grid14->SetBitmap(Blank);

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

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

void CVwumpusDlg::OnShow() 
{
	// TODO: Add your control notification handler code here
	m_nRandMap.EnableWindow(FALSE);
	m_nGame.EnableWindow(FALSE);
	m_nNext.EnableWindow(FALSE);
	m_nOnceAgain.EnableWindow(FALSE);
	Map map;
	hero.Init();
	HeroInfo="欢迎来到巫魔世界!\r\n";
	hero.map=map;
	ShowState();
	m_nRandMap.EnableWindow(TRUE);
	m_nGame.EnableWindow(TRUE);
	m_nNext.EnableWindow(TRUE);
	
}

void CVwumpusDlg::ShowDanger(guide handbook[4][4])
{
	CEdit*Grid1=(CEdit*)GetDlgItem(IDC_DAN1);
	CEdit*Grid2=(CEdit*)GetDlgItem(IDC_DAN2);
	CEdit*Grid3=(CEdit*)GetDlgItem(IDC_DAN3);
	CEdit*Grid4=(CEdit*)GetDlgItem(IDC_DAN4);
	CEdit*Grid5=(CEdit*)GetDlgItem(IDC_DAN5);
	CEdit*Grid6=(CEdit*)GetDlgItem(IDC_DAN6);
	CEdit*Grid7=(CEdit*)GetDlgItem(IDC_DAN7);
	CEdit*Grid8=(CEdit*)GetDlgItem(IDC_DAN8);
	CEdit*Grid9=(CEdit*)GetDlgItem(IDC_DAN9);
	CEdit*Grid10=(CEdit*)GetDlgItem(IDC_DAN10);
	CEdit*Grid11=(CEdit*)GetDlgItem(IDC_DAN11);
	CEdit*Grid12=(CEdit*)GetDlgItem(IDC_DAN12);
	CEdit*Grid13=(CEdit*)GetDlgItem(IDC_DAN13);
	CEdit*Grid14=(CEdit*)GetDlgItem(IDC_DAN14);
	CEdit*Grid15=(CEdit*)GetDlgItem(IDC_DAN15);
	CEdit*Grid16=(CEdit*)GetDlgItem(IDC_DAN16);
	
	CString danger1;
	CString danger2;
	CString danger3;
	CString danger4;
	CString danger5;
	CString danger6;
	CString danger7;
	CString danger8;
	CString danger9;
	CString danger10;
	CString danger11;
	CString danger12;
	CString danger13;
	CString danger14;
	CString danger15;
	CString danger16;

	danger1.Format("%d",handbook[0][0].pit+handbook[0][0].wumpus);
	danger2.Format("%d",handbook[0][1].pit+handbook[0][1].wumpus);
	danger3.Format("%d",handbook[0][2].pit+handbook[0][2].wumpus);
	danger4.Format("%d",handbook[0][3].pit+handbook[0][3].wumpus);
	danger5.Format("%d",handbook[1][0].pit+handbook[1][0].wumpus);
	danger6.Format("%d",handbook[1][1].pit+handbook[1][1].wumpus);
	danger7.Format("%d",handbook[1][2].pit+handbook[1][2].wumpus);
	danger8.Format("%d",handbook[1][3].pit+handbook[1][3].wumpus);
	danger9.Format("%d",handbook[2][0].pit+handbook[2][0].wumpus);
	danger10.Format("%d",handbook[2][1].pit+handbook[2][1].wumpus);
	danger11.Format("%d",handbook[2][2].pit+handbook[2][2].wumpus);
	danger12.Format("%d",handbook[2][3].pit+handbook[2][3].wumpus);
	danger13.Format("%d",handbook[3][0].pit+handbook[3][0].wumpus);
	danger14.Format("%d",handbook[3][1].pit+handbook[3][1].wumpus);
	danger15.Format("%d",handbook[3][2].pit+handbook[3][2].wumpus);
	danger16.Format("%d",handbook[3][3].pit+handbook[3][3].wumpus);

	Grid1->SetWindowText(danger1);Grid1->LineScroll(Grid1->GetLineCount());
	Grid2->SetWindowText(danger2);Grid2->LineScroll(Grid2->GetLineCount());
	Grid3->SetWindowText(danger3);Grid3->LineScroll(Grid3->GetLineCount());
	Grid4->SetWindowText(danger4);Grid4->LineScroll(Grid4->GetLineCount());
	Grid5->SetWindowText(danger5);Grid5->LineScroll(Grid5->GetLineCount());
	Grid6->SetWindowText(danger6);Grid6->LineScroll(Grid6->GetLineCount());
	Grid7->SetWindowText(danger7);Grid7->LineScroll(Grid7->GetLineCount());
	Grid8->SetWindowText(danger8);Grid8->LineScroll(Grid8->GetLineCount());
	Grid9->SetWindowText(danger9);Grid9->LineScroll(Grid9->GetLineCount());
	Grid10->SetWindowText(danger10);Grid10->LineScroll(Grid10->GetLineCount());
	Grid11->SetWindowText(danger11);Grid11->LineScroll(Grid11->GetLineCount());
	Grid12->SetWindowText(danger12);Grid12->LineScroll(Grid12->GetLineCount());
	Grid13->SetWindowText(danger13);Grid13->LineScroll(Grid13->GetLineCount());
	Grid14->SetWindowText(danger14);Grid14->LineScroll(Grid14->GetLineCount());
	Grid15->SetWindowText(danger15);Grid15->LineScroll(Grid15->GetLineCount());
	Grid16->SetWindowText(danger16);Grid16->LineScroll(Grid16->GetLineCount());

//	CDialog* dlg=(CDialog*)AfxGetApp()->m_pMainWnd;
//	dlg->RedrawWindow();
}

void CVwumpusDlg::ShowSence(guide handbook[4][4])
{
	CEdit*Grid1=(CEdit*)GetDlgItem(IDC_SEN1);
	CEdit*Grid2=(CEdit*)GetDlgItem(IDC_SEN2);
	CEdit*Grid3=(CEdit*)GetDlgItem(IDC_SEN3);
	CEdit*Grid4=(CEdit*)GetDlgItem(IDC_SEN4);
	CEdit*Grid5=(CEdit*)GetDlgItem(IDC_SEN5);
	CEdit*Grid6=(CEdit*)GetDlgItem(IDC_SEN6);
	CEdit*Grid7=(CEdit*)GetDlgItem(IDC_SEN7);
	CEdit*Grid8=(CEdit*)GetDlgItem(IDC_SEN8);
	CEdit*Grid9=(CEdit*)GetDlgItem(IDC_SEN9);
	CEdit*Grid10=(CEdit*)GetDlgItem(IDC_SEN10);
	CEdit*Grid11=(CEdit*)GetDlgItem(IDC_SEN11);
	CEdit*Grid12=(CEdit*)GetDlgItem(IDC_SEN12);
	CEdit*Grid13=(CEdit*)GetDlgItem(IDC_SEN13);
	CEdit*Grid14=(CEdit*)GetDlgItem(IDC_SEN14);
	CEdit*Grid15=(CEdit*)GetDlgItem(IDC_SEN15);
	CEdit*Grid16=(CEdit*)GetDlgItem(IDC_SEN16);

	CString sence1;
	CString sence2;
	CString sence3;
	CString sence4;
	CString sence5;
	CString sence6;
	CString sence7;
	CString sence8;
	CString sence9;
	CString sence10;
	CString sence11;
	CString sence12;
	CString sence13;
	CString sence14;
	CString sence15;
	CString sence16;

	if(handbook[0][0].in==unknown)
		sence1=("?");
	else if(handbook[0][0].in==blank)
		sence1=("");
	else sence1=("■");

	if(handbook[0][1].in==unknown)
		sence2=("?");
	else if(handbook[0][1].in==blank)
		sence2=("");
	else sence2=("■");

	if(handbook[0][2].in==unknown)
		sence3=("?");
	else if(handbook[0][2].in==blank)
		sence3=("");
	else sence3=("■");

	if(handbook[0][3].in==unknown)
		sence4=("?");
	else if(handbook[0][3].in==blank)
		sence4=("");
	else sence4=("■");

	if(handbook[1][0].in==unknown)
		sence5=("?");
	else if(handbook[1][0].in==blank)
		sence5=("");
	else sence5=("■");

	if(handbook[1][1].in==unknown)
		sence6=("?");
	else if(handbook[1][1].in==blank)
		sence6=("");
	else sence6=("■");

	if(handbook[1][2].in==unknown)
		sence7=("?");
	else if(handbook[1][2].in==blank)
		sence7=("");
	else sence7=("■");

	if(handbook[1][3].in==unknown)
		sence8=("?");
	else if(handbook[1][3].in==blank)
		sence8=("");
	else sence8=("■");

	if(handbook[2][0].in==unknown)
		sence9=("?");
	else if(handbook[2][0].in==blank)
		sence9=("");
	else sence9=("■");

	if(handbook[2][1].in==unknown)
		sence10=("?");
	else if(handbook[2][1].in==blank)
		sence10=("");
	else sence10=("■");

	if(handbook[2][2].in==unknown)
		sence11=("?");
	else if(handbook[2][2].in==blank)
		sence11=("");
	else sence11=("■");

	if(handbook[2][3].in==unknown)
		sence12=("?");
	else if(handbook[2][3].in==blank)
		sence12=("");
	else sence12=("■");

	if(handbook[3][0].in==unknown)
		sence13=("?");
	else if(handbook[3][0].in==blank)
		sence13=("");
	else sence13=("■");

	if(handbook[3][1].in==unknown)
		sence14=("?");
	else if(handbook[3][1].in==blank)
		sence14=("");
	else sence14=("■");

	if(handbook[3][2].in==unknown)
		sence15=("?");
	else if(handbook[3][2].in==blank)
		sence15=("");
	else sence15=("■");

	if(handbook[3][3].in==unknown)
		sence16=("?");
	else if(handbook[3][3].in==blank)
		sence16=("");
	else sence16=("■");

	Grid1->SetWindowText(sence1);Grid1->LineScroll(Grid1->GetLineCount());
	Grid2->SetWindowText(sence2);Grid2->LineScroll(Grid2->GetLineCount());
	Grid3->SetWindowText(sence3);Grid3->LineScroll(Grid3->GetLineCount());
	Grid4->SetWindowText(sence4);Grid4->LineScroll(Grid4->GetLineCount());
	Grid5->SetWindowText(sence5);Grid5->LineScroll(Grid5->GetLineCount());
	Grid6->SetWindowText(sence6);Grid6->LineScroll(Grid6->GetLineCount());
	Grid7->SetWindowText(sence7);Grid7->LineScroll(Grid7->GetLineCount());
	Grid8->SetWindowText(sence8);Grid8->LineScroll(Grid8->GetLineCount());
	Grid9->SetWindowText(sence9);Grid9->LineScroll(Grid9->GetLineCount());
	Grid10->SetWindowText(sence10);Grid10->LineScroll(Grid10->GetLineCount());
	Grid11->SetWindowText(sence11);Grid11->LineScroll(Grid11->GetLineCount());
	Grid12->SetWindowText(sence12);Grid12->LineScroll(Grid12->GetLineCount());
	Grid13->SetWindowText(sence13);Grid13->LineScroll(Grid13->GetLineCount());
	Grid14->SetWindowText(sence14);Grid14->LineScroll(Grid14->GetLineCount());
	Grid15->SetWindowText(sence15);Grid15->LineScroll(Grid15->GetLineCount());
	Grid16->SetWindowText(sence16);Grid16->LineScroll(Grid16->GetLineCount());

//	CDialog* dlg=(CDialog*)AfxGetApp()->m_pMainWnd;
//	dlg->RedrawWindow();
	
}

void CVwumpusDlg::ShowGain(int score)
{
	CEdit*Result=(CEdit*)GetDlgItem(IDC_HEROGAIN);
	CString gain;
	gain.Format("%d",score);
	Result->SetWindowText(gain);
	Result->LineScroll(Result->GetLineCount());
	CDialog* dlg=(CDialog*)AfxGetApp()->m_pMainWnd;
	dlg->UpdateWindow();
}

void CVwumpusDlg::ShowHeroInfo(CString Info)
{
	
	CEdit*HInfo=(CEdit*)GetDlgItem(IDC_HEROINF);
	HInfo->SetWindowText(Info);
	HInfo->LineScroll(HInfo->GetLineCount());
//	CDialog* dlg=(CDialog*)AfxGetApp()->m_pMainWnd;
//	dlg->RedrawWindow();
	
}

void CVwumpusDlg::OnGame() 
{
	m_nOnceAgain.EnableWindow(FALSE);
	m_nRandMap.EnableWindow(FALSE);
	ShowState();
	wait();
	while(hero.alive&&!hero.success)
	{
		OnButton3();
		wait();
	}
	
	m_nRandMap.EnableWindow(TRUE);
	m_nGame.EnableWindow(FALSE);
	m_nNext.EnableWindow(FALSE);
	m_nOnceAgain.EnableWindow(TRUE);
}

void CVwumpusDlg::OnOnceagain() 
{
	// TODO: Add your control notification handler code here
	m_nOnceAgain.EnableWindow(FALSE);
	hero.Init();
	HeroInfo="欢迎来到巫魔世界!\r\n";
	OnShow();
	
	
}

void CVwumpusDlg::ShowState()
{
	ShowMap(hero.map);
	ShowDanger(hero.handbook);
	ShowSence(hero.handbook);
	ShowGain(hero.score);
	ShowHeroInfo(HeroInfo);
}

void CVwumpusDlg::OnButton3() 
{
	// TODO: Add your control notification handler code here
	
	
	if(hero.alive&&!hero.success)
	{
		
		
		hero.feel();
		if(hero.gotgold&&hero.firstgetgold)
		{
			AfxMessageBox("英雄捡到金子!");	
			hero.firstgetgold=false;
		}
		if(!hero.wumpusalive&&hero.firstshootwumpus)
		{
			AfxMessageBox("耶,巫魔挂掉了!");
			hero.firstshootwumpus=false;
		}
		
		
		if((hero.knownwupos&&hero.wumpusalive&&hero.arrow))//||(hero.arrow&&hero.noway&&(hero.x==hero.wumpos.x||hero.y==hero.wumpos.y))||
		//	(hero.arrow&&hero.stepcount>=16&&hero.wumpusalive&&(hero.x==hero.wumpos.x||hero.y==hero.wumpos.y))
			hero.shoot();
		if(hero.noway)
		{
			hero.turnback();
			hero.noway=false;
		}
	
		hero.handbook[hero.x][hero.y].in=blank;
		if(hero.alive&&!hero.success)
		{
			hero.stepforward();
			if(hero.map.maze[hero.x][hero.y].sthin==blank)
				hero.map.maze[hero.x][hero.y].sthin=him;
			
		}
	}
	else
	{
		if(!hero.alive)
			AfxMessageBox("真可惜,我们的小英雄不小心挂了!");
		if(hero.success)
			AfxMessageBox("啊哈,我们的小英雄凯旋归来了!");
		m_nOnceAgain.EnableWindow(TRUE);
		m_nNext.EnableWindow(FALSE);
	}
	ShowState();
	
}

⌨️ 快捷键说明

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