vb課程設計報告---用vb語句實現(xiàn)貪吃蛇游戲_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  能源與動力工程學院</b></p><p><b>  VB課程設計報告</b></p><p>  題目1: 貪吃蛇游戲 </p><p>  題目2: 列車時刻查詢

2、 </p><p>  指導老師: </p><p>  學生姓名: 學 號: </p><p>  專 業(yè): </p&

3、gt;<p>  班 級: </p><p>  2011年3月20日</p><p><b>  貪 吃 蛇 游 戲</b></p><p>  第一章 課程設計目的</p&

4、gt;<p>  隨著學習內容的不斷增多,各專業(yè)知識也不斷增長,為了有效地提高學習效率,更有效的掌握所學知識,利用所學知識設計貪吃蛇游戲,熟練運用專業(yè)知識。本課題主要鍛煉了對于控件數(shù)組,繪圖,鍵盤事件處理,文本文件的讀寫,多模塊程序設計,定時器控件,菜單的使用等知識的運用能力。</p><p>  第二章 課程設計的要求</p><p><b>  題目介紹:<

5、;/b></p><p>  “貪吃蛇”是一款很流行的電子游戲。一條蛇在棋盤狀的格子上爬行,由鍵盤控制其轉彎;格子上隨機地出現(xiàn)5個數(shù)字(1-5),當蛇的頭部碰到數(shù)字時會將數(shù)字“吃掉”,蛇的身體會變長。當蛇的頭撞到障礙物(深色部分)或碰到自己身體時,游戲結束。游戲結束時,蛇身越長得分越高。</p><p><b>  課程設計功能要求:</b></p>

6、<p> ?。?)程序啟動界面由20*20個方格構成。開始時,蛇靜止不動,蛇身由一串共5個圓圈表示,身體黃色,代表頭部的圓圈為紅色,且有兩只綠眼睛。</p><p>  (2)按回車鍵開始游戲,蛇自動向前爬行,用戶使用“←↑↓→”4個方向鍵使其拐彎不至于碰到障礙物或自己。蛇只能向前走或向左右轉90度的彎,不能后退。吃掉一個數(shù)字后,蛇的身體的幅度與數(shù)字的大小相同。例如,吃掉“3”后,蛇身伸長3個圓圈。

7、蛇身體的伸長不是一下子完成的,而是在吃掉數(shù)字后一邊爬行一邊伸長的,這樣是為了避免蛇的“尾巴”突然伸長撞到障礙物或蛇自己。</p><p>  (3)5個數(shù)字(1 -5)的位置是隨機的,互不重疊的,且不能出現(xiàn)在障礙物和蛇的身上。當蛇吃掉一個數(shù)字時,同樣的數(shù)字隨機的出現(xiàn)在其他位置上,即格子上總保持有“1-5”5個數(shù)字。</p><p> ?。?)游戲進行時,窗口標題欄上顯示出已使用的時間和得分

8、,得分是當前蛇身體的長度。使用回車鍵可以暫?;蚶^續(xù)游戲。</p><p> ?。?)蛇在爬行到邊界時,如果未遇到障礙物,會從一側爬出再從對面一側爬入。如果運行過程中,其頭部碰到障礙物或自己的身體,則被撞死,游戲結束。如果該用戶的成績超過了記錄成績,則顯示對話框,提示輸入用戶名,以供記錄成績由“排行榜”功能顯示。</p><p> ?。?)通過程序菜單的“開始/暫停(回車)”命令,也可以暫停

9、或繼續(xù)游戲(與回車鍵功能相同)。選擇“新開局”菜單項可以從頭開始游戲。</p><p> ?。?)選擇“設置”菜單命令,打開設置對話框。在該對話框中可以選擇不同的障礙物形狀,也可以指定背景和障礙物的顏色。單擊“設置”對話框底部的“背景顏色”和“障礙物顏色”后面的顏色區(qū),彈出“顏色”公共對話框來指定顏色。設置完畢后,單擊“確定”按鈕關閉“設置”對話框,游戲將按所選形狀從頭開始游戲。下一次啟動程序,自動使用上次的設置

10、。</p><p>  (8)選擇“排行榜”菜單命令打開“排行榜”對話框,顯示每種障礙物下的最好成績。選擇“清除所有記錄”按鈕可將記錄清零。</p><p>  第三章 課程設計報告內容</p><p><b>  一.貪吃蛇游戲界面</b></p><p><b>  主窗體界面:</b><

