




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
************************Desc俄羅斯方塊游戲yhoodlum*Date:22:30***********************/#include<>#include<>#include<>#include<>#include<>#include<>#definetrue1#definefalse0#defineBoardWidth12defineBoardHeight23defineINNERHELPERinnerhelpermethod*/esDefine{upwardarrow*/TCEthedatastructureoftheblock*/k{charc[4][4];*/inty;/*cellfillinfoarray,0-empty,/*blockpositioncyblockcolorblocknametheblock'sshape)*/gamesglobalinfo/nextblockgridscoreboardposition/pinfortextpostionhttopemptylineeon/*ourboard,Board[x][y][0]-isFilled,Board[x][y][1]-fillColor*/unsignedcharBoardBoardWidthBoardHeight];lockcurBlockocknextBlockcurrentmovingblocknextBlocktoappear*/functionlist*/intdyrawBlockBlockblockintintintdEraseBlockBlockblockintintintisplayScoredDisplayInfochartexterateBlockBlockblockBlocktGameameGetKeyCode/{{oskey}key}displaytext*/dINNERHELPERDisplayInfochartext{nfoLeftInfoTopinfocommonnfoLeftInfoTopinfocommon}reateanewblockbykeynumbertheblockanchortothetop-leftcornerof4*4cellsINNERHELPERGenerateBlockBlockblock{keyrandomrandom+random(1000)+random(3000))%7;block->size=3;/*becausemostblocks'size=3*/memset(block->c,0,16);{blocknameT';blockcolorREDblockc][0]=1;blockc1][1]=1,block->c[2][1]=1;blockc][2]=1;case1:blocknameL';lockcolorYELLOWblockc][0]=1;blockc][1]=1;blockc1][2]=1,block->c[2][2]=1;blocknameJ';ockcolorLIGHTGRAYblockc][0]=1;blockc][1]=1;blockc1][2]=1,block->c[0][2]=1;blocknamez';lockcolorCYANblockc0][0]=1,block->c[1][0]=1;blockc1][1]=1,block->c[2][1]=1;blockname5';ockcolorLIGHTBLUEblockc1][0]=1,block->c[2][0]=1;blockc0][1]=1,block->c[1][1]=1;blocknameo';lockcolorBLUEblocksize;blockc0][0]=1,block->c[1][0]=1;blockc0][1]=1,block->c[1][1]=1;blocknameI';blockcolorGREENblocksize;blockc][0]=1;blockc][1]=1;blockc][2]=1;blockc][3]=1;}}getnextblock*/ck{copythenextBlocktocurBlock*/BoardWidth2;memcpy6);generatenextBlockandshowit*/eBlocknextBlockNBBoardLeftNBBoardTopNBCellSizerateBlocknextBlockDrawBlocknextBlockNBBoardLeftNBBoardTopNBCellSize}rotatetheblockupdatetheblockstructdata*/ccharblockSize{{ccctempccctempcaseonlyIblockarivedhere!*/}}/*judgeiftheblockcanmovetowardthedirection*/{ntrue{{{cannotmoveleftwardorrightward*/dxif(tempX<0||tempX>(BoardWidth-1))returnfalsemakesurexisvalid!*/cannotmovedownward*/dyif(tempY>(BoardHeight-1))returnfalse;yisonlycheckedlowerbound,maybenegative!!!!*/upperboundbeforecheckcell!*/if(tempY>=0&&Board[tempX][tempY][0])alse}}}}judgeiftheblockcanrotate*/{updatebuffer/memcpy(BufferCells,,16);llsBufferCells{{{XBoardWidthnfalsenfalsenfalse}}}ntrue}drawtheblock*/void_INNER_HELPERDrawBlock(Block*block,intbdLeft,intdTopintcellSize{FILLblockcolorocksizei{blocksizej{j{bdLeftcellSizeiblock->x)+cellSize/2,bdTopcellSizej+block->y)+cellSize/2,rderColor}}}}Rotatetheblockifsuccessreturntrue*/{rntrue{seBlockblockBoardLeftBoardTopCellSizememcpyBufferCells16);DrawBlockblockBoardLeftBoardTopCellSize}rnbsuccess}/*eraseablock,onlyfillthefilledcellwithbackgroundvoid_INNER_HELPEREraseBlock(Block*block,intbdLeft,intdTopintcellSize{lorocksizei{blocksizej{j{bdLeftcellSizeiblock->x)+cellSize/2,bdTopcellSizej+block->y)+cellSize/2,rderColor}}}}movebythedirectionifcandonothingifcannotntdy{{seBlockblockBoardLeftBoardTopCellSizeDrawBlockblockBoardLeftBoardTopCellSize}nbcanmove}droptheblocktothebottom!*/{seBlockblockBoardLeftBoardTopCellSizewhile(CanMove(0,1)){}rawBlockblockBoardLeftBoardTopCellSize}initthegraphicsmodedrawtheboardgrid*/itGame{drawboardcells*/memsetBoard0,BoardWidth*BoardHeight*2);memset,16);fohelpPPauseGamebyhoodlumdthi{line(BoardLeft+i*CellSize,BoardTop,BoardLeftiCellSizeBoardTopBoardHeight*CellSize);}Heighti{line(BoardLeft,BoardTop+i*CellSize,BoardLeft+BoardWidth*CellSize,BoardTop+i*CellSize);}drawboardouterborderrect*/rectangleBoardLeftCellSize,BoardTop-CellSize/4,BoardLeftBoardWidthCellSizeCellSizeBoardTopBoardHeightCellSizeCellSize;drawnextblockgrids*/{line(NBBoardLeft+i*NBCellSize,NBBoardTop,NBBoardLeftiNBCellSizeNBBoardTop+4*NBCellSize);line(NBBoardLeft,NBBoardTop+i*NBCellSize,NBBoardLeft4*NBCellSize,NBBoardTop+i*NBCellSize);}drawscorerect*/leScoreBoardLeftScoreBoardTopScoreBoardLeftScoreardWidthScoreBoardTopScoreBoardHeightsplayScoresetnewseed*/dteBlocknextBlockNextBlock();/*createfirstblock*/outtextxy(InfoLeft,InfoTop+20,"Up-rotateouttextxyInfoLeftInfoTop5,"Left-leftrightouttextxyInfoLeftInfoTopEscexit;playInfoinfohelp}settheisFilledandfillcolordatatotheboard*/NERHELPERFillBoardData{{{{Boardi[+j][0]=1;Boardi[+j][1]=;}}}}drawonelineoftheboard*/NERHELPERPaintBoard{maxTopLinejBoardHeightj{dthi{rdijBoardij1]:BkGndColor;orrdLeftiCellSizeCellSizeBoardTopjCellSi}}}NERHELPERCheckBoard{wefindthetopemptyline!*/jtopyBoardHeight{foriiBoardWidthi{}topy--;{foriiBoardWidthiemoveit{movethecellsdatadownoneline*/forkj;k>topy;k--){idthi{Board[i][k][0]=Board[i][k-1][0];Board[i][k][1]=Board[i][k-1][1];}}makethetoplineempty*/idthi{Boarditopy][0]=0;Boarditopy][1]=0;}topy++;/*movethetoplinedownwardonecorescorescoreadding0,150*/}j--;mjtopylinesFrameTimemax0-100*(TotalScore/200),400);TopLinetopy*updatethetopline*/ifnolinesremoveonlyadd1:*/core}displaythescore/RHELPERDisplayScore{textxyScoreBoardLeftScoreBoardTopinfoscoreTotalScoretextxyScoreBoardLeftScoreBoardTopinfoscore}wecallthisfunctionwhenablockisinactive
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年堅果類產(chǎn)品合作協(xié)議書
- 2024-2030年中國炊具行業(yè)發(fā)展?jié)摿︻A(yù)測及投資戰(zhàn)略規(guī)劃報告
- Unit 2 Weather(教學(xué)設(shè)計)-2023-2024學(xué)年人教新起點(diǎn)版英語二年級下冊
- 2025年度生物科技企業(yè)員工基因技術(shù)保密及知識產(chǎn)權(quán)協(xié)議
- 《靈活巧妙的剪刀:探索剪切的藝術(shù)與科學(xué)》教學(xué)設(shè)計-2024-2025學(xué)年科學(xué)六年級上冊教科版
- 2025年度汽車租賃業(yè)務(wù)代購代售綜合服務(wù)合同
- 2025年度白酒企業(yè)品牌授權(quán)與連鎖經(jīng)營合同
- 2025年中國婦科十味片行業(yè)市場全景評估及發(fā)展戰(zhàn)略規(guī)劃報告
- 煤炭銷售經(jīng)營合同范本
- 2025年獨(dú)立運(yùn)行風(fēng)力發(fā)電機(jī)組控制器及逆變器項目合作計劃書
- 勞務(wù)人員管理制度(7篇)
- 事故隱患安全培訓(xùn)事故排查安全隱患
- 新人教版高中數(shù)學(xué)選擇性必修第一冊全套精品課件
- 新公務(wù)員法培訓(xùn)課件
- 領(lǐng)導(dǎo)干部的國學(xué)修養(yǎng)講義
- 05-第三章-環(huán)境污染物的生物轉(zhuǎn)運(yùn)和生物轉(zhuǎn)化-生物轉(zhuǎn)化幻燈片
- 公司精益改善項目推進(jìn)管理制度及激勵方案
- 工科高等數(shù)學(xué)(下)知到章節(jié)答案智慧樹2023年上海海洋大學(xué)
- oppor11t刷全網(wǎng)通改全教程
- 兒童羽毛球教程
- 福建某機(jī)場二次雷達(dá)站基建工程施工組織設(shè)計
評論
0/150
提交評論