版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
QT版連連看制作的試驗(yàn)報(bào)告 第第1頁(yè)共23頁(yè)一.玩耍概述一.玩耍概述玩?!斑B連看”顧名思義就是找出相關(guān)聯(lián)的東西,這個(gè)連連看在網(wǎng)上根本是用在小玩耍中,就是找出一樣的兩樣?xùn)|西,在肯定的規(guī)章之內(nèi)可以做為“連連看”的進(jìn)展經(jīng)受了從桌面玩耍、在線玩耍、社交玩耍三個(gè)過(guò)程。玩?!斑B連看”是源自臺(tái)灣的桌面小玩耍,自從流入大陸以來(lái)風(fēng)行一時(shí),也吸引眾多程序員開(kāi)發(fā)出多種版本的 “連連看”。這其中,顧方編寫的“阿達(dá)連連看”以其精良的制作廣受好評(píng),這也成為顧方 “阿達(dá)系列軟件”的核心產(chǎn)品。并于2004年,取得了國(guó)家版權(quán)局的計(jì)算機(jī)軟件著作權(quán)登記證書。Flash應(yīng)用的流行,網(wǎng)上消滅了多種在線Flash版本“連連看”。如“”,“”“”以華美界面吸引了一大批的女性玩家。2008年,隨著社交網(wǎng)絡(luò)的普及和開(kāi)放平臺(tái)的興起, “連連看”被引入了1.2社交網(wǎng)絡(luò)?!斑B連看”與個(gè)人空間相結(jié)合,被快速的傳播,成為一款熱門的社交玩耍,其中以開(kāi)發(fā)者JoneveyManyou開(kāi)放平臺(tái)上推出的“寵物連連看”1.2如下所述:玩耍運(yùn)行界面簡(jiǎn)潔美觀,操作簡(jiǎn)潔,運(yùn)行穩(wěn)定;鍵、消行時(shí)的聲音,音量由玩家操作掌握;設(shè)計(jì)不同的玩耍難度,當(dāng)玩家到達(dá)肯定的積分,可以進(jìn)入相關(guān)難度的等級(jí);功能。二.需求分析二.需求分析2.1.1C++C/C++的哲學(xué)就不一樣了,同一份程序代碼,只要在該平臺(tái)重Compile成該平臺(tái)的執(zhí)行檔,就能在該平臺(tái)執(zhí)行,假設(shè)文字模式下的程序,GUIGUI的GUICompile,由于各平臺(tái)都有專屬的LibraryC/C++優(yōu)勢(shì)就是執(zhí)行速度快,假設(shè)能GUILibrary的問(wèn)題,則跨平臺(tái)即可解決。MicrosoftVisualC++,MFC用的是完整的ANSIC++MFCMFCVisual搭配.NETANSI.NETC++/CLI,信任這點(diǎn)很多人就有意見(jiàn)了,不過(guò).NET除了GUILibraryLibrary設(shè)計(jì)的好不好才行,LinuxGUIWindows平臺(tái),Borland的C++BuilderDelphiVCLLibrary,MicrosoftVisualC++可以用MFC和.NETFrameworkBorland的C++Builder,它使用ANSIC++VCLC++Builder當(dāng)時(shí)為了縮短上市時(shí)間,并沒(méi)有設(shè)LibraryDelphiLibraryC++Builder在CompileDelphiCompiler將VCLcompile成objectfileLinkerobjectfilelink起來(lái),由于這都是IDE在做,對(duì)程序MicrosoftVisualC++,MFC用的是完整的ANSIC++MFCMFCVisual搭配.NETANSI.NETC++/CLI,信任這點(diǎn)很多人就有意見(jiàn)了,不過(guò).NETFrameworkFramework由于設(shè)計(jì)的不錯(cuò),所以寫出來(lái)的程序相當(dāng)精簡(jiǎn)秀麗,感覺(jué)和C++Builder差不多,不過(guò)無(wú)論是C++Builder或VisualC++開(kāi)發(fā)的2.1.2QT〔1〕QTQt是一個(gè)多平臺(tái)的C++圖形用戶界面應(yīng)用程序框架。它供給應(yīng)應(yīng)用程序開(kāi)發(fā)者建立藝術(shù)級(jí)的圖形用戶界面所需的所用功能。Qt擴(kuò)展,并且允許真正地組件編程。1996Qt種成功的應(yīng)用程序的根底。Qt也是流行的LinuxKDE的根底,KDE是全部主要的Linux發(fā)行版的一個(gè)標(biāo)準(zhǔn)組件。Qt的特點(diǎn)有:可移植性、易用性、執(zhí)行速度快等特點(diǎn)。QTQTXML支持。大量的開(kāi)發(fā)文檔支持2D/3D圖形渲染,支持OpenGL優(yōu)良的跨平臺(tái)特性,QtMicrosoftWindowsSCO,AIX,OS390,QNX等等。面對(duì)對(duì)象,QtQtQtsignals/slots的安全類型來(lái)替代callback,這使得各個(gè)元件之間的協(xié)同工作變得格外簡(jiǎn)潔。豐富的API,Qt250個(gè)以上的C++collections,serialization,file,I/Odevice,directorymanagementdate/time2.2玩耍功能需求本次設(shè)計(jì)是在傳統(tǒng)的連連看上設(shè)計(jì)實(shí)現(xiàn)對(duì)戰(zhàn)的連連看,玩家通過(guò)到達(dá)肯定的玩性。QTQT版連連看制作的試驗(yàn)報(bào)告423頁(yè)最終玩耍效果如下:最終玩耍效果如下:功能如下:性,玩耍的背景取自網(wǎng)上中的圖片,表達(dá)了玩耍的挑戰(zhàn)性。的時(shí)候,玩耍會(huì)進(jìn)入下一關(guān),并有障礙了。完畢。 QT版連連看制作的試驗(yàn)報(bào)告 第第1023頁(yè)三.玩??傮w設(shè)計(jì)三.玩??傮w設(shè)計(jì)3.1總體設(shè)計(jì)主菜單開(kāi)頭玩耍挑戰(zhàn)模式練習(xí)模式主菜單開(kāi)頭玩耍挑戰(zhàn)模式練習(xí)模式極速英雄榜關(guān)于連連看退出玩耍相應(yīng)時(shí)間內(nèi)過(guò)關(guān)1〔芝麻開(kāi)門〕相應(yīng)時(shí)間內(nèi)過(guò)關(guān)查看英雄者名單關(guān)于連連看的介紹2〔四分五裂〕相應(yīng)時(shí)間內(nèi)過(guò)關(guān)3〔心連你我〕相應(yīng)時(shí)間內(nèi)過(guò)關(guān)4〔審判十字〕相應(yīng)時(shí)間內(nèi)過(guò)關(guān)5〔返璞歸真〕相應(yīng)時(shí)間內(nèi)過(guò)關(guān)通關(guān)玩耍核心模塊的設(shè)計(jì)連連看所要求的是:兩個(gè)目標(biāo)之間連接線的折點(diǎn)不超過(guò)兩個(gè)〔xy〕〔1〕〔2〕〔3〕兩個(gè)折點(diǎn)?!瞲是和其中一個(gè)目標(biāo)點(diǎn)是一樣的,也就是說(shuō),折點(diǎn)必定在兩個(gè)目標(biāo)點(diǎn)所在的xy所以設(shè)計(jì)思路就是:假設(shè)目標(biāo)點(diǎn)p1,p2,假設(shè)有兩個(gè)折點(diǎn)分別為z1,z2 要進(jìn)展的是:p1,p2直線連線,則連接成立p1,p2x,y方向四條直線〔可能某兩條直線會(huì)重合〕上z1,z2,p1到z1/z1z2/z2p2是否都能直線相連,是則連接成立。連連看消去算法實(shí)現(xiàn)在檢驗(yàn)兩張圖片能否消掉的時(shí)候,我們要讓兩張圖片同時(shí)滿足兩個(gè)條我們可以知道,需要三個(gè)檢測(cè),這三個(gè)檢測(cè)分別檢測(cè)一條直路經(jīng)。這樣就會(huì)有三條路經(jīng)。假設(shè)這三條路經(jīng)上都是空按鈕,那么就剛好是三種直線〔兩個(gè)轉(zhuǎn)彎點(diǎn)〕把兩個(gè)按鈕連接起來(lái)了)相鄰假設(shè)不相鄰的先在第一個(gè)按鈕的同行找一個(gè)空按鈕。1).找到后看其次個(gè)按鈕橫向到這個(gè)空按鈕所在的列是否有按鈕。2).沒(méi)有的話再看第一個(gè)按鈕到與它同行的那個(gè)空按鈕之間是否有按鈕。3).沒(méi)有的話,再?gòu)呐c第一個(gè)按鈕同行的那個(gè)空按鈕豎向到與其次個(gè)按鈕的同行看是否有按鈕。沒(méi)有的話路經(jīng)就通了,可以消了.2失敗后,再在第一個(gè)按鈕的同列找一個(gè)空按鈕。1).找到后看其次個(gè)按鈕豎向到這個(gè)空按鈕所在的行是否有按鈕2).沒(méi)有的話,再看沒(méi)有的話路經(jīng)就通了,可以消了。假設(shè)以上三步都失敗,說(shuō)明這兩個(gè)按鈕不行以消去。四.具體方案四.具體方案圖形的產(chǎn)生DrawArea::loadPixmap來(lái)實(shí)現(xiàn)。函數(shù)如下設(shè)計(jì):voidDrawArea::loadPixmap{background.load(“:/background/background.png“);background=background.scaled(size);QPixmappix(“:/pattern/pattern.png“);intnum=pix.height/PIX_SIZE;for(inti=1;i<num;++i){qrealy=PIX_SIZE*i;QPixmapp=pix.copy(0,y,PIX_SIZE,PIX_SIZE);pixmap.push_back(p);}}判段消掉圖片假設(shè)兩個(gè)圖片一樣,我們進(jìn)展消塊,并進(jìn)展加分操作。消塊操作如下:if(hitTimer)killTimer(hitTimer);hitTimer=startTimer(INTERVAL_HIT_TIMER);++multiHit;emithit(multiHit);lineTimer=startTimer(INTERVAL_LINE_TIMER);僵局考慮推斷是否已經(jīng)進(jìn)入死局,死局條件:hintAhintB,hint函數(shù)利用。設(shè)計(jì)代碼如下:boolDrawArea::isDead{inti,j,x,y;if(!pairLeft)returntrue;for(i=0;i<xMax;++i){for(j=0;j<yMax;++j){if(board[i][j]){for(x=i;x<xMax;++x){if(x==i) elsey=0;for(;y<yMax;++y){if(board[x][y]==board[i][j]){0hintA.x=i;hintA.y=j;hintB.x=x;hintB.y=y;returnfalse;}}}}}}}returntrue;} 鍵盤大事響應(yīng)GameWindow::keyPressEvent(QKeyEvent*event)來(lái)響應(yīng)相應(yīng)的鍵盤按鍵大事。五.玩耍的測(cè)試五.玩耍的測(cè)試選項(xiàng)按鈕的功能測(cè)試按鍵大事的功能測(cè)試兩次點(diǎn)擊一樣圖片,假設(shè)滿足算法,圖片消逝,則結(jié)果正常;擋的狀況下可變色,結(jié)果正常;圖片消逝測(cè)試當(dāng)點(diǎn)擊兩張一樣圖片:兩站圖片同時(shí)消逝,結(jié)果正常;10分。聲音和顯示測(cè)試進(jìn)入玩耍時(shí):背景音樂(lè)正常播放,圖片消逝時(shí),有背景音樂(lè)播放;區(qū)域越來(lái)越大,結(jié)果正常;細(xì)節(jié)方面可能需要改進(jìn),玩耍在很多方面還需要進(jìn)一步完善。細(xì)節(jié)方面可能需要改進(jìn),玩耍在很多方面還需要進(jìn)一步完善。六.小結(jié)六.小結(jié)翻閱書籍和在網(wǎng)上查閱資料,漸漸找到了一些感覺(jué)。Qt類庫(kù)中封裝的東西太多,有些函數(shù)它底層的具體實(shí)現(xiàn)可能還沒(méi)有真正的理解,所以,這或許就是本次玩耍設(shè)計(jì)的缺乏之處。選題、構(gòu)思、設(shè)計(jì)步驟等。并實(shí)現(xiàn)一些可演示的玩耍軟件,其中有很多應(yīng)用了學(xué)的收獲有:1、學(xué)到了很多學(xué)問(wèn),并且對(duì)老學(xué)問(wèn)進(jìn)展了回憶。經(jīng)過(guò)長(zhǎng)時(shí)間的學(xué)Qt編程、通過(guò)不斷上機(jī)試驗(yàn),調(diào)試程序,總結(jié)閱歷,從對(duì)Qt類庫(kù)中封裝的東西太多,有些函數(shù)它底層的具體實(shí)現(xiàn)可能還沒(méi)有真正的理解,所以,這或許就是本次玩耍設(shè)計(jì)的缺乏之處。七.七.源碼〔局部代碼:/*drawarea.cpp*/#include“drawarea.h“#include<iostream>#include<QMouseEvent>#include<QTimerEvent>#include<QPainter>#include<QLabel>#include<QDir>#include<QFileInfo>#include<stdio.h>#include<assert.h>constintINTERVAL_LINE_TIMER=200;constintINTERVAL_HIT_TIMER=2000;constintPIX_SIZE =46;constintAREA_WIDTH=Y_MAX*PIX_SIZE;constintAREA_HEIGHT=X_MAX*PIX_SIZE;DrawArea::DrawArea(QWidget*parent):QWidget(parent){loadPixmap;drawArea=newQLabel(this);drawArea->setGeometry(0,0,AREA_WIDTH,AREA_HEIGHT);drawArea->setPixmap(background);isHintUsed=false;}QSizeDrawArea::sizeconst{returnQSize(AREA_WIDTH,AREA_HEIGHT);}QSizeDrawArea::sizeHintconst{returnsize;}/**/voidDrawArea::initLevel(constMap&mapData){lastX=mapData.xMax;lastY=mapData.yMax;lineTimer=0;hitTimer=0;multiHit=0;pairLeft=0;xMax=mapData.xMax;yMax=mapData.yMax;for(inti=0;i<xMax;++i)for(intj=0;j<yMax;++j){board[i][j]=mapData.map[i][j];if(board[i][j])++pairLeft;}if(pairLeft%2!=0){emiterrorNotify(tr(“地圖數(shù)據(jù)錯(cuò)誤,地圖存在不成對(duì)的塊數(shù)“));return;}if(pairLeft==0){emiterrorNotify(tr(“地圖數(shù)據(jù)為空“));return;}pairLeft=pairLeft/2;disorder(mapData.disorderCount);//剛開(kāi)局就推斷死局,一個(gè)是初始化上帝之手,//再一個(gè)最主要緣由是為hintif(isDead){godTouch=true;emitgodTouchOn;}elsegodTouch=false;isLevelOver=false;drawBoard;}//[Test]從文件加載地圖及相關(guān)配置信息。voidDrawArea::loadMapFromFile(stringfileName){intnDisorder;FILE*mapFile;mapFile=fopen(fileName.c_str,“r“);if(!mapFile)exit(-1);if(fscanf(mapFile,“%d%d“,&nDisorder,&pairLeft)==EOF){emiterrorNotify(tr(“Test:地圖數(shù)據(jù)加載失敗“));return;}for(inti=0;i<xMax;++i)for(intj=0;j<yMax;++j){if(fscanf(mapFile,“%d“,&board[i][j])==EOF){emiterrorNotify(tr(“Test:地圖數(shù)據(jù)無(wú)法成功加載“));return;}}fclose(mapFile);disorder(nDisorder);}//nDisordervoidDrawArea::disorder(intnDisorder){srand(clock);//根本實(shí)現(xiàn):將非零數(shù)據(jù)參加到一個(gè)足夠長(zhǎng)的數(shù)組中,隨機(jī)產(chǎn)生兩個(gè)//坐標(biāo)進(jìn)展交換intpos[xMax*yMax][2];intnBlock=0;for(inti=0;i<xMax;++i)for(intj=0;j<yMax;++j){if(board[i][j]){pos[nBlock][0]=i;pos[nBlock][1]=j;++nBlock;}}for(inti=nDisorder;i;--i){intpos1=rand%nBlock;generatePos2:intpos2=rand%nBlock;if(pos1==pos2)gotogeneratePos2;intx1=pos[pos1][0];inty1=pos[pos1][1];intx2=pos[pos2][0];inty2=pos[pos2][1];std::swap(board[x1][y1],board[x2][y2]);}drawBoard;}/*加載圖塊圖片資源*/voidDrawArea::loadPixmap{background.load(“:/background/background.png“);background=background.scaled(size);QPixmappix(“:/pattern/pattern.png“);intnum=pix.height/PIX_SIZE;for(inti=1;i<num;++i){qrealy=PIX_SIZE*i;QPixmapp=pix.copy(0,y,PIX_SIZE,PIX_SIZE);pixmap.push_back(p);}}//給玩家生成一對(duì)提示,并將其高亮顯示voidDrawArea::hint{isHintUsed=true;lastX=hintA.x;lastY=hintB.y;drawBoard;}/*Timerevents.*/voidDrawArea::timerEvent(QTimerEvent*event){if(event->timerId==lineTimer){killTimer(lineTimer);lineTimer=0;drawBoard;}if(event->timerId==hitTimer){multiHit=0;killTimer(hitTimer);hitTimer=0;drawBoard;}}/*承受鼠標(biāo)按下的消息并將其發(fā)生的相對(duì)屏幕坐標(biāo)轉(zhuǎn)換成數(shù)組坐標(biāo)*傳入clickPos*/voidDrawArea::mousePressEvent(QMouseEvent*event){inty=(event->x-drawArea->x)/PIX_SIZE;intx=(event->y-drawArea->y)/PIX_SIZE;if(!isBlank(x,y)){emitselect;isHintUsed=false;drawEmbrace(x,y);clickPos(x,y);}}/*繪制面板,當(dāng)回合未完畢時(shí),繪制面板上全部圖塊的內(nèi)容。*假設(shè)連擊數(shù)不少于兩次,則在屏幕正中心顯示“xNHit“的字樣*/voidDrawArea::drawBoard{store=background;QPainterpainter(&store);if(!isLevelOver){painter.setCompositionMode(QPainter::CompositionMode_SourceOver);for(inti=0;i<xMax;++i)for(intj=0;j<yMax;++j){painter.save;painter.translate(j*PIX_SIZE,i*PIX_SIZE);if(!isBlank(i,j)&&board[i][j]<pixmap.size)painter.drawPixmap(0,0,PIX_SIZE,PIX_SIZE,pixmap[board[i][j]-1]);painter.restore;}if(multiHit>1){QFontfont;QPenpen(Qt::SolidLine);pen.setColor(QColor(255,255,255,220));font.setFamily(“ComicSansMS“);font.setPixelSize(30);font.setBold(true);painter.setPen(pen);painter.setFont(font);painter.drawText(QPointF(0,AREA_HEIGHT-15),tr(“x%1 連擊!“).arg(multiHit));}}painter.end;drawArea->setPixmap(store);if(isHintUsed){drawEmbrace(hintA.x,hintA.y);drawEmbrace(hintB.x,hintB.y);}elsedrawEmbrace(lastX,lastY);}/**/voidDrawArea::drawEmbrace(constint&x,constint&y){if(isValid(x,y)&&board[x][y]){QPainterpainter(&store);painter.setCompositionMode(QPainter::RasterOp_SourceAndDestination);QPenpen;pen.setWidth(5);pen.setColor(Qt::blue);painter.setPen(pen);painter.translate(y*PIX_SIZE,x*PIX_SIZE);painter.drawRect(0,0,PIX_SIZE,PIX_SIZE);painter.end;drawArea->setPixmap(store);}}/**/voidDrawArea::drawRedMark(constint&x,constint&y){QPainterpainter(&store);QPenpen(Qt::white);pen.setWidth(5);painter.setPen(pen);painter.translate(y*PIX_SIZE,x*PIX_SIZE);painter.drawLine(0,0,PIX_SIZE,PIX_SIZE);painter.drawLine(0,PIX_SIZE,PIX_SIZE,0);painter.end;drawArea->setPixmap(store);}/**/voidDrawArea::drawLine(constint&aX,constint&aY,constint&bX,constint&bY){QPainterpainter(&store);intx1=aY*PIX_SIZE+PIX_SIZE/2;inty1=aX*PIX_SIZE+PIX_SIZE/2;intx2=bY*PIX_SIZE+PIX_SIZE/2;inty2=bX*PIX_SIZE+PIX_SIZE/2;QPenpen(Qt::blue);pen.setStyle(Qt::SolidLine);pen.setWidth(5);painter.setPen(pen);painter.drawLine(x1,y1,x2,y2);painter.end;drawArea->setPixmap(store);}voidDrawArea::autoDestroy{lastX=hintA.x;lastY=hintA.y;clickPos(hintB.x,hintB.y);}/*****************************************連連看規(guī)律實(shí)現(xiàn)相關(guān)函數(shù)****************************************//*推斷是否已經(jīng)進(jìn)入死局,死局條件:在回合尚未完畢的狀況下遍歷面板,無(wú)法找到一對(duì)可銷圖塊則判定為死局。假設(shè)找到一對(duì)可銷圖塊,則將其記錄為hintAhintB,hint函數(shù)利用。*/boolDrawArea::isDead{inti,j,x,y;if(!pairLeft)returntrue;for(i=0;i<xMax;++i){for(j=0;j<yMax;++j){if(board[i][j]){for(x=i;x<xMax;++x){if(x==i) elsey=0;for(;y<yMax;++y){if(board[x][y]==board[i][j]){0hintA.x=i;hintA.y=j;hintB.x=x;hintB.y=y;returnfalse;}}}}}}}returntrue;}/*在(x,y)位置發(fā)生了點(diǎn)擊,假設(shè)上次點(diǎn)擊的點(diǎn)花色與之一樣且位置不同,對(duì)于上帝模式,直接銷塊。否則,嘗試推斷是否可連接,假設(shè)可連接則進(jìn)展連線,并隨后進(jìn)展死局推斷,如進(jìn)入死局則開(kāi)啟上帝模式否則將這個(gè)點(diǎn)記為上次點(diǎn)擊的點(diǎn)。每次成功銷塊之后,馬上增加連擊計(jì)數(shù)并啟動(dòng)一個(gè)連擊定時(shí)器,假設(shè)連擊定時(shí)器過(guò)期,則連擊計(jì)數(shù)清零。*/voidDrawArea::clickPos(intx,inty){assert(isValid(x,y));assert(!isBlank(x,y));vector<Pos>posVec;intnPos=0;Pospos1,pos2;if(lastX==x&&lastY==y)return;if(!isValid(lastX,lastY)||!isSame(x,y,lastX,lastY)||//isSamemustbeplacedafter“isValid“isBlank(lastX,lastY)){lastX=x;lastY=y;drawBoard;return;}if(godTouch){drawRedMark(x,y);drawRedMark(lastX,lastY);gotoDestroy_Blocks;}if(isPosLinkable(x,y,lastX,lastY,&nPos,&pos1,&pos2)){Posa(x,y);Posb(lastX,lastY);posVec.push_back(a);if(nPos>=1){posVec.push_back(pos1);if(nPos==2)posVec.push_back(pos2);}posVec.push_back(b);for(unsignedinti=0;i<posVec.size-1;++i){drawLine(posVec[i].x,posVec[i].y,posVec[i+1].x,posVec[i+1].y);}gotoDestroy_Blocks;}else{lastX=x;lastY=y;drawBoard;emitsameYetUnlinkable;return;}Destroy_Blocks://銷塊操作if(hitTimer)killTimer(hitTimer);hitTimer=startTimer(INTERVAL_HIT_TIMER);++multiHit;emithit(multiHit);lineTimer=startTimer(INTERVAL_LINE_TIMER);//連線操作board[x][y]=0;board[lastX][lastY]=0;--pairLeft;if(!pairLeft){isLevelOver=true;emitlevelClear;puts(“GameOver“);//GameOver}else{if(isDead){godTouch=true;emitgodTouchOn;}elsegodTouch=false;}}/**/inlineboolDrawArea::isBlank(constint&x,constint&y){assert(isValid(x,y));returnboard[x][y]==0;}/*Checkwhetherthepositionisvalid*/inlineboolDrawArea::isValid(constint&x,constint&y){if(x>=xMax||y>=yMax)returnfalse;returntrue;}/*Checkwhetherthetwopointsarethesame*/inlineboolDrawArea::isSame(constint&x1,constint&y1,constint&x2,constint&y2){assert(isValid(x1,y1));assert(isValid(x2,y2));returnboard[x1][y1]==board[x2][y2];}/**/boolDrawArea::isPosLinkable(intx1_,inty1_,intx2_,inty2_,int*nPos,Pos*pos1,Pos*pos2){assert(isValid(x1_,y1_));assert(isValid(x2_,y2_));boolposFlag=false;//傳入?yún)?shù)中是否有折點(diǎn)if(nPos){posFlag=true;if(!(pos1&&pos2))returnfalse;}intx1=x1_;intx2=x2_;inty1=y1_;inty2=y2_;if(!isSame(x1,y1,x2,y2))returnfalse;//First,checkwhethertheycanbedirectlylinkedif(isLineLinkable(x1,y1,x2,y2)){if(posFlag)*nPos=0;returntrue;}//Second,checkwhethertheycanbelinkedwithoneturningif(findinteractPoint(x1,y1,x2,y2)){if(posFlag){*nPos=1;pos1->x=x2;pos1->y=y2;}returntrue;}//Third,checkx-directpointthatcanbelinkedwithoneturningfor(inti=0;i<xMax;++i){if(isBlank(i,y1)&&i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度場(chǎng)營(yíng)銷分公司智慧城市項(xiàng)目合作協(xié)議3篇
- 二零二五版商業(yè)街區(qū)場(chǎng)地租賃合作協(xié)議書6篇
- 2025年度高新技術(shù)產(chǎn)業(yè)常年法律顧問(wèn)聘用協(xié)議3篇
- 二零二五年度企業(yè)稅收籌劃與稅收籌劃實(shí)施合同3篇
- 二零二五年度出口退稅證明開(kāi)具及國(guó)際金融服務(wù)合同3篇
- 二零二五年度港口碼頭租賃及港口貨物裝卸、倉(cāng)儲(chǔ)及配送服務(wù)協(xié)議8篇
- 二零二五年度土地承包經(jīng)營(yíng)權(quán)糾紛調(diào)解合同-@-2
- 2025草原禁牧與水資源保護(hù)管理協(xié)議合同3篇
- 2025年度個(gè)人個(gè)人借款合同信用評(píng)估標(biāo)準(zhǔn)3篇
- 二零二五食用油產(chǎn)品包裝設(shè)計(jì)與印刷合同
- 中考模擬考試化學(xué)試卷與答案解析(共三套)
- 新人教版五年級(jí)小學(xué)數(shù)學(xué)全冊(cè)奧數(shù)(含答案)
- 風(fēng)電場(chǎng)升壓站培訓(xùn)課件
- 收納盒注塑模具設(shè)計(jì)(論文-任務(wù)書-開(kāi)題報(bào)告-圖紙)
- 博弈論全套課件
- CONSORT2010流程圖(FlowDiagram)【模板】文檔
- 腦電信號(hào)處理與特征提取
- 高中數(shù)學(xué)知識(shí)點(diǎn)全總結(jié)(電子版)
- GB/T 10322.7-2004鐵礦石粒度分布的篩分測(cè)定
- 2023新譯林版新教材高中英語(yǔ)必修一重點(diǎn)詞組歸納總結(jié)
- 蘇教版四年級(jí)數(shù)學(xué)下冊(cè)第3單元第2課時(shí)“常見(jiàn)的數(shù)量關(guān)系”教案
評(píng)論
0/150
提交評(píng)論