11、/p><p><b>  “幫助”窗體界面:</b></p><p><b>  “設置”窗體界面:</b></p><p>  “排行榜”窗體界面:</p><p><b>  “關于”窗體界面:</b></p><p>  二.貪吃蛇游戲部分代碼<

12、/p><p><b>  主窗體的部分代碼:</b></p><p>  '為所有隨機出現(xiàn)的的數(shù)字定位:</p><p>  Sub ShowNumberAll() </p><p>  Dim i As Integer, j As Integer</p><

13、;p>  Dim k As Integer, m As Integer, l As Integer</p><p>  Dim f As Boolean</p><p><b>  Randomize</b></p><p>  For m = 1 To 5</p><p><b>  Do</b&

14、gt;</p><p>  i = Int(Rnd * 20)</p><p>  j = Int(Rnd * 20)</p><p>  '判斷數(shù)字出現(xiàn)的位置是否合理</p><p><b>  f = True</b></p><p>  For k = 1 To intNum

15、 '判斷是否出現(xiàn)在蛇身上</p><p>  If i = Int(shp(k).Left / GRID) And j = Int(shp(k).Top / GRID) Then</p><p><b>  f = False</b></p><p><b>  Exit For</b>&l

16、t;/p><p><b>  End If</b></p><p><b>  Next</b></p><p>  If f = True Then</p><p>  For k = 1 To m - 1 '判斷是否出現(xiàn)在已有的數(shù)字上</p&g

17、t;<p>  If i * GRID = lblNumber(k).Left And j * GRID = lblNumber(k).Top Then</p><p><b>  f = False</b></p><p><b>  Exit For</b></p><p><b>  End

18、If</b></p><p><b>  Next</b></p><p><b>  End If</b></p><p>  If f = True Then</p><p>  For k = 1 To 20 '判斷是否出現(xiàn)在障礙物

19、上</p><p>  For l = 1 To 20</p><p>  If Maze(j + 1, i + 1, curMaze) = 1 Then</p><p><b>  f = False</b></p><p><b>  Exit For</b></p><p&

20、gt;<b>  End If</b></p><p><b>  Next</b></p><p><b>  Next</b></p><p><b>  End If</b></p><p>  If f = True Then</p>

21、<p><b>  Exit Do</b></p><p><b>  End If</b></p><p><b>  Loop</b></p><p>  AppleX(m) = i</p><p>  AppleY(m) = j</p><

22、p>  lblNumber(m).Left = AppleX(m) * GRID</p><p>  lblNumber(m).Top = AppleY(m) * GRID</p><p><b>  Next</b></p><p><b>  End Sub</b></p><p>  &

23、#39;為指定的數(shù)字定位:</p><p>  Sub ShowNumber(m As Integer) </p><p>  Dim i As Integer, j As Integer</p><p>  Dim k As Integer, l As Integer</p><p>  Dim f A

24、s Boolean</p><p><b>  Randomize</b></p><p><b>  Do</b></p><p>  i = Int(Rnd * 20)</p><p>  j = Int(Rnd * 20)</p><p>  ' 判斷

25、數(shù)字出現(xiàn)的位置是否合適</p><p><b>  f = True</b></p><p>  For k = 1 To intNum</p><p>  If i = Int(shp(k).Left / GRID) And j = Int(shp(k).Top / GRID) Then</p><p><b&g

26、t;  f = False</b></p><p><b>  Exit For</b></p><p><b>  End If</b></p><p><b>  Next</b></p><p>  If f = True Then</p>&l

27、t;p>  For k = 1 To 5</p><p>  If i * GRID = lblNumber(k).Left And j * GRID = lblNumber(k).Top Then</p><p><b>  f = False</b></p><p><b>  Exit For</b></

28、p><p><b>  End If</b></p><p><b>  Next</b></p><p><b>  End If</b></p><p>  If f = True Then</p><p>  For k = 1 To 20

29、 '判斷是否出現(xiàn)在障礙物上</p><p>  For l = 1 To 20</p><p>  If Maze(j + 1, i + 1, curMaze) = 1 Then</p><p><b>  f = False</b></p><p><b>  Exit

