版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
JavaScript程序設(shè)計(jì)教程項(xiàng)目9:貪食蛇游戲設(shè)計(jì)項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.1功能與技術(shù)分析9.1.1功能分析游戲開(kāi)始后,貪食蛇按照一定的速度移動(dòng),用戶通過(guò)操控上、下、左、右四個(gè)按鍵改變蛇的運(yùn)動(dòng)方向。當(dāng)蛇頭碰撞到食物時(shí),吞食食物并將其轉(zhuǎn)變?yōu)樾碌纳哳^,蛇身增長(zhǎng),同時(shí)游戲分值增加。在游戲期間若蛇頭撞到蛇身或障壁則游戲結(jié)束。游戲人機(jī)交互界面以表格的形式構(gòu)建,整個(gè)界面由兩大部分構(gòu)成,以橫線間隔開(kāi)。
上部為游戲標(biāo)題,下部為游戲區(qū),游戲區(qū)又由游戲得分及速度等運(yùn)行狀態(tài)區(qū)、游戲運(yùn)行區(qū)和幫助信息提示區(qū)三個(gè)主要部分,運(yùn)行界面如圖9-1所示。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.1功能與技術(shù)分析9.1.2技術(shù)分析項(xiàng)目中主要使用了HTML的表格構(gòu)建游戲的背景,通過(guò)方向鍵按下的事件觸發(fā)游戲開(kāi)始,以時(shí)鐘驅(qū)動(dòng)型任務(wù)維持游戲的運(yùn)行。
在項(xiàng)目中除了HTML和JavaScript基本知識(shí)外,涉及的技術(shù)主要包括是Array對(duì)象、String對(duì)象、Windows對(duì)象和Math對(duì)象。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象字符串是JavaScript中應(yīng)用最廣泛的基本類型之一,無(wú)論是處理用戶的輸入數(shù)據(jù),還是讀取或設(shè)置DOM對(duì)象的屬性,或者操作cookie等都離不開(kāi)字符串類型。
而JavaScript的字符串對(duì)象,即String對(duì)象提供了一系列的屬性和方法用于字符串及字符串對(duì)象的操作,如分割字符串,改變字符串的大小寫(xiě),字符串拼接等等。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.1字符串及字符串對(duì)象的創(chuàng)建1.字符串創(chuàng)建字符串的最簡(jiǎn)單辦法是聲明一個(gè)新的變量,并將一組由引號(hào)包含的字符作為值賦給它。例如:varmyStr1='Hello,Javascript!';對(duì)于上面的字符串的值,可以用單引號(hào),也可以用雙引號(hào)進(jìn)行包含,但不能混用。因此,上面的聲明也可以寫(xiě)作:varmyStr2
="Hello,Javascript!"
;項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.1字符串及字符串對(duì)象的創(chuàng)建1.字符串可以使用兩種引號(hào)創(chuàng)建字符串為Javascript的操作提供了非常多的便利,例如將一種引號(hào)嵌入在另一種引號(hào)包含的內(nèi)容之中,實(shí)現(xiàn)Javascript程序與HTML語(yǔ)言的混用。例如:document.write('<imgsrc="smp/sample1.jpg">');另外,創(chuàng)建字符串還可以通過(guò)String(
)函數(shù)來(lái)實(shí)現(xiàn)。例如:varmyStr3
=
String('Hello,Javascript!');當(dāng)然,使用String(
)函數(shù)聲明時(shí)可以賦初值,也可以不賦初值項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.1字符串及字符串對(duì)象的創(chuàng)建1.字符串當(dāng)然,使用String(
)函數(shù)聲明時(shí)可以賦初值,也可以不賦初值,例如:varmyStr4
=String();varmyStr5
=String
(myStr5);對(duì)于上述聲明的myStr4值為空,而myStr5為undefined。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.1字符串及字符串對(duì)象的創(chuàng)建2.字符串對(duì)象通過(guò)下面的例子可以發(fā)現(xiàn),雖然前面創(chuàng)建的字符串本質(zhì)上并不是真正的字符串對(duì)象,但是在JavaScript中,會(huì)把一個(gè)字符串從基本變量類型簡(jiǎn)單地轉(zhuǎn)換成一個(gè)臨時(shí)的String對(duì)象,并使用String對(duì)象的方法,然后再將其轉(zhuǎn)換為字符串類型。
那么,如何去創(chuàng)建一個(gè)真正意義上的字符串對(duì)象呢?項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.1字符串及字符串對(duì)象的創(chuàng)建2.字符串對(duì)象在Javascript中,可以通過(guò)new運(yùn)算符和String()函數(shù)聯(lián)立使用創(chuàng)建一個(gè)字符串對(duì)象,所創(chuàng)建的字符串對(duì)象具有String類的屬性并可以使用其所有的方法進(jìn)行操作。例如:varmyStrObj1
=
new
String(
);在聲明的同時(shí),可以對(duì)其賦值,甚至可以前面定義過(guò)的字符串的值。例如:varmyStrObj2
=
new
String('abcd')
;varmyStrObj3
=
new
String(myStr3);項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.1字符串及字符串對(duì)象的創(chuàng)建2.字符串對(duì)象【例9-1】字符串及字符串對(duì)象創(chuàng)建。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.1字符串及字符串對(duì)象的創(chuàng)建2.字符串對(duì)象【例9-1】字符串及字符串對(duì)象創(chuàng)建。
(1)編寫(xiě)網(wǎng)頁(yè)界面,使用表格來(lái)規(guī)范各項(xiàng)輸出內(nèi)容的大小和位置
(2)在<head></head>標(biāo)記中添加網(wǎng)頁(yè)讀入事件處理器onload()函數(shù)程序運(yùn)行結(jié)果如圖9-2所示。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.2字符串對(duì)象屬性字符串對(duì)象擁有三個(gè)屬性,即constructor、length和prototype,其中,length是最常使用的字符串屬性。字符串屬性描述如表9-1所示:屬性說(shuō)明constructor指定創(chuàng)建一個(gè)對(duì)象的函數(shù)length返回字符串的長(zhǎng)度prototype向?qū)ο筇砑訉傩院头椒?xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.2字符串對(duì)象屬性【例9-2】字符串對(duì)象的length屬性。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.2字符串對(duì)象屬性【例9-2】字符串對(duì)象的length屬性。正如9.2.1所述,在Javascript中不僅字符串對(duì)象可以使用其屬性進(jìn)行描述,字符串也會(huì)被臨時(shí)轉(zhuǎn)換為字符串對(duì)象,從而使用字符串對(duì)象的屬性與方法對(duì)其進(jìn)行描述。
本例即是利用例9-1中生成的字符串及字符串對(duì)象的length屬性返回其字符數(shù)量。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.2字符串對(duì)象屬性【例9-2】字符串對(duì)象的length屬性。(1)編寫(xiě)網(wǎng)頁(yè)界面,使用表格來(lái)規(guī)范各項(xiàng)輸出內(nèi)容的大小和位置
(2)在<head></head>標(biāo)記中添加網(wǎng)頁(yè)讀入事件處理onload()函數(shù):程序運(yùn)行結(jié)果如圖9-3所示。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.3字符串對(duì)象方法字符串對(duì)象提供豐富的方法用于字符串操作,最常見(jiàn)的方法是加(+)方法,在2.2.3中已經(jīng)介紹過(guò)。其它的一些常見(jiàn)方法參見(jiàn)表9-2所示:方法說(shuō)明big()使用大號(hào)字體顯示字符串small()使用小號(hào)字體顯示字符串fontsize()使用指定的尺寸來(lái)顯示字符串fontcolor()使用指定的顏色來(lái)顯示字符串blink()顯示閃動(dòng)字符串bold()使用粗體顯示字符串italics()使用斜體顯示字符串項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.3字符串對(duì)象方法字符串對(duì)象提供豐富的方法用于字符串操作,最常見(jiàn)的方法是加(+)方法,在2.2.3中已經(jīng)介紹過(guò)。其它的一些常見(jiàn)方法參見(jiàn)表9-2所示:方法說(shuō)明strike()使用刪除線來(lái)顯示字符串sub()把字符串顯示為下標(biāo)sup()把字符串顯示為上標(biāo)concat()連接字符串split()把字符串分割為字符串?dāng)?shù)組*indexOf()檢索字符串lastIndexOf()從后向前搜索字符串項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.3字符串對(duì)象方法字符串對(duì)象提供豐富的方法用于字符串操作,最常見(jiàn)的方法是加(+)方法,在2.2.3中已經(jīng)介紹過(guò)。其它的一些常見(jiàn)方法參見(jiàn)表9-2所示:方法說(shuō)明charAt()返回在指定位置的字符substr()從起始索引號(hào)提取字符串中指定數(shù)目的字符substring()提取字符串中兩個(gè)指定的索引號(hào)之間的字符toLowerCase()把字符串轉(zhuǎn)換為小寫(xiě)toUpperCase()把字符串轉(zhuǎn)換為大寫(xiě)項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.3字符串對(duì)象方法【例9-3】字符串對(duì)象修飾字符串方法的應(yīng)用。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.3字符串對(duì)象方法【例9-3】字符串對(duì)象修飾字符串方法的應(yīng)用。
(1)編寫(xiě)網(wǎng)頁(yè)界面,使用表格來(lái)規(guī)范各項(xiàng)輸出內(nèi)容的大小和位置
(2)在<head></head>標(biāo)記中添加網(wǎng)頁(yè)讀入事件處理onload()函數(shù)程序運(yùn)行結(jié)果如圖9-4所示。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.3字符串對(duì)象方法【例9-4】字符串對(duì)象處理字符串方法的應(yīng)用。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.2字符串對(duì)象9.2.3字符串對(duì)象方法【例9-4】字符串對(duì)象處理字符串方法的應(yīng)用。
(1)編寫(xiě)網(wǎng)頁(yè)界面,使用表格來(lái)規(guī)范各項(xiàng)輸出內(nèi)容的大小和位置
(2)在<head></head>標(biāo)記中添加網(wǎng)頁(yè)讀入事件處理onload()函數(shù):程序運(yùn)行結(jié)果如圖9-5所示。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)貪食蛇游戲是Array對(duì)象、String對(duì)象、Window對(duì)象和Math對(duì)象等知識(shí)的綜合應(yīng)用,當(dāng)然其中還用到了Document對(duì)象。
貪食蛇游戲要通過(guò)上、下、左、右四個(gè)方向鍵中任意一個(gè)按鍵開(kāi)始,其它按鍵無(wú)效。
游戲的過(guò)程中可以實(shí)現(xiàn)蛇對(duì)食物的吞食,還可以進(jìn)行游戲難度的設(shè)置,以及游戲得分記錄。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)9.3.1貪食蛇游戲的界面設(shè)計(jì)與實(shí)現(xiàn)貪食蛇游戲的界面設(shè)計(jì)主要由兩個(gè)分區(qū)構(gòu)成,一個(gè)是標(biāo)題區(qū),另一個(gè)是游戲區(qū)。而游戲區(qū)又由三個(gè)部分構(gòu)成,分別是游戲運(yùn)行狀態(tài)顯示區(qū),顯示當(dāng)前的得分及貪食蛇運(yùn)動(dòng)的速度;游戲操作區(qū)是食物隨機(jī)產(chǎn)生以及貪食蛇可以運(yùn)動(dòng)的區(qū)域;幫助信息顯示區(qū)主要提供游戲過(guò)程中可以使用的按鍵信息。
設(shè)計(jì)界面及其分區(qū)如圖9-6所示。運(yùn)行狀態(tài)顯示區(qū)
游戲操作區(qū)
幫助信息顯示區(qū)項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)9.3.1貪食蛇游戲的界面設(shè)計(jì)與實(shí)現(xiàn)1.主界面的設(shè)計(jì)與實(shí)現(xiàn)主界面中游戲標(biāo)題、幫助信息通常不會(huì)發(fā)生改變,因此,采用靜態(tài)的頁(yè)面設(shè)計(jì)即可,而游戲運(yùn)行狀態(tài)區(qū)與操作區(qū)顯示的信息需隨游戲的進(jìn)程而不斷變化,因而采用動(dòng)態(tài)頁(yè)面。在代碼實(shí)現(xiàn)上,標(biāo)題采用標(biāo)簽<h2>定義,游戲區(qū)采用表格標(biāo)簽<table>定義,并使用水平分隔線標(biāo)簽<hr>對(duì)標(biāo)題與游戲區(qū)進(jìn)行分割。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)9.3.1貪食蛇游戲的界面設(shè)計(jì)與實(shí)現(xiàn)2.游戲狀態(tài)顯示與操作區(qū)的設(shè)計(jì)與實(shí)現(xiàn)貪食蛇游戲中運(yùn)行狀態(tài)顯示區(qū)在主表格的第一行出現(xiàn),游戲運(yùn)行區(qū)則采用子表格的形式顯示,表格中的單元格邊框可以為用戶的操作提供便利,同時(shí)表格以淡綠色為背景有益于用戶視力保護(hù)。單元格的尺寸與數(shù)量以變量的形式確定,也為后期維護(hù)提供了便利。這一部分的實(shí)現(xiàn)采用函數(shù)形式,定義出相應(yīng)的表格格式、表行格式以及單元格格式等,并采用二重嵌套循環(huán)的形式繪制出表格項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)9.3.1貪食蛇游戲的界面設(shè)計(jì)與實(shí)現(xiàn)2.游戲狀態(tài)顯示與操作區(qū)的設(shè)計(jì)與實(shí)現(xiàn)表格畫(huà)出后即依次調(diào)用初始化蛇頭函數(shù)initSnake()和初始化食物函數(shù)initFood()。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)9.3.2貪食蛇游戲應(yīng)用邏輯的設(shè)計(jì)與實(shí)現(xiàn)貪食蛇游戲首先是初始化,包括主界面、食物和蛇身的初始化。初始化完成后,只有當(dāng)用戶鍵入上、下、左、右四個(gè)方向鍵時(shí)才開(kāi)始游戲,游戲初始或進(jìn)行過(guò)程中用戶可以按下F(f)鍵、S(s)鍵進(jìn)行游戲速度的設(shè)置,也可以按下P(p)鍵進(jìn)行游戲的暫停或繼續(xù)。
游戲進(jìn)行過(guò)程中用戶通過(guò)方向鍵改變蛇的運(yùn)動(dòng)軌跡,當(dāng)蛇頭吞食到食物時(shí)蛇身會(huì)增長(zhǎng),當(dāng)蛇頭觸及蛇身或障壁則游戲結(jié)束。游戲的程序流程圖如圖9-7所示。項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)9.3.2貪食蛇游戲應(yīng)用邏輯的設(shè)計(jì)與實(shí)現(xiàn)1.食物與貪食蛇的設(shè)計(jì)與實(shí)現(xiàn)食物及蛇是以單元格構(gòu)成。食物以一個(gè)背景為綠色的單元格表示,可以在整個(gè)游戲操作區(qū)內(nèi)隨機(jī)出現(xiàn);蛇身以若干背景為紅色的單元格表示,游戲開(kāi)始時(shí)蛇身由一個(gè)單元格構(gòu)成,隨著吞食食物而不斷增加長(zhǎng)度,并隨著蛇頭方向的改變而變換蛇身的形狀。食物是通過(guò)Math對(duì)象的random()方法與parseInt()隨機(jī)產(chǎn)生在游戲操作區(qū)的表格中,如果隨機(jī)生成的表示食物的單元格與蛇身重合則重新生成。圖9-8為食物產(chǎn)生的程序流程圖項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)9.3.2貪食蛇游戲應(yīng)用邏輯的設(shè)計(jì)與實(shí)現(xiàn)1.食物與貪食蛇的設(shè)計(jì)與實(shí)現(xiàn)蛇身的設(shè)計(jì)分為初始化和移動(dòng)兩部分,初始化部分與食物生成類似,只是以紅色的單元格表示,并且由于先生成蛇頭,無(wú)需考慮與食物的重合問(wèn)題。蛇身的移動(dòng)是根據(jù)當(dāng)前的方向鍵值確定蛇頭的坐標(biāo),并將蛇尾擦除。在蛇移動(dòng)的過(guò)程中,如果蛇頭碰到壁障或蛇身,則游戲結(jié)束,可重新開(kāi)始或退出;如果吃到食物,則蛇身增長(zhǎng),并產(chǎn)生新的食物。程序流程圖如圖9-9所示項(xiàng)目9:貪食蛇游戲設(shè)計(jì)9.3貪食蛇游戲的設(shè)計(jì)9.3.2貪食蛇游戲應(yīng)用邏輯的設(shè)計(jì)與實(shí)現(xiàn)1.食物
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025云南省建筑安全員考試題庫(kù)附答案
- 貴州大學(xué)《計(jì)算機(jī)藝術(shù)設(shè)計(jì)》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴州財(cái)經(jīng)大學(xué)《土木工程施工與組織管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 貴陽(yáng)幼兒師范高等??茖W(xué)校《城市交通系統(tǒng)》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025遼寧省建筑安全員考試題庫(kù)及答案
- 2025年湖南省建筑安全員知識(shí)題庫(kù)及答案
- 2025山西建筑安全員《B證》考試題庫(kù)及答案
- 硅湖職業(yè)技術(shù)學(xué)院《計(jì)算機(jī)輔助設(shè)計(jì)一》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年陜西省建筑安全員C證考試(專職安全員)題庫(kù)附答案
- 廣州幼兒師范高等??茖W(xué)校《科技文獻(xiàn)檢索(理工)》2023-2024學(xué)年第一學(xué)期期末試卷
- 工作場(chǎng)所空氣中有害物質(zhì)監(jiān)測(cè)的采樣規(guī)范課件159-2004
- 設(shè)備安裝、調(diào)試及驗(yàn)收質(zhì)量保證措施
- 火力發(fā)電廠生產(chǎn)技術(shù)管理導(dǎo)則
- 合同范本之采購(gòu)合同誰(shuí)保管
- 國(guó)家自然科學(xué)基金進(jìn)展報(bào)告
- 汽輪機(jī)葉片振動(dòng)與分析
- 地質(zhì)工作個(gè)人述職報(bào)告三篇
- 相信自己歌詞(共1頁(yè))
- 產(chǎn)品可追溯流程圖圖
- 《童年》讀書(shū)交流會(huì)
- 中國(guó)主要機(jī)場(chǎng)管制席位及頻率
評(píng)論
0/150
提交評(píng)論