第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

關(guān)于走出迷宮案例的疑問

老師你好,這個(gè)案例我最終是做出你演示的效果了,但是實(shí)現(xiàn)的方法不太好,其中遇到了一些問題。


1、我最終的程序沒有在MyMazer類里面寫start()函數(shù),原因是我發(fā)現(xiàn)這里面我需要調(diào)用到另一個(gè)類中的檢查邊界函數(shù),我不明白這要怎么實(shí)現(xiàn);

2、我在 ?源.c 這個(gè)文件里面除了寫了main()函數(shù),還寫了檢查邊界函數(shù),之所以沒有把這個(gè)函數(shù)放在迷宮類里面,是因?yàn)槲以谶@個(gè)函數(shù)中需要使用到MyMazer類中的成員(具體我用到的是人的位置和方向,我是不停的檢測(cè)當(dāng)前所處位置的邊界情況)

因?yàn)檫@兩點(diǎn),程序比較亂,感覺完全沒有發(fā)揮出c++中類的優(yōu)勢(shì)。。我自己總結(jié)了一下,造成這兩點(diǎn)的主要原因在于:我在寫一個(gè)類的成員函數(shù)的時(shí)候,經(jīng)常遇到需要調(diào)用另一個(gè)類的成員參數(shù)的情況,我百度了一下,沒有發(fā)現(xiàn)什么好的方法,仔細(xì)想想,這樣的做法確實(shí)不太合理。希望老師或者其他同學(xué)可以指導(dǎo)一下,謝謝!


PS:老師能不能給出你的程序,我想看看您的start() 和檢查邊界函數(shù)是怎么實(shí)現(xiàn)的。

正在回答

1 回答

#include?<iostream>
#include?<stdio.h>
#include?"MyMazer.h"
#include?"MyMazeMap.h"
#include?<Windows.h>
using?namespace?std;
int?checkEdge(MyMazer?*p,?MyMazeMap?*q,?char?dir,?int?x,?int?y);//迷宮邊界檢查函數(shù)

int?main()
{
	int?WALL?=?1;
	int?ROAD?=?0;
	int?map[8][9]?=?{
		{?WALL,?WALL,?WALL,?WALL,?WALL,?WALL,?WALL,?WALL,?WALL},
		{?WALL,?WALL,?ROAD,?WALL,?ROAD,?ROAD,?WALL,?ROAD,?WALL},?
		{?WALL,?WALL,?ROAD,?ROAD,?ROAD,?WALL,?ROAD,?ROAD,?WALL},
		{?WALL,?WALL,?ROAD,?WALL,?ROAD,?WALL,?ROAD,?WALL,?WALL},
		{?WALL,?WALL,?ROAD,?WALL,?ROAD,?ROAD,?ROAD,?WALL,?WALL},
		{?WALL,?WALL,?ROAD,?WALL,?ROAD,?WALL,?ROAD,?ROAD,?WALL},
		{?WALL,?ROAD,?ROAD,?WALL,?ROAD,?WALL,?WALL,?ROAD,?WALL},
		{?WALL,?ROAD,?WALL,?WALL,?WALL,?WALL,?WALL,?ROAD,?WALL}
	};
	MyMazeMap?maze;
	maze.setMazeMap(&map[0][0],?8,?9);
	maze.setMazeWall("*");
	maze.drawMap();
	MyMazer?mazer;
	mazer.setPersonPosition(7,?1);
	mazer.setPersonChar('T');

	mazer.gotoxy(mazer.getX(),?mazer.getY());
	mazer.printPer();
	Sleep(1000);
	do
	{
		Sleep(200);
		if?(checkEdge(&mazer,?&maze,?'L',?mazer.getX(),?mazer.getY())?==?0)
		{
			mazer.changeDirection(0);//左邊是0,左轉(zhuǎn)
			mazer.gotoxy(mazer.getX(),?mazer.getY());
			cout?<<?"?";
			mazer.goOneStep();
			mazer.gotoxy(mazer.getX(),?mazer.getY());
			mazer.printPer();
			continue;
		}
		else
		{
			if?(checkEdge(&mazer,?&maze,?'A',?mazer.getX(),?mazer.getY())?==?0)
			{
				mazer.gotoxy(mazer.getX(),?mazer.getY());
				cout?<<?"?";
				mazer.goOneStep();
				mazer.gotoxy(mazer.getX(),?mazer.getY());
				mazer.printPer();
				continue;
			}
			else
			{
				mazer.changeDirection(1);
				continue;
			}
		}
	}?while?(mazer.getX()?!=?0?&&?mazer.getY()?!=?0?&&?mazer.getX()?!=?7?&&?mazer.getY()?!=?8);

	mazer.gotoxy(15,?0);
	cout?<<?"O(∩_∩)O"?<<?endl;
	cout?<<?endl?<<?endl?<<?endl?<<?endl?<<?endl;


	system("pause");
	return?0;
}

int?checkEdge(MyMazer?*p,?MyMazeMap?*q,?char?dir,?int?x,?int?y)
{
	int?temp;
	if?(dir?==?'L')
	{
		if?(p->getDir()?==?1)
		{
			temp?=?*(q->getm_pMazeMap()?+?x?*?9?+?y?-?1);
			return?temp;
		}
		else
		{
			if?(p->getDir()?==?2)
			{
				return?*(q->getm_pMazeMap()?+?(x?-?1)?*?9?+?y);
			}
			else
			{
				if?(p->getDir()?==?3)
				{
					return?*(q->getm_pMazeMap()?+?x?*?9?+?y?+?1);
				}
				else
				{
					return?*(q->getm_pMazeMap()?+?(x?+?1)?*?9?+?y);
				}
			}
		}
	}
	else
	{
		if?(p->getDir()?==?1)
		{
			return?*(q->getm_pMazeMap()?+?(x?-?1)?*?9?+?y);
		}
		else
		{
			if?(p->getDir()?==?2)
			{
				return?*(q->getm_pMazeMap()?+?x?*?9?+?y?+?1);
			}
			else
			{
				if?(p->getDir()?==?3)
				{
					return?*(q->getm_pMazeMap()?+?(x?+?1)?*?9?+?y);
				}
				else
				{
					return?*(q->getm_pMazeMap()?+?x?*?9?+?y?-?1);
				}
			}
		}
	}
}


3 回復(fù) 有任何疑惑可以回復(fù)我~

舉報(bào)

0/150
提交
取消
C++遠(yuǎn)征之封裝篇(下)
  • 參與學(xué)習(xí)       70903    人
  • 解答問題       532    個(gè)

封裝--面向?qū)ο笕筇卣髦?,通過案例讓C++所學(xué)知識(shí)融會(huì)貫通

進(jìn)入課程

關(guān)于走出迷宮案例的疑問

我要回答 關(guān)注問題
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)