30、For</b></p><p><b>  End If</b></p><p><b>  Next</b></p><p><b>  Next</b></p><p><b>  End If</b></p><p&g

31、t;  If f = True Then</p><p><b>  Exit Do</b></p><p><b>  End If</b></p><p><b>  Loop</b></p><p>  AppleX(m) = i</p><p>

32、  AppleY(m) = j</p><p>  lblNumber(m).Left = AppleX(m) * GRID</p><p>  lblNumber(m).Top = AppleY(m) * GRID</p><p><b>  End Sub</b></p><p><b>  '畫蛇

33、:</b></p><p>  Private Sub DrawSnake() </p><p>  Dim i As Integer</p><p>  intNum = 5 '初始段數(shù)</p><p>  ReDim intDirect(5)</p><p> 

34、 intDirect(1) = MazeInfo(3, curMaze)</p><p>  shp(1).Left = GRID * (MazeInfo(2, curMaze) - 1) '蛇頭位置</p><p>  shp(1).Top = GRID * (MazeInfo(1, curMaze) - 1)</p><p>  For i =

35、2 To intNum '加載新節(jié)點并確定其相對于頭部的位置</p><p>  Load shp(i)</p><p>  shp(i).FillColor = vbYellow</p><p>  shp(i).Left = shp(i - 1).Left</p><p

36、>  shp(i).Top = shp(i - 1).Top</p><p>  Select Case MazeInfo(3, curMaze)</p><p>  Case enmRight</p><p>  shp(i).Left = shp(i - 1).Left - GRID</p><p>  Case enmLeft&l

37、t;/p><p>  shp(i).Left = shp(i - 1).Left + GRID</p><p>  Case enmDown</p><p>  shp(i).Top = shp(i - 1).Top - GRID</p><p>  Case enmUp</p><p>  shp(i).Top = sh

38、p(i - 1).Top - GRID</p><p>  End Select</p><p>  shp(i).Visible = True</p><p>  intDirect(i) = MazeInfo(3, curMaze) '默認運動方向</p><p><b>  Next&l

39、t;/b></p><p>  Call DrawEye</p><p><b>  End Sub</b></p><p>  Private Sub DrawMaze()</p><p>  Dim i As Integer, j As Integer</p><p>  For i =

40、 1 To 20</p><p>  For j = 1 To 20</p><p>  If Maze(i, j, curMaze) = 1 Then</p><p>  Pic.Line ((j - 1) * GRID + 2, (i - 1) * GRID + 2)-(j * GRID - 2, i * GRID - 2), lngMazeColor, BF&

41、lt;/p><p><b>  End If</b></p><p><b>  Next</b></p><p><b>  Next</b></p><p><b>  End Sub</b></p><p>  第四章 總結及個人

42、心得體會</p><p><b>  存在的不足:</b></p><p>  在玩此游戲時,一不小心就可能將蛇“撞死”,本程序不能夠添加“多條命”,即不能夠允許蛇撞死3次或5次。</p><p><b>  心得體會:</b></p><p>  課程設計是培養(yǎng)學生綜合運用所學知識,發(fā)現(xiàn),提出,分

43、析,和解決實際問題,鍛煉時間能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程。</p><p>  通過這幾周的vb課程設計,我學到了很多很多的東西,同時不僅可以鞏固了以前學過的知識,而且學到了很多書本上所沒有學到的知識。通過這次課程設計是我懂得了理論與實踐相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨

44、立思考的能力。在設計的過程中遇到問題,可以說是困難重重,這畢竟是自己第一次做一個程序,難免會遇到各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解的不夠深刻,掌握的不夠牢固。通過這次課程設計之后,一定把以前所學的知識重新溫故。</p><p>  程序設計師需要大量的時間去動手練習才能體會到她的內涵,同時還需要用心去投入,時間和感情花下去之后,的確慢慢的感受到有所收獲了,我也收獲到了一

45、點點的樂趣。可能是一個良性循環(huán)的開始吧,相信以后會做的更好的。</p><p>  這次課程設計終于順利完成了,在設計中遇到了很多編程問題,但在老師和同學的幫助下終于解決。在此向老師還有給過我?guī)椭耐瑢W表示衷心的感謝!</p><p><b>  第五章 參考書目:</b></p><p>  Visual Basic程序設計教程(6.0版)&

