【正文】
(例如 等級(jí)為6,則玩家起始分?jǐn)?shù)是13分;每吃進(jìn)一個(gè)食物加6分;每吃進(jìn)一個(gè)炸彈減12分) 游戲運(yùn)行之后會(huì)在所在目錄下創(chuàng)建一個(gè)的文件,存放得分記錄。) ( 每個(gè)獎(jiǎng)品分?jǐn)?shù)的 初始值是20~50之間的隨機(jī)數(shù),當(dāng)獎(jiǎng)品出現(xiàn)后獎(jiǎng)勵(lì)的分?jǐn)?shù)就會(huì)不斷減少。 ( 當(dāng)蛇頭和蛇身任一節(jié)重合時(shí),游戲結(jié)束(2)地圖: 藍(lán)色方格--食物 (吃進(jìn)食物后,蛇身長度增加一節(jié)); 紅色方格--炸彈; 淡紫色方格--蛇頭; 亮綠色長條--蛇身。 Call ScoreSort(FileNum) For i = 0 To 9 Get FileNum, , Record(i) Record(i).Score, i Record(i).Name, i Next Close FileNum End Sub39。讀入得分記錄 FileNum = FreeFile Open amp。顯示當(dāng)前剩余的 獎(jiǎng)勵(lì)分?jǐn)?shù) End Sub《排行榜窗體 frmScoreList 代碼》——Private Record(9) As theRecord 39。在地圖上用 隨機(jī)顏色繪畫 獎(jiǎng)品 = FULL_COLOR tempColor 39。當(dāng)獎(jiǎng)勵(lì)的分?jǐn)?shù)減少到零,就擦除獎(jiǎng)品 Exit Sub End If tempColor = Int(Rnd() * (FULL_COLOR + 1)) 39。 RECORD_FILE_NAME For Random As FileNum Len = Len(Record(0)) For i = 0 To 9 Record(i).Score = Val((i)) Record(i).Name = (i) Put FileNum, , Record(i) Next Close FileNumEnd Sub39。刷新 記錄文件的內(nèi)容 End If End Sub39。 是否同意?, vbQuestion Or vbYesNo, 輸入玩家名稱) If Ans = vbYes Then Name = Left(Name, 15) End If Loop Until Len(RTrim(Name)) = 15 And Len(RTrim(Name)) 0 39。 Left(Name, 15) amp。 ” amp。 你輸入的 “ amp。 請輸入你的名稱(不超過15個(gè)字符), 進(jìn)入前10名!) If Len(Name) = 0 Then MsgBox 你取消了 Top 10 得分登記, vbInformation Exit Sub End If If Len(RTrim(Name)) 15 Then Ans = MsgBox(玩家名稱的長度不能超過15個(gè)字符! amp。 名 amp。循環(huán),設(shè)置玩家玩家名稱 Name = InputBox(你的得分是第 amp。判斷得分是否進(jìn)入前十名 Dim Ans As Integer FileNum = FreeFile Set list = 39。pos 排名 Dim Name As String 39。在地圖上擦除舊蛇尾,繪畫空白地 End If End If = TrueEnd Sub39。如果蛇頭的新坐標(biāo)與舊蛇尾的坐標(biāo)重合,就不用在舊蛇尾的坐標(biāo)下 繪畫空白地的圖案(因?yàn)樵摼W(wǎng)格屬性已經(jīng)是 蛇頭,而不是空白地) If Not (NewHead_X = And NewHead_Y = ) Then MapProperty(, ) = MAP_EMPTY 39。蛇身長度 + 1 Else 39。最后才設(shè)定新的 蛇尾坐標(biāo)(關(guān)鍵字“Preserve”的作用是:保留原數(shù)組的內(nèi)容) Snake_P1(UBound(Snake_P1)) = OldTail 39。判斷是否需要 增加蛇身長度 If blnAddLength Then 39。否則會(huì)出錯(cuò) For i = (UBound(Snake_P1)) To 1 Step 1 Snake_P1(i) = Snake_P1(i 1) Next 39。標(biāo)記蛇頭新坐標(biāo)下的地圖格屬性為 玩家蛇身 39。在地圖上 擦除舊的的蛇頭 (NewHead_X * MAP_SCALE, NewHead_Y * MAP_SCALE)Step(MAP_SCALE, MAP_SCALE), , BF 39。用于在更新蛇身坐標(biāo)之前,保存原來的 蛇尾坐標(biāo) OldTail = Snake_P1(UBound(Snake_P1)) 39。標(biāo)記地圖格的屬性為 空白地 = False = False End If End Sub 本文來自編程入門網(wǎng)():VB 貪吃蛇 單人版游戲(四)文章來源: CSDN 文章作者: Bugs1984 刷新蛇身坐標(biāo),更新 地圖網(wǎng)格屬性 以及畫面 39。清除獎(jiǎng)品 ( * MAP_SCALE, * MAP_SCALE)Step(MAP_SCALE, MAP_SCALE), Map_Empty_Color, BF 39。 = True = True 39。顯示當(dāng)前剩余的 獎(jiǎng)勵(lì)分?jǐn)?shù) * MAP_SCALE, * MAP_SCALE, MAP_SCALE, MAP_SCALE 39。隨機(jī)設(shè)定 起始的獎(jiǎng)勵(lì)分?jǐn)?shù) = FULL_COLOR tempColor 39。產(chǎn)生隨機(jī)顏色 ( * MAP_SCALE, * MAP_SCALE)Step(MAP_SCALE, MAP_SCALE), tempColor, BF 39。記錄獎(jiǎng)品的坐標(biāo) MapProperty(, ) = MAP_PRIZE 39。顯示獎(jiǎng)品 39。在地圖上顯示 獎(jiǎng)品 和 獎(jiǎng)勵(lì)分?jǐn)?shù)39。標(biāo)記地圖格的屬性為 炸彈 ( * MAP_SCALE, * MAP_SCALE)Step(MAP_SCALE, MAP_SCALE), Map_Bomb_Color, BF 39。增加地圖上的 炸彈Private Sub AddBomb() Dim tempBomb As thePosition 39。標(biāo)記地圖格的屬性為 食物 ( * MAP_SCALE, * MAP_SCALE)Step(MAP_SCALE, MAP_SCALE), Map_Food_Color, BF 39。增加地圖上的 食物Private Sub AddFood() Dim tempFood As thePosition 39。重新累計(jì) 吃進(jìn)的物品數(shù) 39。記錄(累加)當(dāng)前吃進(jìn)的物品 39。參數(shù):AddScore--增加的分?jǐn)?shù)(正數(shù)=加分,負(fù)數(shù)=扣分)39。根據(jù)級(jí)別,設(shè)置速度End SubPrivate Sub tmrMove_Timer() Call PlayerMoveEnd Sub39。如果游戲正在進(jìn)行,則發(fā)送“暫?!卑存I事件,暫停游戲 Ans = MsgBox(游戲尚未結(jié)束,確定要退出嗎?, vbQuestion Or vbYesNo Or vbDefaultButton2) If Ans = vbYes Then End Else Cancel = True End If Else End End IfEnd Sub39。39。刷新地圖 上的蛇身圖像39。獎(jiǎng)品 Call ChangeScore(PrizeRemain, False) Call ShowPrize(False) 39??鄯? Call AddBomb 39。統(tǒng)計(jì)玩家吃進(jìn)的 炸彈數(shù)量 = 39。補(bǔ)充地圖上的 食物 Case MAP_BOMB 39。顯示總共吃進(jìn)的 食物數(shù)量 Call ChangeScore(AddScorePerFood, True) 39。增加蛇身長度 = + 1 39。 If Not ( = Snake_P1(UBound(Snake_P1)).X And = Snake_P1(UBound(Snake_P1)).Y) Then Call GameOver Exit Sub End If Case MAP_FOOD 39。蛇身 39??瞻椎? 39。非 穿墻模式的移動(dòng)代碼未設(shè)置 End If 39。找出蛇頭的新坐標(biāo) = Snake_P1(0).X + = Snake_P1(0).Y + If blnThroughWall Then 39。臨時(shí)存放蛇頭的新坐標(biāo) Dim blnAddLengh As Boolean 39。準(zhǔn)備新一輪游戲End Sub39。 , vbInformation, GAME OVER Call CheckRecord() 39。你的得分是: amp。默認(rèn)級(jí)別:6 = curLevel End Sub39。暫停Timer事件,等到本次移動(dòng)操作全部完成后(即sub RefreshSnake(...)過程執(zhí)行完畢),再啟動(dòng)Timer Call PlayerMove End Sub [返回]本文來自編程入門網(wǎng)():VB 貪吃蛇 單人版游戲(三) 文章來源: CSDN 文章作者: Bugs1984 Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer) blnOnKeyEvents = True 39。當(dāng)蛇以 水平 方向移動(dòng)時(shí),LF 和 RT 按鍵無效 Case KEY_LF blnOnKeyEvents = False If = 0 Then = 1 = 0 End If Case KEY_RT blnOnKeyEvents = False If = 0 Then = 1 = 0 End If 39。按“Numpad 5”鍵--暫停/繼續(xù) If KeyCode = KEY_PAUSE Then blnPause = Not blnPause = blnPause = Not blnPause Exit Sub End If If blnPause Then Exit Sub 39。以下情況(游戲結(jié)束、游戲還沒有開始、禁用擊鍵事件)不接收按鍵操作。顯示得分榜Private Sub cmdShowScoreList_Click() If blnPause = False Then Call Form_KeyDown(KEY_PAUSE, 0) 39。放置炸彈 For i = 1 To BombCount_AtOneTime Call AddBomb Next = False = = = = False = False 39。使用蛇頭顏色 重新繪畫蛇頭 (Snake_P1(0).X * MAP_SCALE, Snake_P1(0).Y * MAP_SCALE)Step(MAP_SCALE, MAP_SCALE), HEAD_COLOR, BF 39。設(shè)定蛇身各段的起始位置