freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

c語言課程設(shè)計(jì)題目—20xx年下半年-資料下載頁

2025-10-25 22:23本頁面
  

【正文】 exY){}8)傳入該函數(shù)的是精靈實(shí)體以及x,y坐標(biāo)參數(shù)。再通過SetSpritePosition函數(shù)設(shè)置精靈位置,在該函數(shù)里面添加如下代碼:floatfPosX=m_fGridStartX+iIndexX*m_fGridSize。floatfPosY=m_fGridStartY+iIndexY*m_fGridSize。tmpSpriteSetSpritePosition(fPosX,fPosY)。這里定義一個(gè)函數(shù)CreateAllSprite()來創(chuàng)建控制球、方塊精靈、出口精靈和黑洞精靈。然后在函數(shù)內(nèi)部添加代碼創(chuàng)建精靈。原理是通過兩個(gè)for循環(huán)來,判斷m_iGridData的值,如果為0,則不創(chuàng)建,如果為RIGID_BLOCK則創(chuàng)建一個(gè)方塊精靈,為BLACK_HOLE則創(chuàng)建一個(gè)黑洞精靈,為GOLF_EXIT則創(chuàng)建一個(gè)出口精靈。由于我們預(yù)先在地圖中擺放了三個(gè)模板精靈,因此只需要使用CloneSprite函數(shù)即可創(chuàng)建新的精靈。然后再調(diào)用MoveSpriteToBlock函數(shù)將精靈移動(dòng)到指定位置。最后每創(chuàng)建一個(gè)實(shí)現(xiàn)精靈,將它添加到相應(yīng)的精靈向量數(shù)組中。1):voidCreateAllSprite()。2):voidCGameMain::CreateAllSprite(){}3)在定義汗的函數(shù)中添加變量聲明:intiLoopX=0,iLoopY=0。CSprite*tmpSprite。char*szName=NULL。4)實(shí)現(xiàn)兩個(gè)for循環(huán):for(iLoopY=0。iLoopYGRID_COUNT。iLoopY++){for(intiLoopX=0。iLoopXGRID_COUNT。iLoopX++){}}5)在里面的循環(huán)添加判斷代碼:如果是0,則不創(chuàng)建精靈,continue表示跳出本次循環(huán),繼續(xù)下一個(gè)循環(huán)。if(0==m_iGridData[iLoopY][iLoopX])continue。如果是方塊,則創(chuàng)建方塊精靈:if(RIGID_BLOCK==m_iGridData[iLoopY][iLoopX]){szName=CSystem::MakeSpriteName(“RigidBlock“,m_iRigidBlockCount)。tmpSprite=newCSprite(szName)。tmpSpriteCloneSprite(“RigidBlockTemplate“)。MoveSpriteToBlock(tmpSprite,iLoopX,iLoopY)。(tmpSprite)。m_iRigidBlockCount++。}如果是黑洞,則創(chuàng)建黑洞精靈:elseif(BLACK_HOLE==m_iGridData[iLoopY][iLoopX]){szName=CSystem::MakeSpriteName(“BlackHole“,m_iBlackHoleCount)。tmpSprite=newCSprite(szName)。tmpSpriteCloneSprite(“BlackHoleTemplate“)。MoveSpriteToBlock(tmpSprite,iLoopX,iLoopY)。(tmpSprite)。m_iBlackHoleCount++。}如果是出口,則創(chuàng)建出口精靈:elseif(GOLF_EXIT==m_iGridData[iLoopY][iLoopX]){szName=CSystem::MakeSpriteName(“GolfExit“,m_iGolfExitCount)。tmpSprite=newCSprite(szName)。tmpSpriteCloneSprite(“GolfExitTemplate“)。MoveSpriteToBlock(tmpSprite,iLoopX,iLoopY)。(tmpSprite)。m_iGolfExitCount++。}6)將控制球和指示箭頭擺放到初始位置,此時(shí)球靜止,因此指示箭頭可見。在上面的兩個(gè)循環(huán)后面添加下面的代碼:m_pControlBallSetSpriteLinearVelocity(,)。MoveSpriteToBlock(m_pControlBall,m_iControlStartX,m_iControlStartY)。MoveSpriteToBlock(m_pGolfArrow,m_iControlStartX,m_iControlStartY)。m_pGolfArrowSetSpriteVisible(1)。7)最后在GameInit()中調(diào)用此函數(shù):CreateAllSprite()。至此,本實(shí)驗(yàn)結(jié)束。實(shí)驗(yàn)四移動(dòng)球【實(shí)驗(yàn)內(nèi)容】步驟一、響應(yīng)鍵盤按鍵按下消息步驟二、球精靈坐標(biāo)轉(zhuǎn)換為二維格子數(shù)組索引步驟三、判斷移動(dòng)方向,使球獲取速度【實(shí)驗(yàn)思路】首先響應(yīng)系統(tǒng)的按鍵消息函數(shù),然后獲取精靈坐標(biāo),并將其轉(zhuǎn)換為二維格子中的坐標(biāo),判斷其旁邊的格子是否是方塊,如果不是則給球一個(gè)移動(dòng)的速度。【實(shí)驗(yàn)指導(dǎo)】添加我們自定義的鍵盤消息處理函數(shù)OnKeyDown的聲明:voidOnKeyDown(constintiKey,constintiAltPress,constintiShiftPress,constintiCtrlPress)。:voidCGameMain::OnKeyDown(constintiKey,constintiAltPress,constintiShiftPress,constintiCtrlPress){}首先判斷游戲狀態(tài),只有在游戲中已經(jīng)可以移動(dòng)狀態(tài)才響應(yīng)按鍵,在上面函數(shù)中添加下面的代碼:if(2!=m_iGameState||0!=m_iMoveState)return。獲取控制球精靈坐標(biāo)轉(zhuǎn)換到二維格子數(shù)組索引,這里我們需要定義兩個(gè)函數(shù)SpritePosXToIndexX和SpritePosXToIndexY分別處理精靈坐標(biāo)轉(zhuǎn)換為二維格子的X索引和Y索引:1):intSpritePosXToIndexX(constfloatfPosX)。intSpritePosYToIndexY(constfloatfPosY)。2):intCGameMain::SpritePosXToIndexX(constfloatfPosX){}3)首先得到左右邊界的坐標(biāo)值。m_fGridStartX是在方塊的中心,所以需要減去半個(gè)方塊的寬度才是左邊邊界。在SpritePosXToIndexX函數(shù)定義中添加下面的代碼:constfloatfLeftSide=m_fGridStartXm_fGridSize/。constfloatfRightSide=fLeftSide+m_fGridSize*GRID_COUNT。4)最后需要判斷坐標(biāo)是否出了左右邊界,如果沒有則返回X索引值。在上面的函數(shù)里面添加下面的判斷代碼:if(fPosXfLeftSide||fPosXfRightSide)return1。intiIndexX=(int)((fPosXfLeftSide)/m_fGridSize)。returniIndexX。5):intCGameMain::SpritePosYToIndexY(constfloatfPosY){}6)首先獲取上下邊界坐標(biāo)值。m_fGridStartY是在方塊的中心,所以需要減去半個(gè)方塊的寬度才是上邊邊界。在上面的函數(shù)定義中添加下面的代碼:constfloatfTopSide=m_fGridStartYm_fGridSize/。constfloatfBottomSide=fTopSide+m_fGridSize*GRID_COUNT。7)最后判斷是否超過了上下邊界,沒有則返回Y索引值:if(fPosYfTopSide||fPosYfBottomSide)return1。intiIndexY=(int)((fPosYfTopSide)/m_fGridSize)。returniIndexY。有了上面的兩個(gè)函數(shù),我們就可以將控制球精靈坐標(biāo)轉(zhuǎn)換到二維格子數(shù)組索引,并判斷坐標(biāo)是否超出邊界,在OnKeyDown函數(shù)中添加下面的代碼:floatfPosX=m_pControlBallGetSpritePositionX()。floatfPosY=m_pControlBallGetSpritePositionY()。intiIndexX=SpritePosXToIndexX(fPosX)。intiIndexY=SpritePosYToIndexY(fPosY)。if(iIndexX0||iIndexX=GRID_COUNT||iIndexY0||iIndexY=GRID_COUNT)return。根據(jù)上下左右方向鍵,先判斷控制球旁邊是否是方塊,如果是方塊則不能移動(dòng)。不是方塊,則給予控制球一個(gè)速度。使用iIndexX,iIndexY的時(shí)候,注意要判斷是否是邊緣的索引,如果不判斷就進(jìn)行加1減1,訪問數(shù)組會(huì)造成下標(biāo)溢出。即如果要判斷左邊是否是方塊阻擋,則索引值為IndexX。此時(shí)必須先判斷iIndexX大于0,才能減一。如果iIndexX為0,代表直接可以移動(dòng)。1)如果是按下向上方向鍵:if(KEY_UP==iKey){if(iIndexY0amp。amp。RIGID_BLOCK==m_iGridData[iIndexY1][iIndexX])return。//給予控制球一個(gè)方向速度,并設(shè)置移動(dòng)狀態(tài)、隱藏指示箭頭m_iMoveState=1。m_pControlBallSetSpriteLinearVelocityY()。m_pGolfArrowSetSpriteVisible(0)。}2)如果是按下向下方向鍵:elseif(KEY_DOWN==iKey){if(iIndexYGRID_COUNTamp。amp。RIGID_BLOCK==m_iGridData[iIndexY+1][iIndexX])return。//給予控制球一個(gè)方向速度,并設(shè)置移動(dòng)狀態(tài)、隱藏指示箭頭m_iMoveState=2。m_pControlBallSetSpriteLinearVelocityY()。m_pGolfArrowSetSpriteVisible(0)。}3)如果是按下向左方向鍵:elseif(KEY_LEFT==iKey){if(iIndexX0amp。amp。RIGID_BLOCK==m_iGridData[iIndexY][iIndexX1])return。//給予控制球一個(gè)方向速度,并設(shè)置移動(dòng)狀態(tài)、隱藏指示箭頭m_iMoveState=3。m_pControlBallSetSpriteLinearVelocityX()。m_pGolfArrowSetSpriteVisible(0)。}4)如果是按下向右方向鍵:elseif(KEY_RIGHT==iKey){if(iIndexXGRID_COUNTamp。amp。RIGID_BLOCK==m_iGridData[iIndexY][iIndexX+1])return。//給予控制球一個(gè)方向速度,并設(shè)置移動(dòng)狀態(tài)、隱藏指示箭頭m_iMoveState=4。m_pControlBallSetSpriteLinearVelocityX()。m_pGolfArrowSetSpriteVisible(0)。}:(iKey,bAltPress,bShiftPress,bCtrlPress)。至此,本實(shí)驗(yàn)結(jié)束。實(shí)驗(yàn)五球運(yùn)動(dòng)情況的處理【實(shí)驗(yàn)內(nèi)容】步驟一、獲得球所在邊緣格子信息步驟二、不同格子分情況處理【實(shí)驗(yàn)思路】獲取球精靈的當(dāng)前坐標(biāo)并將其轉(zhuǎn)換為二維格子的坐標(biāo),判斷在運(yùn)動(dòng)中球邊緣的情況,如果已經(jīng)出了邊界則不需要再判斷,否則如果是方塊則球???、是黑洞則重新開始關(guān)卡、是出口則通關(guān)?!緦?shí)驗(yàn)指導(dǎo)】移動(dòng)狀態(tài)為移動(dòng)中,時(shí)刻監(jiān)測(cè)控制球的移動(dòng)情況,根據(jù)移動(dòng)方向的下一個(gè)方塊,進(jìn)行對(duì)應(yīng)的處理。添加下面的if判斷:if(0!=m_iMoveState){}先將控制球精靈坐標(biāo)轉(zhuǎn)換到二維格子數(shù)組索引,如果控制球已經(jīng)出了邊界,所以不需要再判斷。在上面的判斷里面添加下面的代碼:floatfPosX=m_pControlBallGetSpritePositionX()。floatfPosY=m_pControlBallGetSpritePositionY()。
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1