46、lt;/p><p>  Visual Basic</p><p>  《VB程序設計》課程設計任務書</p><p><b>  題目: </b></p><p>  用VB語句實現(xiàn)列車時刻查詢 </p><p><b>  任務

47、與要求:</b></p><p>  程序能夠實現(xiàn)列車時刻查詢,保證軟件可正常運行。 </p><p>  時間:2011 年 3 月 13 日 至 2011 年 3 月 18日 共 1 周</p><p>  學生姓名:

48、 馬帥 學 號: 1008320126 </p><p>  專業(yè): 武器系統(tǒng)與發(fā)射工程</p><p>  指導教師: 張小兵</p><p>  2011年3月 20日</p><p>  列 車 時 刻 查 詢</p><p>  第一章 課程設計目

49、的</p><p>  根據(jù)課堂講授內容,學生做相應的自主練習,消化課堂所講解的內容;通過做課程設計積累調試vb程序的經驗;通過完成課程設計中的編程題,逐漸培養(yǎng)學生的編程能力、用計算機解決實際問題的能力。本程序設計主要鍛煉了對于讀文本文件,動態(tài)數(shù)組,字符串處理,列表框控件的使用,多行文本控件的使用等知識的實際運用能力。</p><p>  第二章 課程設計的要求</p>&l

50、t;p><b>  題目介紹:</b></p><p>  坐火車是人們出行的重要交通方式,列車的起點站,終點站和發(fā)車時間,到達時間以及沿途經停各站的站名,停車發(fā)車時刻是人們非常關心的內容。本題目要求編制一個能夠方便地查詢上述信息的實用程序。</p><p><b>  課程設計功能要求:</b></p><p> 

51、 程序啟動后,左邊的列表框中顯示全部車次。單擊其中一項,在窗口右上方的4個文本框中顯示此車站的起點站,終點站和發(fā)車,到達時刻;在右下方的文本框(不能使用列表框)中顯示此次車沿途??康乃熊囌炯跋鄳牡秸竞桶l(fā)車時刻。</p><p>  在“經停車站”組合框中選擇或輸入一個站名然后回車,列表框中只列出經過該車站的車次;單擊列表框下方的“顯示全部車次”按鈕,列表框中重新列出所有車次。</p><p

52、>  “經停站及時刻”文本框中各車站所對應的站名,到站時刻,發(fā)車時刻應縱向對齊,特別是時間,必須通過冒號對齊。</p><p>  本題目提供了兩個數(shù)據(jù)文件:content.txt和detail.txt,程序用到的車次信息均來自于這兩個文件。如果本程序啟動時在可執(zhí)行文件所在的文件夾下未找到其中任何一個文件,則顯示出錯信息并自動關閉程序。要求編程時不能改變這兩個文件的存儲格式。</p><

53、p>  第三章 課程設計報告內容</p><p>  列車時刻查詢部分代碼</p><p>  我在設計這個程序時主要遇到兩個問題。</p><p>  第一個大的問題就是怎樣才能實現(xiàn)查詢經過站點和顯示車次途徑車站和,經學長的指點后,通過以下代碼就可以實現(xiàn)了:</p><p>  Private Sub Com1_Click()

54、 '**查詢經過站點</p><p>  Dim n As Integer</p><p>  List1.Clear: List2.Clear '清除界面</p><p>  For i = 0 To k</p><p>  If str(i

55、) = Cob1.Text Then</p><p>  For j = 0 To num - 1</p><p>  If i < int1(j + 1) And i > int1(j) Then '判斷經過站的車次區(qū)間</p><p>  List1.List(n) = str1(j)</p><p><b

56、>  n = n + 1</b></p><p><b>  End If</b></p><p><b>  Next j</b></p><p><b>  End If</b></p><p><b>  Next i</b><

57、;/p><p><b>  End Sub</b></p><p>  Private Sub Form_Activate()</p><p>  Text1.SetFocus '起點站獲得焦點</p><p><b>  End Sub&l

58、t;/b></p><p>  Private Sub List1_Click() '顯示車次途徑車站和時刻</p><p>  Dim m As Integer, b As String, n As Integer, p As Integer</p><p>  b = Li

