版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> 面向?qū)ο蟪绦蛟O(shè)計c++</p><p><b> 課程設(shè)計總結(jié)報告</b></p><p> 設(shè)計題目:模擬俄羅斯方塊</p><p><b> 學(xué)生姓名: </b></p><p><b> 系 別: </b></p><
2、;p><b> 專 業(yè): </b></p><p><b> 班 級:</b></p><p><b> 學(xué) 號:</b></p><p><b> 指導(dǎo)教師: </b></p><p> 2010 年 1 月 8 日&l
3、t;/p><p> 課 程 設(shè) 計 任 務(wù) 書</p><p> 題目 模擬俄羅斯方塊 </p><p> 專業(yè)、班級 學(xué)號 姓名 </p><p> 程序在文本窗口下輸出特定字
4、符模擬游戲俄羅斯方塊的運行。</p><p> 在游戲過程中,每次能隨機產(chǎn)生一種方塊并自動下落,根據(jù)按鍵控制進行相應(yīng)的平移、變形和加速下落。消去滿行后,根據(jù)行數(shù)累計分數(shù)。分數(shù)達到一定值后,等級提升,下落速度加快。游戲區(qū)域積滿后,游戲結(jié)束。同時能響應(yīng)退出按鍵,提示是否退出游戲。</p><p> 完 成 期 限:2010.1.4-2010.1.8</p><p&
5、gt; 指導(dǎo)教師簽名: </p><p> 課程負責人簽名: </p><p> 2010年 1月 8 日</p><p> 俄羅斯方塊的設(shè)計與實現(xiàn)</p><p><b> 第一章引言4</b></p><p> 1
6、.1.關(guān)于題目4</p><p> 1.1.1.題目要求4</p><p> 1.1.2.選題背景4</p><p> 1.2.關(guān)于編譯軟件4</p><p> 1.3.關(guān)于穩(wěn)定性4</p><p> 第二章程序設(shè)計5</p><p> 2.主要功能設(shè)計5
7、</p><p> 2.1.程序流程5</p><p> 第三章程序?qū)崿F(xiàn)7</p><p> 3.類設(shè)計聲明7</p><p> 3.1.view類7</p><p> 3.2.squar類7</p><p> 3.3.主要功能的實現(xiàn)8</p>
8、<p> 3.3.1.游戲界面8</p><p> 3.3.2.生成方塊9</p><p> 3.3.3.方塊變形9</p><p> 3.3.4.方塊顯示10</p><p> 3.3.5.障礙判斷11</p><p> 3.3.6.消行計分12</p>&
9、lt;p> 3.3.7.暫停退出13</p><p> 第四章程序測試14</p><p> 4.游戲測試14</p><p><b> 總結(jié)與體會15</b></p><p><b> 附錄:16</b></p><p><b>
10、 引言</b></p><p><b> 關(guān)于題目</b></p><p><b> 題目要求</b></p><p> 利用Microsoft Visual C++編寫一個文本窗口下的俄羅斯方塊游戲。</p><p><b> 要求:</b></p&
11、gt;<p> 利用類和多文件編寫。</p><p> 能夠記錄游戲得分和等級。</p><p> 可暫停/繼續(xù)游戲,使玩家在不愿游戲時退出。</p><p> 信息提示時顯示顏色變化。</p><p><b> 選題背景</b></p><p> 俄羅斯方塊是家喻戶曉的
12、益智小游戲,選擇這個題目一是為了將自己的所學(xué)知識加以運用,二是俄羅斯方塊是我第一個接觸到的游戲,它的實現(xiàn)方法也吸引著我。我希望通過探索實踐去實現(xiàn)它,在這次學(xué)習中從實踐和實際的項目中提高自己的編程能力。因此我選定了這個題目。</p><p><b> 關(guān)于編譯軟件</b></p><p> 本程序采用Microsoft Visual C++6.0的英文版本進行編譯。
13、VisualC++6.0是Microsoft公司推出的基于Windows操作系統(tǒng)的可視化C++編程工具,盡管Microsoft公司推出了.NET平臺的集成開發(fā)環(huán)境,但由于其良好的界面和可操作性,加上支持標準C/C++規(guī)范,但仍有相當多的編程人員使用VisualC++6.0進行應(yīng)用系統(tǒng)的開發(fā)。</p><p><b> 關(guān)于穩(wěn)定性</b></p><p> 經(jīng)測試,
14、本程序可以在windows操作系統(tǒng)中穩(wěn)定運行,較為穩(wěn)定。</p><p><b> 程序設(shè)計</b></p><p><b> 主要功能設(shè)計</b></p><p> 根據(jù)分析,俄羅斯方塊這個程序一共要實現(xiàn)如下幾個功能,開始游戲、游戲的暫停\繼續(xù)、游戲控制和退出游戲。其中游戲控制最為主要和重要,它控制著整個游戲的畫面
15、和有關(guān)數(shù)據(jù)的操作,是游戲的核心部分。暫停和退出功能做成一體,在退出的提示下不做任何操作即可實現(xiàn)暫停的功能。程序結(jié)構(gòu)如圖2-1所示。</p><p> 圖2-1 程序結(jié)構(gòu)圖</p><p><b> 程序流程</b></p><p> 根據(jù)分析后的程序結(jié)構(gòu)圖設(shè)計出相應(yīng)的流程圖。俄羅斯方塊的內(nèi)容主要包括游戲開始,畫背景和邊框,顯示分數(shù)等級和下
16、一個方塊的預(yù)覽圖;根據(jù)速度沒隔一定時間方塊自動下落,當有按鍵操作時,根據(jù)相應(yīng)按鍵執(zhí)行動作,每次動作前要判斷是否動作可以執(zhí)行。下落方塊滿一行時,消去該行,根據(jù)消去行數(shù)得到相應(yīng)分數(shù)。分數(shù)達到一定程度,等級提升,速度加快。同時可以響應(yīng)Esc按鍵,提示是否退出程序。</p><p><b> 圖2-2 流程圖</b></p><p><b> 程序?qū)崿F(xiàn)</
17、b></p><p><b> 類設(shè)計聲明</b></p><p> 根據(jù)程序的結(jié)構(gòu),將俄羅斯方塊需要實現(xiàn)的功能細化為相應(yīng)的類成員函數(shù)。程序有兩個類,一個view類,用于背景相關(guān)操作。一個squar類,用于方塊相關(guān)操作。</p><p><b> view類</b></p><p>
18、class view</p><p><b> {</b></p><p><b> public:</b></p><p> view();//類的缺省構(gòu)造函數(shù)</p><p> int getbgdata(int,int);//取得數(shù)組x,y點的數(shù)據(jù)值</
19、p><p> void scoreadd(int);//得分增加,根據(jù)消去行數(shù)</p><p> void scorereset();//得分清零,用于升級后</p><p> void levelup();//等級提升,當分數(shù)達到規(guī)定值后執(zhí)行</p><p> int gameover();
20、//游戲結(jié)束</p><p> void rowdelete();//消除滿行</p><p> void previewset(int (*p)[4]);//設(shè)置預(yù)覽方塊的形狀數(shù)據(jù)</p><p> void previewreset();//預(yù)覽方塊數(shù)據(jù)清零</p><p> void setda
21、ta(int (*)[2]);//設(shè)置主游戲區(qū)數(shù)據(jù)值</p><p> void datareset();//主游戲區(qū)數(shù)據(jù)清零</p><p> void drawpreview();//顯示預(yù)覽方塊</p><p><b> private:</b></p><p> int d
22、ata[25][26];//主游戲區(qū)數(shù)組</p><p> int preview[4][4];//預(yù)覽方塊數(shù)組</p><p> int rowsdelete;//每次消除行數(shù)變量</p><p> int score;//得分變量</p><p> int scorelevel
23、;//升級規(guī)定值變量</p><p> int level;//等級變量</p><p> bool overflag;//結(jié)束標記變量</p><p> void scorelevelup();//升級規(guī)定值提升</p><p><b> };</b><
24、;/p><p><b> squar類</b></p><p> class view;//先向引用聲明</p><p> class squar</p><p><b> {</b></p><p><b> public:</b>
25、;</p><p> squar();//類的缺省構(gòu)造函數(shù)</p><p> squar(squar &);//拷貝構(gòu)造函數(shù)</p><p> friend void cursor(int,int);//友元函數(shù) 控制光標位置</p><p> void getcursor(int &
26、;,int &);//取得位置記錄坐標</p><p> void make();//隨機產(chǎn)生一個方塊</p><p> void getmake(int (*p)[4]);//取得方塊數(shù)據(jù)值</p><p> void draw();//顯示主方塊</p><p> void dr
27、op(view &);//方塊下落</p><p> void change();//方塊變形</p><p> int meet(int);//判斷方塊周圍是否有障礙</p><p> void torecord(int (*)[2]);//傳送需要記錄的數(shù)據(jù)</p><p>
28、 void reset();//方塊數(shù)組清零</p><p> int moveflag;//方塊運動標記變量</p><p><b> private:</b></p><p> void move();//方塊運動</p><p> int shape[4][4];
29、//方塊形狀數(shù)據(jù)</p><p> int x,y;//坐標</p><p> int shapeindex;//方塊形狀序號</p><p> int changeindex;//變形序號變量</p><p> int speed;//下落速度變量</p>
30、;<p><b> };</b></p><p><b> 主要功能的實現(xiàn)</b></p><p><b> 游戲界面</b></p><p> 俄羅斯方塊的游戲界面包括游戲區(qū)域邊框、下落方塊繪制、右部計分和預(yù)覽圖顯示等。</p><p> 游戲區(qū)域邊框
31、的繪制比較簡單,循環(huán)中確定光標的位置輸出特定字符,即可完成邊框繪制。游戲區(qū)方塊的繪制,循環(huán)從數(shù)據(jù)數(shù)組中依次讀出數(shù)據(jù),根據(jù)讀到的數(shù)據(jù)顯示“〇”,最后組成方塊的形狀,完成方塊的繪制。計分和預(yù)覽圖部分先畫出一個矩形區(qū)域,然后控制光標在其中顯示分數(shù)、等級、預(yù)覽圖和提示信息。具體界面如圖3-1所示。</p><p><b> 圖3-1</b></p><p><b>
32、; 生成方塊</b></p><p> 本程序中生成的方塊有六種形狀,如圖3-2所示。每一種方塊以shapeindex標記,在程序運行生成方塊時,調(diào)用shapeindex=rand()%5+1;語句,確定當前要顯示的是哪一個方塊形狀。而在實際運行中,第一次需要調(diào)用兩次生成方塊函數(shù)make(),將先產(chǎn)生的賦給游戲當前方塊,第二個賦給預(yù)覽圖方塊。以后每次產(chǎn)生一個方塊,把預(yù)覽方塊賦給當前方塊,把新產(chǎn)生的
33、賦給預(yù)覽方塊。</p><p><b> 圖3-2</b></p><p><b> 方塊變形</b></p><p> 俄羅斯方塊的特點就在于通過方塊的變形拼滿整行來消去該行方塊從而使游戲可以繼續(xù)下去,很難想象不能變形的俄羅斯方塊是什么樣子。而變形的過程就是根據(jù)當前方塊形狀改變方塊的相對位置,這樣就可以改變方塊的形
34、狀了。在程序中每當按下Up鍵,程序判斷可以變形后,根據(jù)當前方塊的形狀序號shapeindex和變化形狀序號changeindex調(diào)用相應(yīng)的方塊數(shù)值賦給draw()函數(shù),通過刷新重畫就可以顯示變化后的方塊了。具體形狀變化如圖3-3所示。</p><p><b> 圖3-3</b></p><p><b> 方塊顯示</b></p>
35、<p> 以上方塊的操作都是數(shù)據(jù)層面的操作,而真正要在游戲窗口中看到數(shù)據(jù)的變化,還必須把方塊不斷的繪制出來。這就是draw()函數(shù)的作用。把當前運動的方塊對應(yīng)節(jié)點存儲在一個4*4數(shù)組里,變形和生成方塊的過程就是更新該數(shù)組數(shù)據(jù)的過程。然后在draw()函數(shù)里檢測數(shù)組的各個值,并控制光標跳到一定位置,畫出“〇”組成方塊。具體方塊對應(yīng)數(shù)組數(shù)值關(guān)系如圖3-4所示。</p><p><b> 圖3
36、-4</b></p><p><b> 障礙判斷</b></p><p> 障礙判斷,就是在方塊運動中或者變形中判斷周圍是否有障礙阻礙下落、移位、變形。當方塊下落遇到下面有方塊或者到達下邊界則應(yīng)停止下落并記錄數(shù)據(jù),存入背景數(shù)據(jù)數(shù)組。變形時應(yīng)判斷這個變形是否可以進行,如果有障礙則不能變形。例如當方塊達到右邊界,而若變形則會越過邊界,那么這個變形的命令是不
37、應(yīng)執(zhí)行的。所有這些判斷都由meet()函數(shù)進行,根據(jù)是否有障礙返回1或0,再由其他函數(shù)接收執(zhí)行相應(yīng)操作。具體一些障礙情況如圖3-5所示。</p><p><b> 圖3-5</b></p><p><b> 消行計分</b></p><p> 游戲玩家拼滿一行后,程序消去滿行,并計分。中當一個方塊下落停止后,程序檢查
38、方塊是否充滿了游戲區(qū)域,如果是結(jié)束游戲。不是,則判斷是否構(gòu)成消行條件,從下落方塊的最低點依次向上檢查是否可以消行,根據(jù)消去行數(shù)分數(shù)增加。分數(shù)達到一定程度,等級提升,速度加快。如圖3-6,圖3-7,圖3-8所示。</p><p><b> 圖3-6</b></p><p><b> 圖3-7</b></p><p>&l
39、t;b> 圖3-8</b></p><p><b> 暫停退出</b></p><p> 游戲的友好性在于能考慮用戶的需要,隨時可以暫停/繼續(xù)游戲,在不愿繼續(xù)游戲時退出游戲。本程序可以在用戶需要的時候響應(yīng)Esc按鍵,提示是否退出游戲,如果不做選擇即可暫停游戲,等待選擇。界面如圖3-9所示。</p><p><b&g
40、t; 圖3-9</b></p><p><b> 程序測試</b></p><p><b> 游戲測試</b></p><p> 經(jīng)過調(diào)試和修改,程序完全實現(xiàn)設(shè)計要求,成功模擬了俄羅斯方塊的運行過程和游戲效果,只是界面略微簡陋,但已從程序?qū)用嫔蠈崿F(xiàn)了游戲,達到了這次實訓(xùn)的要求和目的。</p>
41、<p> 程序正常生成方塊,根據(jù)速度值每隔一定時間自動下落,如有操作按鍵按下,根據(jù)按鍵實現(xiàn)位移和變形。當方塊滿一行后,可以消除該行,同時記錄分數(shù)和等級。按下Esc鍵紅色提示信息正常顯示,可以響應(yīng)F1,F(xiàn)2鍵決定是否退出游戲。</p><p><b> 總結(jié)與體會</b></p><p> 通過這次課程設(shè)計,我收獲了很多。首先把所學(xué)知識加以利用和鞏固
42、,其次在實踐中遇到問題去探索和學(xué)習,更增加了新知識。</p><p> 在程序設(shè)計編寫過程中兩個類的數(shù)據(jù)交換是個比較麻煩的過程,這個類的定義過程中要用到另一個類做參數(shù)類型,而在后一個類中亦需要第一個類做參數(shù)類型,出現(xiàn)了互相調(diào)用的情況。編譯提示未定義,只好在兩個類外定義函數(shù)負責兩個類函數(shù)的數(shù)據(jù)交換。實踐證明達到了預(yù)期的目的,積累了經(jīng)驗。</p><p> 由于程序是用文本窗口模擬的圖形,
43、界面比較簡陋,如果使用MFC用C++來實現(xiàn),那么界面將會非常好,只是由于所學(xué)知識有限,只有下一步去探索了。</p><p><b> 附錄:</b></p><p><b> 程序主要模塊源代碼</b></p><p> squar::squar()</p><p><b> {&
44、lt;/b></p><p> for(int i=0;i<4;i++)</p><p><b> {</b></p><p> for(int j=0;j<4;j++)</p><p><b> {</b></p><p> shape[i][j
45、]=0;</p><p><b> }</b></p><p><b> }</b></p><p><b> x=22;</b></p><p><b> y=0;</b></p><p> shapeindex=1;&
46、lt;/p><p> changeindex=1;</p><p> speed=1000;</p><p> moveflag=1;</p><p> downtoearth=0;</p><p><b> }</b></p><p> void squar::m
47、ake()</p><p><b> {</b></p><p> srand((int)time(0));</p><p> shapeindex=rand()%6+1;</p><p> switch(shapeindex)</p><p><b> {</b>
48、</p><p><b> case 1:</b></p><p><b> reset();</b></p><p> shape[1][0]=1;</p><p> shape[1][1]=1;</p><p> shape[1][2]=1;</p>
49、<p> shape[1][3]=1;</p><p><b> break;</b></p><p><b> case 2:</b></p><p><b> reset();</b></p><p> shape[0][1]=1;</p>
50、;<p> shape[1][1]=1;</p><p> shape[2][1]=1;</p><p> shape[2][2]=1;</p><p><b> break;</b></p><p><b> case 3:</b></p><p>
51、<b> reset();</b></p><p> shape[0][2]=1;</p><p> shape[1][2]=1;</p><p> shape[2][1]=1;</p><p> shape[2][2]=1;</p><p><b> break;</
52、b></p><p><b> case 4:</b></p><p><b> reset();</b></p><p> shape[0][1]=1;</p><p> shape[1][1]=1;</p><p> shape[1][2]=1;</
53、p><p> shape[2][2]=1;</p><p><b> break;</b></p><p><b> case 5:</b></p><p><b> reset();</b></p><p> shape[0][2]=1;<
54、/p><p> shape[1][1]=1;</p><p> shape[1][2]=1;</p><p> shape[2][1]=1;</p><p><b> break;</b></p><p><b> case 6:</b></p><
55、p><b> reset();</b></p><p> shape[1][1]=1;</p><p> shape[1][2]=1;</p><p> shape[2][1]=1;</p><p> shape[2][2]=1;</p><p><b> break;
56、</b></p><p><b> }</b></p><p><b> }</b></p><p> void squar::draw()</p><p><b> {</b></p><p> for(int i=0;i<
57、4;i++)</p><p><b> {</b></p><p> for(int j=0;j<4;j++)</p><p><b> {</b></p><p> if(shape[i][j])</p><p><b> {</b>&
58、lt;/p><p> cursor(x+j*2,y+i);</p><p> cout<<"〇";</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b>&l
59、t;/p><p><b> }</b></p><p> int squar::meet(int direction)</p><p> {//遇見返回1;</p><p> int xx=x/2,yy=y;</p><p> switch(direction)</p>&l
60、t;p><b> {</b></p><p> case 1://direc left</p><p><b> yy+=1;</b></p><p> switch(shapeindex)</p><p><b> {</b></p><p
61、> case 1://line</p><p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy+1,xx-1))</p><p>&
62、lt;b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy,xx)||get
63、data(yy+1,xx)||getdata(yy+2,xx)||getdata(yy+3,xx))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p>&
64、lt;b> }</b></p><p> case 2://curlr</p><p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b></p><p> if(ge
65、tdata(yy,xx)||getdata(yy+1,xx)||getdata(yy+2,xx))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p>&l
66、t;b> case 2:</b></p><p> if(getdata(yy+1,xx+2)||getdata(yy+2,xx))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> re
67、turn 0;</b></p><p><b> case 3:</b></p><p> if(getdata(yy,xx)||getdata(yy+1,xx+1)||getdata(yy+2,xx+1))</p><p><b> return 1;</b></p><p>&
68、lt;b> else</b></p><p><b> return 0;</b></p><p><b> case 4:</b></p><p> if(getdata(yy+1,xx)||getdata(yy+2,xx))</p><p><b> ret
69、urn 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 3://curll</p><p> swit
70、ch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy,xx+1)||getdata(yy+1,xx+1)||getdata(yy+2,xx))</p><p><b>
71、return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+1,xx)||getdata(yy+
72、2,xx))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 3:</b></p><p
73、> if(getdata(yy,xx)||getdata(yy+1,xx)||getdata(yy+2,xx))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p>
74、<p><b> case 4:</b></p><p> if(getdata(yy+1,xx)||getdata(yy+2,xx+2))</p><p><b> return 1;</b></p><p><b> else</b></p><p>&l
75、t;b> return 0;</b></p><p><b> }</b></p><p> case 4://s</p><p> switch(changeindex)</p><p><b> {</b></p><p><b>
76、 case 1:</b></p><p> if(getdata(yy,xx)||getdata(yy+1,xx)||getdata(yy+2,xx+1))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b
77、> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+1,xx+1)||getdata(yy+2,xx))</p><p><b> return 1;</b></p><p><b>
78、else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 5://dis</p><p> switch(changeindex)</p><p><b> {&l
79、t;/b></p><p><b> case 1:</b></p><p> if(getdata(yy,xx+1)||getdata(yy+1,xx)||getdata(yy+2,xx))</p><p><b> return 1;</b></p><p><b> e
80、lse</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+1,xx)||getdata(yy+2,xx+1))</p><p><b> return 1;<
81、;/b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 6://disc</p><p> if(getdata(yy+
82、1,xx)||getdata(yy+2,xx))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></
83、p><p> case 2://direc right</p><p><b> yy+=1;</b></p><p> switch(shapeindex)</p><p><b> {</b></p><p> case 1://line</p>&l
84、t;p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy+1,xx+4))</p><p><b> return 1;</b><
85、/p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy,xx+2)||getdata(yy+1,xx+2)||getdata(yy+2,x
86、x+2)||getdata(yy+3,xx+2))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b><
87、/p><p> case 2://curlr</p><p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy,xx+2)||getdata(y
88、y+1,xx+2)||getdata(yy+2,xx+3))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:<
89、;/b></p><p> if(getdata(yy+1,xx+4)||getdata(yy+2,xx+4))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b>
90、</p><p><b> case 3:</b></p><p> if(getdata(yy,xx+3)||getdata(yy+1,xx+3)||getdata(yy+2,xx+3))</p><p><b> return 1;</b></p><p><b> else&
91、lt;/b></p><p><b> return 0;</b></p><p><b> case 4:</b></p><p> if(getdata(yy+1,xx+4)||getdata(yy+2,xx+2))</p><p><b> return 1;</
92、b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 3://curll</p><p> switch(changein
93、dex)</p><p><b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy,xx+3)||getdata(yy+1,xx+3)||getdata(yy+2,xx+3))</p><p><b> return 1;
94、</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+1,xx+2)||getdata(yy+2,xx+4)
95、)</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 3:</b></p><p>
96、 if(getdata(yy,xx+3)||getdata(yy+1,xx+2)||getdata(yy+2,xx+2))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p>
97、<p><b> case 4:</b></p><p> if(getdata(yy+1,xx+4)||getdata(yy+2,xx+4))</p><p><b> return 1;</b></p><p><b> else</b></p><p>
98、;<b> return 0;</b></p><p><b> }</b></p><p> case 4://s</p><p> switch(changeindex)</p><p><b> {</b></p><p><b&g
99、t; case 1:</b></p><p> if(getdata(yy,xx+2)||getdata(yy+1,xx+3)||getdata(yy+2,xx+3))</p><p><b> return 1;</b></p><p><b> else</b></p><p&g
100、t;<b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+1,xx+4)||getdata(yy+2,xx+3))</p><p><b> return 1;</b></p><p>&l
101、t;b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 5://dis</p><p> switch(changeindex)</p><p><b
102、> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy,xx+3)||getdata(yy+1,xx+3)||getdata(yy+2,xx+2))</p><p><b> return 1;</b></p><p>
103、;<b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+1,xx+3)||getdata(yy+2,xx+4))</p><p><b>
104、; return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 6://disc</p><p>
105、 if(getdata(yy+1,xx+3)||getdata(yy+2,xx+3))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b>
106、; }</b></p><p> case 3://direc down</p><p> switch(shapeindex)</p><p><b> {</b></p><p> case 1://line</p><p> switch(changeindex)&l
107、t;/p><p><b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy+2,xx)||getdata(yy+2,xx+1)||getdata(yy+2,xx+2)||getdata(yy+2,xx+3))</p><p><b&
108、gt; return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+4,xx+1))</
109、p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 2://cu
110、rlr</p><p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy+3,xx+1)||getdata(yy+3,xx+2))</p><p&
111、gt;<b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+3,xx
112、+1)||getdata(yy+3,xx+2)||getdata(yy+3,xx+3))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b&g
113、t; case 3:</b></p><p> if(getdata(yy+1,xx+1)||getdata(yy+3,xx+2))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> retur
114、n 0;</b></p><p><b> case 4:</b></p><p> if(getdata(yy+2,xx+2)||getdata(yy+2,xx+3)||getdata(yy+3,xx+1))</p><p><b> return 1;</b></p><p>
115、<b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 3://curll</p><p> switch(changeindex)</p><p>&
116、lt;b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy+3,xx+1)||getdata(yy+3,xx+2))</p><p><b> return 1;</b></p><p><b> el
117、se</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+3,xx+1)||getdata(yy+3,xx+2)||getdata(yy+3,xx+3))</p><p>&l
118、t;b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 3:</b></p><p> if(getdata(yy+1,xx+2)||
119、getdata(yy+3,xx+1))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 4:</b><
120、/p><p> if(getdata(yy+2,xx+1)||getdata(yy+2,xx+2)||getdata(yy+3,xx+3))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;&
121、lt;/b></p><p><b> }</b></p><p> case 4://s</p><p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b>&
122、lt;/p><p> if(getdata(yy+2,xx+1)||getdata(yy+3,xx+2))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p&g
123、t;<p><b> case 2:</b></p><p> if(getdata(yy+3,xx+1)||getdata(yy+3,xx+2)||getdata(yy+2,xx+3))</p><p><b> return 1;</b></p><p><b> else</b&
124、gt;</p><p><b> return 0;</b></p><p><b> }</b></p><p> case 5://dis</p><p> switch(changeindex)</p><p><b> {</b><
125、;/p><p><b> case 1:</b></p><p> if(getdata(yy+2,xx+2)||getdata(yy+3,xx+1))</p><p><b> return 1;</b></p><p><b> else</b></p>
126、<p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+2,xx+1)||getdata(yy+3,xx+2)||getdata(yy+3,xx+3))</p><p><b> return 1;</b
127、></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 6://disc</p><p> if(getdata(yy+3,x
128、x+1)||getdata(yy+3,xx+2))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b><
129、/p><p> case 4://direc up</p><p> switch(shapeindex)</p><p><b> {</b></p><p> case 1://line</p><p> switch(changeindex)</p><p>&
130、lt;b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy+1,xx)||getdata(yy+1,xx+2)||getdata(yy+1,xx+3))</p><p><b> return 1;</b></p><
131、p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy+1,xx)||getdata(yy+1,xx+2)||getdata(yy+1,xx+3))</p&
132、gt;<p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 2://curl
133、r</p><p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b></p><p> if(getdata(yy+1,xx+3)||getdata(yy+2,xx+3))</p><p>
134、;<b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy,xx+1)|
135、|getdata(yy,xx+2)||getdata(yy+1,xx+2))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> ca
136、se 3:</b></p><p> if(getdata(yy+1,xx+1)||getdata(yy+1,xx+3)||getdata(yy+2,xx+1))</p><p><b> return 1;</b></p><p><b> else</b></p><p>&l
137、t;b> return 0;</b></p><p><b> case 4:</b></p><p> if(getdata(yy,xx+1)||getdata(yy+2,xx+2))</p><p><b> return 1;</b></p><p><b>
138、; else</b></p><p><b> return 0;</b></p><p><b> }</b></p><p> case 3://curll</p><p> switch(changeindex)</p><p><b>
139、 {</b></p><p><b> case 1:</b></p><p> if(getdata(yy+1,xx+1)||getdata(yy+2,xx+3))</p><p><b> return 1;</b></p><p><b> else</b
140、></p><p><b> return 0;</b></p><p><b> case 2:</b></p><p> if(getdata(yy,xx+1)||getdata(yy,xx+2))</p><p><b> return 1;</b><
141、/p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 3:</b></p><p> if(getdata(yy+1,xx+2)||getdata(yy+1,xx+3)||getdata(yy+2
142、,xx+3))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p><b> case 4:</b></p><
143、p> if(getdata(yy,xx+2)||getdata(yy+2,xx+1)||getdata(yy+2,xx+2))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></
144、p><p><b> }</b></p><p> case 4://s</p><p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:</b></p><
145、;p> if(getdata(yy+1,xx+3)||getdata(yy+2,xx+1))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> return 0;</b></p><p>&
146、lt;b> case 2:</b></p><p> if(getdata(yy,xx+1)||getdata(yy+1,xx+1))</p><p><b> return 1;</b></p><p><b> else</b></p><p><b> r
147、eturn 0;</b></p><p><b> }</b></p><p> case 5://dis</p><p> switch(changeindex)</p><p><b> {</b></p><p><b> case 1:
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 俄羅斯方塊c++課程設(shè)計報告
- c++俄羅斯方塊課程設(shè)計
- c++課程設(shè)計報告---俄羅斯方塊的設(shè)計與實現(xiàn)
- c++俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計-- 用c++實現(xiàn)的俄羅斯方塊程序設(shè)計
- c++俄羅斯方塊課程設(shè)計報告書
- c課程設(shè)計--俄羅斯方塊
- c++語言實現(xiàn)俄羅斯方塊經(jīng)典游戲課程設(shè)計
- c語言課程設(shè)計報告-俄羅斯方塊
- 俄羅斯方塊課程設(shè)計報告
- c_課程設(shè)計-俄羅斯方塊
- 俄羅斯方塊課程設(shè)計報告
- c#俄羅斯方塊課程設(shè)計
- 課程設(shè)計--俄羅斯方塊設(shè)計報告
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 課程設(shè)計---俄羅斯方塊
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
- 俄羅斯方塊課程設(shè)計
評論
0/150
提交評論