版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《WEB應(yīng)用與開發(fā)》</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 實(shí)驗(yàn)題目: 貪吃蛇 </p><p> 專 業(yè): 信息管理與信息系統(tǒng) </p><p> 學(xué)生姓名: </p
2、><p> 班級(jí)學(xué)號(hào): </p><p><b> 分組成員: </b></p><p> 指導(dǎo)教師: </p><p> 2012 年 6月8 日 </p><p> 《WEB應(yīng)用與開發(fā)》課程設(shè)計(jì)報(bào)告</p><p&g
3、t;<b> XXXX</b></p><p><b> 一、設(shè)計(jì)時(shí)間</b></p><p> 2012年6月4日-----6月8日</p><p><b> 二、設(shè)計(jì)地點(diǎn)</b></p><p> 信息科學(xué)與工程學(xué)院機(jī)房(新校區(qū)510機(jī)房)</p>
4、<p><b> 三、設(shè)計(jì)目的</b></p><p> 綜合運(yùn)用在校期間所學(xué)理論知識(shí)和技能,設(shè)計(jì)開發(fā)貪吃蛇游戲,使自己熟悉應(yīng)用系統(tǒng)的開發(fā)過(guò)程,培養(yǎng)獨(dú)立思考能力,檢驗(yàn)學(xué)習(xí)效果和動(dòng)手能力,提高工程實(shí)踐能力。</p><p><b> 四、設(shè)計(jì)小組成員</b></p><p><b> XXXXX&
5、lt;/b></p><p><b> 五、指導(dǎo)老師</b></p><p> XXXXXXXXXX</p><p><b> 六、設(shè)計(jì)課題</b></p><p> 經(jīng)過(guò)小組組員的討論,決定選取選題8、貪吃蛇;</p><p> 理由:1、整個(gè)系統(tǒng)簡(jiǎn)潔明了,
6、適于初學(xué)者;</p><p> 2、界面美觀、功能較齊全;</p><p> 3、操作簡(jiǎn)單、娛樂(lè)性強(qiáng)。</p><p> 七、基本思路及關(guān)鍵問(wèn)題的解決方法;</p><p> 本系統(tǒng)主要是完成貪吃蛇游戲的基本操作。用戶可以自己練習(xí)和娛樂(lè)。本系統(tǒng)需要滿足以下幾點(diǎn)要求:</p><p> (1) 利用方向鍵來(lái)改變
7、蛇的運(yùn)行方向。 </p><p> (2) 空格鍵暫?;蚶^續(xù)游戲,并在隨機(jī)的地方產(chǎn)生食物。 </p><p> (3) 吃到食物就變成新的蛇體,碰到壁或自身則游戲結(jié)束,否則正常運(yùn)行。</p><p><b> 八、算法及流程圖</b></p><p> 九、調(diào)試過(guò)程中出現(xiàn)的問(wèn)題及相應(yīng)解決辦法;</p>
8、<p> 在蛇的移動(dòng)的表示上也不太清楚,找了一些資料后發(fā)現(xiàn)蛇身由一串基本圖形構(gòu)成,每過(guò)一秒,檢測(cè)前面是什么,如果是空的,那么把頭畫成普通身體的樣子,再在前方(或側(cè)面,如果轉(zhuǎn)彎的話)再畫一個(gè)頭,并將其坐標(biāo)記入數(shù)組,數(shù)組要足夠大,再把尾巴畫成背景色;如果前面是食物,尾巴就不刪除,這里的難點(diǎn)是數(shù)組里的操作和坐標(biāo)的表示:把頭添在最后一個(gè)元素,把第一個(gè)元素提取(也就是尾巴)。</p><p> 最后在排行
9、榜和存檔的讀取問(wèn)題上遇到了困難,在同學(xué)的幫助下解決了這個(gè)難題。</p><p> 十、課程設(shè)計(jì)心得體會(huì);</p><p> 這次java課程設(shè)計(jì)讓我重新認(rèn)識(shí)到了編程的藝術(shù),在學(xué)習(xí)、使用Java的過(guò)程中,通過(guò)與以前所學(xué)的C/C++內(nèi)容的對(duì)比,讓我進(jìn)一步鞏固了C/C++的知識(shí),并更進(jìn)一步在總體上讓我對(duì)編程語(yǔ)言有了更新的認(rèn)識(shí)。在不斷的設(shè)計(jì)、調(diào)試、修改的過(guò)程當(dāng)中,我對(duì)程序的設(shè)計(jì)與構(gòu)架在整體上有
10、了長(zhǎng)足的進(jìn)步。</p><p> 在做java課程設(shè)計(jì)以前,我對(duì)Java游戲開發(fā)只是停留在理論知識(shí)的水平上,是“紙上談兵”,缺乏實(shí)際的軟件開發(fā)經(jīng)驗(yàn)。這次通過(guò)做java課程設(shè)計(jì),我完成了貪吃蛇游戲的軟件開發(fā)任務(wù)。在整個(gè)開發(fā)過(guò)程中遇到了很多問(wèn)題,如蛇的移動(dòng)的表示、排行榜和存檔的讀取問(wèn)題、屏幕太閃爍的問(wèn)題、圖形化界面的設(shè)計(jì)問(wèn)題,但最終都被我一一解決</p><p> (本人有完整的項(xiàng)目需要的
11、話發(fā)郵件給我491990141@qq.com)</p><p> 十一、源程序(每句語(yǔ)言要有詳細(xì)解釋);</p><p> <p class=MsoNormal><b style='mso-bidi-font-weight:normal'><span</p><p> style='font-size:18
12、.0pt;font-family:華文楷體;color:#339966'>貪吃蛇<span lang=EN-US></p><p> v.10 0906601-01</span>、<span lang=EN-US>07</span>、<span lang=EN-US>08<o:p></o:p></span&g
13、t;</span></b></p></p><p> <html><head></p><p> <title>貪吃蛇 v.10 0906601-01、07、08</title></p><p><b> <style></b></p&g
14、t;<p><b> body{</b></p><p> font-size:9pt;</p><p><b> }</b></p><p><b> table{</b></p><p> border-collapse: collapse;<
15、/p><p> border:solid #333 1px;</p><p><b> }</b></p><p><b> td{</b></p><p> height: 10px;</p><p> width: 10px;</p><p>
16、; font-size: 0px;</p><p><b> }</b></p><p><b> .filled{</b></p><p> background-color:blue;</p><p><b> }</b></p><p>
17、<b> </style></b></p><p><b> </head></b></p><p><b> <script></b></p><p> function $(id){return document.getElementById(id);}
18、</p><p><b> //貪吃蛇類</b></p><p> var Snake = {</p><p> tbl: null,</p><p><b> /**</b></p><p> * body: 蛇身,數(shù)組放蛇的每一節(jié),</p><
19、;p> * 數(shù)據(jù)結(jié)構(gòu){x:x0, y:y0, color:color0},</p><p> * x,y表示坐標(biāo),color表示顏色</p><p><b> **/</b></p><p><b> body: [],</b></p><p> //當(dāng)前移動(dòng)的方向,取值0,1,2,
20、3, 分別表示向上,右,下,左, 按鍵盤方向鍵可以改變它</p><p> direction: 0,</p><p><b> //定時(shí)器</b></p><p> timer: null,</p><p><b> //速度</b></p><p> speed
21、: 250,</p><p><b> //是否已經(jīng)暫停</b></p><p> paused: true,</p><p><b> //行數(shù)</b></p><p> rowCount: 30,</p><p><b> //列數(shù)</b>
22、</p><p> colCount: 30,</p><p><b> //初始化</b></p><p> init: function(){</p><p> var colors = ['red','orange','yellow','green
23、39;,'blue','purple','#ccc'];</p><p> this.tbl = $("main");</p><p> var x = 0;</p><p> var y = 0;</p><p> var colorIndex = 0;</p
24、><p> //產(chǎn)生初始移動(dòng)方向</p><p> this.direction = Math.floor(Math.random()*4);</p><p><b> //構(gòu)造table</b></p><p> for(var row=0;row<this.rowCount;row++){</p>
25、;<p> var tr=this.tbl.insertRow(-1);</p><p> for(var col=0;col<this.colCount;col++) {</p><p> var td=tr.insertCell(-1);</p><p><b> }</b></p><p&g
26、t;<b> }</b></p><p> //產(chǎn)生20個(gè)松散節(jié)點(diǎn)</p><p> for(var i=0; i<10; i++){</p><p> x = Math.floor(Math.random()*this.colCount);</p><p> y = Math.floor(Math.ra
27、ndom()*this.rowCount);</p><p> colorIndex = Math.floor(Math.random()*7);</p><p> if(!this.isCellFilled(x,y)){</p><p> this.tbl.rows[y].cells[x].style.backgroundColor = colors[col
28、orIndex];</p><p><b> }</b></p><p><b> }</b></p><p><b> //產(chǎn)生蛇頭</b></p><p> while(true){</p><p> x = Math.floor(Math
29、.random()*this.colCount);</p><p> y = Math.floor(Math.random()*this.rowCount);</p><p> if(!this.isCellFilled(x,y)){</p><p> this.tbl.rows[y].cells[x].style.backgroundColor = &quo
30、t;black";</p><p> this.body.push({x:x,y:y,color:'black'});</p><p><b> break;</b></p><p><b> }</b></p><p><b> }</b>&
31、lt;/p><p> this.paused = true;</p><p><b> //添加鍵盤事件</b></p><p> document.onkeydown= function(e){</p><p> if (!e)e=window.event;</p><p> switch
32、(e.keyCode | e.which | e.charCode){</p><p> case 13: {</p><p> if(Snake.paused){</p><p> Snake.move();</p><p> Snake.paused = false;</p><p><b>
33、}</b></p><p><b> else{</b></p><p> //如果沒(méi)有暫停,則停止移動(dòng)</p><p> Snake.pause();</p><p> Snake.paused = true;</p><p><b> }</b>&l
34、t;/p><p><b> break;</b></p><p><b> }</b></p><p> case 37:{//left</p><p><b> //阻止蛇倒退走</b></p><p> if(Snake.direction==
35、1){</p><p><b> break;</b></p><p><b> }</b></p><p> Snake.direction = 3;</p><p><b> break;</b></p><p><b> }&l
36、t;/b></p><p> case 38:{//up</p><p> //快捷鍵在這里起作用</p><p> if(event.ctrlKey){</p><p> Snake.speedUp(-20);</p><p><b> break;</b></p>
37、<p><b> }</b></p><p> if(Snake.direction==2){//阻止蛇倒退走</p><p><b> break;</b></p><p><b> }</b></p><p> Snake.direction = 0;
38、</p><p><b> break;</b></p><p><b> }</b></p><p> case 39:{//right</p><p> if(Snake.direction==3){//阻止蛇倒退走</p><p><b> brea
39、k;</b></p><p><b> }</b></p><p> Snake.direction = 1;</p><p><b> break;</b></p><p><b> }</b></p><p> case 40:
40、{//down</p><p> if(event.ctrlKey){</p><p> Snake.speedUp(20);</p><p><b> break;</b></p><p><b> }</b></p><p> if(Snake.directio
41、n==0){//阻止蛇倒退走</p><p><b> break;</b></p><p><b> }</b></p><p> Snake.direction = 2;</p><p><b> break;</b></p><p><
42、;b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> },</b></p><p><b> //移動(dòng)</b></p><p> mo
43、ve: function(){</p><p> this.timer = setInterval(function(){</p><p> Snake.erase();</p><p> Snake.moveOneStep();</p><p> Snake.paint();</p><p> }, thi
44、s.speed);</p><p><b> },</b></p><p><b> //移動(dòng)一節(jié)身體</b></p><p> moveOneStep: function(){</p><p> if(this.checkNextStep()==-1){</p><p&
45、gt; clearInterval(this.timer);</p><p> alert("Game over!\nPress Restart to continue.");</p><p><b> return;</b></p><p><b> }</b></p><
46、p> if(this.checkNextStep()==1){</p><p> var _point = this.getNextPos();</p><p> var _x = _point.x;</p><p> var _y = _point.y;</p><p> var _color = this.getColor
47、(_x,_y);</p><p> this.body.unshift({x:_x,y:_y,color:_color});</p><p> //因?yàn)槌粤艘粋€(gè)食物,所以再產(chǎn)生一個(gè)食物</p><p> this.generateDood();</p><p><b> return;</b></p>
48、<p><b> }</b></p><p> //window.status = this.toString();</p><p> var point = this.getNextPos();</p><p> //保留第一節(jié)的顏色</p><p> var color = this.body
49、[0].color;</p><p><b> //顏色向前移動(dòng)</b></p><p> for(var i=0; i<this.body.length-1; i++){</p><p> this.body[i].color = this.body[i+1].color;</p><p><b>
50、; }</b></p><p> //蛇尾減一節(jié), 蛇尾加一節(jié),呈現(xiàn)蛇前進(jìn)的效果</p><p> this.body.pop();</p><p> this.body.unshift({x:point.x,y:point.y,color:color});</p><p> //window.status = this
51、.toString();</p><p><b> },</b></p><p> //探尋下一步將走到什么地方</p><p> pause: function(){</p><p> clearInterval(Snake.timer);</p><p> this.paint();
52、</p><p><b> },</b></p><p> getNextPos: function(){</p><p> var x = this.body[0].x;</p><p> var y = this.body[0].y;</p><p> var color = thi
53、s.body[0].color;</p><p><b> //向上</b></p><p> if(this.direction==0){</p><p><b> y--;</b></p><p><b> }</b></p><p><
54、;b> //向右</b></p><p> else if(this.direction==1){</p><p><b> x++;</b></p><p><b> }</b></p><p><b> //向下</b></p>&
55、lt;p> else if(this.direction==2){</p><p><b> y++;</b></p><p><b> }</b></p><p><b> //向左</b></p><p><b> else{</b>&
56、lt;/p><p><b> x--;</b></p><p><b> }</b></p><p><b> //返回一個(gè)坐標(biāo)</b></p><p> return {x:x,y:y};</p><p><b> },</b&g
57、t;</p><p> //檢查將要移動(dòng)到的下一步是什么</p><p> checkNextStep: function(){</p><p> var point = this.getNextPos();</p><p> var x = point.x;</p><p> var y = point.y
58、;</p><p> if(x<0||x>=this.colCount||y<0||y>=this.rowCount){</p><p> return -1;//觸邊界,游戲結(jié)束</p><p><b> }</b></p><p> for(var i=0; i<this.bod
59、y.length; i++){</p><p> if(this.body[i].x==x&&this.body[i].y==y){</p><p> return -1;//碰到自己的身體,游戲結(jié)束</p><p><b> }</b></p><p><b> }</b>
60、</p><p> if(this.isCellFilled(x,y)){</p><p> return 1;//有東西</p><p><b> }</b></p><p> return 0;//空地</p><p><b> },</b></p>
61、<p><b> //擦除蛇身</b></p><p> erase: function(){</p><p> for(var i=0; i<this.body.length; i++){</p><p> this.eraseDot(this.body[i].x, this.body[i].y);</p&g
62、t;<p><b> }</b></p><p><b> },</b></p><p><b> //繪制蛇身</b></p><p> paint: function(){</p><p> for(var i=0; i<this.body.l
63、ength; i++){</p><p> this.paintDot(this.body[i].x, this.body[i].y,this.body[i].color);</p><p><b> }</b></p><p><b> },</b></p><p><b> /
64、/擦除一節(jié)</b></p><p> eraseDot: function(x,y){</p><p> this.tbl.rows[y].cells[x].style.backgroundColor = "";</p><p><b> },</b></p><p> paint
65、Dot: function(x,y,color){</p><p> this.tbl.rows[y].cells[x].style.backgroundColor = color;</p><p><b> },</b></p><p> //得到一個(gè)坐標(biāo)上的顏色</p><p> getColor: func
66、tion(x,y){</p><p> return this.tbl.rows[y].cells[x].style.backgroundColor;</p><p><b> },</b></p><p><b> //用于調(diào)試</b></p><p> toString: functio
67、n(){</p><p> var str = "";</p><p> for(var i=0; i<this.body.length; i++){</p><p> str += "x:" + this.body[i].x + " y:" + this.body[i].y + "
68、color:" + this.body[i].color + " - ";</p><p><b> }</b></p><p> return str;</p><p><b> },</b></p><p> //檢查一個(gè)坐標(biāo)點(diǎn)有沒(méi)有被填充</p>
69、;<p> isCellFilled: function(x,y){</p><p> if(this.tbl.rows[y].cells[x].style.backgroundColor == ""){</p><p> return false;</p><p><b> }</b></p&g
70、t;<p> return true;</p><p><b> },</b></p><p><b> //重新開始</b></p><p> restart: function(){</p><p> if(this.timer){</p><p>
71、; clearInterval(this.timer);</p><p><b> }</b></p><p> for(var i=0; i<this.rowCount;i++){</p><p> this.tbl.deleteRow(0);</p><p><b> }</b>
72、</p><p> this.body = [];</p><p> this.init();</p><p> this.speed = 250;</p><p><b> },</b></p><p><b> //加速</b></p><p
73、> speedUp: function(time){</p><p> if(!this.paused){</p><p> if(this.speed+time<10||this.speed+time>2000){</p><p><b> return;</b></p><p><b&
74、gt; }</b></p><p> this.speed +=time;</p><p> this.pause();</p><p> this.move();</p><p><b> }</b></p><p><b> },</b></
75、p><p><b> //產(chǎn)生食物。</b></p><p> generateDood: function(){</p><p> var colors = ['red','orange','yellow','green','blue','purple&
76、#39;,'#ccc'];</p><p> var x = Math.floor(Math.random()*this.colCount);</p><p> var y = Math.floor(Math.random()*this.rowCount);</p><p> var colorIndex = Math.floor(Math.r
77、andom()*7);</p><p> if(!this.isCellFilled(x,y)){</p><p> this.tbl.rows[y].cells[x].style.backgroundColor = colors[colorIndex];</p><p><b> }</b></p><p>&l
78、t;b> }</b></p><p><b> };</b></p><p><b> </script></b></p><p> <body onload="Snake.init();"></p><p> <tabl
79、e id="main" border="1" cellspacing="0" cellpadding="0"></table></p><p> <input type="button" id="btn" value="開始/暫停" />點(diǎn)左邊
80、按鈕或按Enter開始/暫停游戲<br /></p><p> <input type="button" id="reset" value="重新開始" /><br /></p><p> <input type="button" id="upSpeed&
81、quot; value="加速" />點(diǎn)左邊按鈕或按Ctrl + ↑加速<br /></p><p> <input type="button" id="downSpeed" value="減速" />點(diǎn)左邊按鈕或按Ctrl + ↓減速</p><p><b> &l
82、t;script></b></p><p> $('btn').onclick = function(){</p><p> if(Snake.paused){</p><p> Snake.move();</p><p> Snake.paused = false;</p><p
83、><b> }</b></p><p><b> else{</b></p><p> Snake.pause();</p><p> Snake.paused = true;</p><p><b> }</b></p><p><
84、;b> };</b></p><p> $("reset").onclick = function(){</p><p> Snake.restart();</p><p> this.blur();</p><p><b> };</b></p><p
85、> $("upSpeed").onclick = function(){</p><p> Snake.speedUp(-20);</p><p><b> };</b></p><p> $("downSpeed").onclick = function(){</p><
86、;p> Snake.speedUp(20);</p><p><b> };</b></p><p><b> </script></b></p><p><b> </body></b></p><p><b> </h
87、tml></b></p><p><b> 參考文獻(xiàn)</b></p><p> [1]夏士兵,錢江.構(gòu)建基于COM+的分布式Web應(yīng)用[J].微型機(jī)與應(yīng)用,2001(6):8-9.</p><p> [2][美]Richard Anderson, Chris Blexrud著,劉福太,張立民,金慧琴,梁發(fā)麥等譯.ASP3
88、高級(jí)編程[M].北京:機(jī)械工業(yè)出版社,2000.408-458.</p><p> [3]耿祥義,張躍平.《JSP實(shí)用教程》. 清華大學(xué)出版社,2003年5月1日:1-354.</p><p> [4]BruceEckel.《JSP編程思想》. 機(jī)械工業(yè)出版社,2003年10月:1-378.</p><p> [5]FLANAGAN.《JSP技術(shù)手冊(cè)》. 中國(guó)
89、電力出版社,2002年6月:1-465.</p><p> [6]孫一林,彭波.《JSP數(shù)據(jù)庫(kù)編程實(shí)例》. 清華大學(xué)出版社,2002年8月:30-210.</p><p> [7]LEE ANNE PHILLIPS.《巧學(xué)活用HTML4》.電子工業(yè)出版社,2004年8月:1-319.</p><p> [8]飛思科技產(chǎn)品研發(fā)中心.《JSP應(yīng)用開發(fā)詳解》.電子工
溫馨提示
- 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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 貪吃蛇課程設(shè)計(jì)報(bào)告
- 貪吃蛇課程設(shè)計(jì)報(bào)告
- 貪吃蛇課程設(shè)計(jì)報(bào)告
- 貪吃蛇課程設(shè)計(jì)
- android貪吃蛇課程設(shè)計(jì)報(bào)告
- java貪吃蛇課程設(shè)計(jì)報(bào)告
- 貪吃蛇課程設(shè)計(jì)
- 貪吃蛇課程設(shè)計(jì)
- 貪吃蛇java課程設(shè)計(jì)--貪吃蛇程序設(shè)計(jì)
- java課程設(shè)計(jì)貪吃蛇
- java課程設(shè)計(jì)--貪吃蛇
- 安卓貪吃蛇課程設(shè)計(jì)報(bào)告
- 安卓貪吃蛇課程設(shè)計(jì)報(bào)告
- 貪吃蛇vc課程設(shè)計(jì)
- java課程設(shè)計(jì)報(bào)告貪吃蛇游戲
- java貪吃蛇游戲 課程設(shè)計(jì)
- java-課程設(shè)計(jì)--貪吃蛇
- c++課程設(shè)計(jì)----貪吃蛇
- c++貪吃蛇課程設(shè)計(jì)
- 貪吃蛇白盒測(cè)試課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論