59、st1.Text: j = 0</p><p>  List2.Clear</p><p>  For i = 0 To num - 1</p><p>  If b = str1(i) Then</p><p>  Text1.Text = str2(i): Text2.Text = str3(i) '

60、將起點站,終點站,發(fā)車時刻,到達時刻添入文本框中</p><p>  Text3.Text = str4(i): Text4.Text = str5(i)</p><p><b>  End If</b></p><p><b>  End Sub</b></p><p>  我所遇到的二個問題就是

61、怎樣才能讓各項對齊,在學長的幫助下并給我提供了一段非常重要的代碼“List2.List(j) = str(m) + Space(p) + RTrim(Format(str(m + 1), "@@@@@@@@@")) + RTrim(Format(str(m + 2), "@@@@@@@@@@@@@@"))”,和一些指點,以下代碼得以實現(xiàn):</p><p>  If List

62、1.ListIndex = List1.ListCount - 1 Then n = k Else n = int1(i + 1)</p><p>  For m = int1(i) + 2 To n - 3 Step 3</p><p>  Select Case Len(str(m)) '判斷站名長度以便list

63、2中各項對齊</p><p>  Case Is = 2: p = 5</p><p>  Case Is = 3: p = 3</p><p>  Case Is = 4: p = 1</p><p>  End Select</p><p>  List2.List(j) = str(m) + Space(p) +

64、 RTrim(Format(str(m + 1), "@@@@@@@@@")) + RTrim(Format(str(m + 2), "@@@@@@@@@@@@@@"))</p><p><b>  '對齊各項</b></p><p><b>  j = j + 1</b></p>&

65、lt;p><b>  Next m</b></p><p><b>  End If</b></p><p><b>  Next i</b></p><p><b>  End Sub</b></p><p>  列車時刻查詢界面設計:</p

66、><p>  一、系統(tǒng)登陸界面設計</p><p><b>  二、查詢界面設計</b></p><p>  第四章 總結及個人心得體會</p><p>  綜合分析,本程設計有四個難點:</p><p>  程序顯示的信息都是從content.txt和detail.txt兩個文件中讀取的。如果列車時

67、刻沒有變化,只需修改這兩個文件的內容即可,不必改動程序。</p><p>  Content.txt文件保存了各車次的概要信息,包括車次名,起點站,終點站,發(fā)車時刻,到達時刻,一個車次占一行。</p><p>  Detail.txt文件中保存了所有車次停靠站的詳細信息。每個車次信息的保存方式都是相同的:首先一個星號“*”</p><p>  為一行:然后是車次名為

68、一行:在后是??空镜恼久偷竭_,發(fā)車時刻,每個站為一行。起點站的“到達時刻”和終點站的“發(fā)車時刻”均為“--”。因為每次車??空镜臄?shù)目不同,在讀取detail.txt文件時,必須正確判斷星號“*”的位置。</p><p>  4. 程序應在啟動時將所有信息從文件讀入動態(tài)數(shù)組中,從而不必在查詢過程中頻繁地讀取文件影響查詢速度。</p><p><b>  存在的不足:</b&

69、gt;</p><p>  只能夠查詢信息,不能夠擴充程序使之對列車信息進行修改,添加和刪除操作。</p><p><b>  心得及體會:</b></p><p>  通過這幾周的vb課程設計,我學到了很多很多的東西,同時不僅可以鞏固了以前學過的知識,而且學到了很多書本上所沒有學到的知識。通過這次課程設計是我懂得了理論與實踐相結合是很重要的,

70、只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。</p><p>  在設計的過程中遇到問題,可以說是困難重重,這畢竟是自己第一次做一個程序,難免會遇到各種各樣的問題,同時在設計的過程中發(fā)現(xiàn)了自己的不足之處,對以前所學過的知識理解的不夠深刻,掌握的不夠牢固。通過這次課程設計之后,一定把以前所學的知識重新溫故。<

71、/p><p>  程序設計師需要大量的時間去動手練習才能體會到她的內涵,同時還需要用心去投入,時間和感情花下去之后,的確慢慢的感受到有所收獲了,我也收獲到了一點點的樂趣??赡苁且粋€良性循環(huán)的開始吧,相信以后會做的更好的。</p><p><b>  第五章 參考書目:</b></p><p>  Visual Basic程序設計教程(6.0版)&l

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論