【正文】
No Or vbDefaultButton2) If Ans = vbYes Then End Else Cancel = True End If Else End End IfEnd Sub39??鄯? Call AddBomb 39。增加蛇身長度 = + 1 39。非 穿墻模式的移動代碼未設(shè)置 End If 39。 , vbInformation, GAME OVER Call CheckRecord() 39。當蛇以 水平 方向移動時,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。放置炸彈 For i = 1 To BombCount_AtOneTime Call AddBomb Next = False = = = = False = False 39。每吃進一個 炸彈,所扣掉的分數(shù) = Abs(AddScorePerBomb) + 1 39。玩家的初始分數(shù) = 0 = 0 curEatCount = 0 PrizeRemain = 0 blnPause = False = False = = = = True = True = False Exit Sub End If blnThroughWall = True 39。記錄蛇身坐標Private PrizePos As thePosition 39。地圖高度(象素)Private Map_Empty_Color 39。每吃進一個 食物,所增加的分數(shù)Public AddScorePerBomb As Integer 39。蛇頭移動方向(值為 -1,0,1)X_Way As IntegerY_Way As Integer39。蛇頭填充色BodyColor As Long 39。食物顏色Public Const BOMB_COLOR As Long = vbRed 39。前后2個等級之間的 Interval差值(毫秒)39。食物MAP_BOMB 39?!八?,垂直”方向鍵——當蛇以 水平 方向移動時,“左”和“右”的按鍵無效;(即不處理按鍵事件)當蛇以 垂直 方向移動時,“上”和“下”的按鍵無效。本人 : 190317890 (請在身份驗證里面寫上“CSDN”)郵箱 bugs1984需要本程序VB源碼文件的朋友,請留下你的 Email,我會盡快寄出。H660046 XOR現(xiàn)在有兩個PictureBoxPicture1 AutoRedRaw 屬性設(shè)為TureScaleMode 屬性設(shè)為3像素Picture2 AutoRedRaw 屬性設(shè)為TureScaleMode 屬性設(shè)為3像素若想將Picture2里(10,10)(100,100)區(qū)域內(nèi)的圖形拷貝到Picture1的(0,0)可以這樣寫:BitBlt ,0,0,90,90,10,10,amp。Top 屬性:表示圖形的位置的Y座標??梢栽O(shè)計一個友好的界面,然后在程序啟動的時候?qū)?shù)組賦初值,并顯示出來;對每個按鈕分別先進行次數(shù)判斷,然后進行前面講述的處理,不斷篩選直到剩下惟一的好漢后就可以顯示在界面的正下方了。i++)ListBox1ItemsAdd(IntToStr(b[i]))。i++)//i的大小決定打亂的程度,循環(huán)次數(shù)越多,打亂程度越高{temp1=random(27)+1?! 〈騺y重排的算法 在程序中的很多地方要涉及打亂順序重排的問題,下面我們就來先簡單介紹一下打亂是如何實現(xiàn)的?! 榱撕喕瘑栴},我選擇了其中的27將,將他們分成3組,每組9人。每層跑道左邊有幾個方塊Dim l2(22) As Integer 39。 第一步,繪制對象:用函數(shù)drawcar()畫賽車,drawway(n)畫跑道的第n層。再在屬性框中把Form1的ScaleMode 屬性改為3-Pixel,表明我們將以像素為我們的坐標計算單位,把Form1的StartUpPosition 屬性設(shè)為2-CenterScreen,使運行時窗體出現(xiàn)在屏幕正中。VB 貪吃蛇 單人版游戲(一) 編寫趣味撞球小游戲VB 貪吃蛇 單人版游戲(四) 再在屬性框中把它的Enabled屬性改為False,Interval屬性改為50,前一個值表示該時鐘控件是否激活,后一個值決定該時鐘控件產(chǎn)生Timer事件的間隔時間,我們將用它來控制小球的移動頻率。本例中,繪圖部分寫在了Timer1_Timer()中,碰撞測試放在了test()中。先擦 Line (cx, BT 100)Step(3 * D, D), RGB(225, 0, 0), BF Line (cx + D, BT 200)Step(D, D), RGB(225, 0, 0), BFEnd SubPrivate Sub drawway(n) Line (Width/23*D/22*D,BTn*D)Step(7*D,D),BackColor, BF39。程序初始化時是把1~27將隨機打亂分別放入PageControl控件的三個選項卡中,每個選項卡放9張圖片。i=27。b[temp1]=b[temp[2]。而且篩選很容易把你攪得頭暈?zāi)X脹,所以涉及的各個數(shù)組之間的關(guān)系一定要先理順,先用一個例子來解釋如何進行篩選。Picture 屬性:只要將這個屬性填入正常的圖形檔名,VB就會自動幫我們載入圖形檔?;蛟S有人會覺得奇怪,一張圖就要用到一個PictureBox,小游戲的圖不多還沒關(guān)系,如果是RPG的話不就要動用到幾千個甚至幾萬個PictureBox?豈不是麻煩死了?所以如果圖片很多的時候,我通常都是把圖全部都放在同一個圖形檔里面,這樣就只要用到一個PictureBox了,要用圖片時從里面把它抓出來就好了,不過要怎么抓呢?我建議使用函數(shù)BitBlt()來做圖形的搬移。步驟三:當Client連線的時候Server端會引發(fā)ConnectionRequest事件,Server的程式要這樣子寫:Private Sub Winsock1_ConnectionRequest(ByVal requestID As long) requestIDEnd Sub步驟四:這樣一來就可以傳送資料了,傳送和接受資料的方法如下:傳送資料:mydata = 你好嗎? mydata這樣就會把mydata給傳到對方那里。 初始化地圖:布置食物,炸彈,蛇身位置以及蛇頭的移動方向——在PictureBox上繪畫圖像 并修改對應(yīng)的地圖格屬性值(MapProperty()數(shù)組)。(3)如果當前蛇頭位置的地圖屬性是“炸彈“(陷阱)——統(tǒng)計玩家吃進的炸彈數(shù)量,扣分(如果分數(shù)小于0,就GameOver),補充地圖上的炸彈,記錄(累加)當前吃進的物品,如果吃進的物品達到一定數(shù)量就顯示獎品。蛇身End EnumPublic Const MAP_SCALE As Integer = 15 39。H80FF 39。起始 獎勵分數(shù)的 上限Public Const MIN_PRIZE As Integer = 20 39。記錄吃進的 炸彈數(shù)量blnGameOver As Boolean 39。用于表示二維坐標值Public Type thePositionX As IntegerY As IntegerEnd TypePublic FoodCount_AtOneTime As Integer 39。標記是否已經(jīng)開始 新游戲(T=游戲已經(jīng)開始)Private blnPause As Boolean 39。地圖-食物顏色Private MapProperty() As Integer 39。如果游戲正在進行,則發(fā)送“暫?!卑存I事件,暫停游戲 End Sub39。地圖初始化 ReDim MapProperty(MAX_COL_INDEX, MAX_ROW_INDEX) Map_Width = (MAX_COL_INDEX + 1) * MAP_SCALE Map_Height = (MAX_ROW_INDEX + 1) * MAP_SCALE = Map_Width + 2 = Map_Height + 2 (0, 0)Step(Map_Width, Map_Height), Map_Empty_Color, BF FoodCount_AtOneTime = 2 39。初始化P1蛇身 ReDim Snake_P1(START_SNAKE_LENGTH) For i = 0 To UBound(Snake_P1) 39。如果游戲正在進行,則發(fā)送“暫?!卑存I事件,暫停游戲 End SubPrivate Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If Or blnStartGame = False Or blnOnKeyEvents = False Then Exit Sub 39。放開一個鍵之后,才能接收按鍵事件End SubPrivate Sub Form_Load() = True = EMPTY_COLOR curLevel = 6 39。蛇移動 的處理過程Private Sub PlayerMove() Dim tempHead As thePosition 39。暫時沒有空白地的移動操作 Case MAP_SNAKE 39。加分 Call AddFood 39。清除地圖上的獎品 End Select Call RefreshSnake(, , blnAddLengh) 39。改變玩家的分數(shù)39。尋找一個空白地,用于放置食物 Do = Int(Rnd() * (MAX_COL_INDEX + 1)) = Int(Rnd() * (MAX_ROW_INDEX + 1)) Loop Until MapProperty(, ) = MAP_EMPTY MapProperty(, ) = MAP_FOOD 39。參數(shù):blnShow(T=顯示獎品,F=清除獎品)Private Sub ShowPrize(blnShow As Boolean) Dim tempPrize As thePosition Dim tempColor As Long If blnShow Then 39。剩余的分數(shù),用反色顯示 = PrizeRemain 39。參數(shù):蛇頭的新坐標_X,蛇頭的新坐標_Y,是否增加蛇身長度(T=增加)Private Sub RefreshSnake(NewHead_X As Integer, NewHead_Y As Integer, blnAddLength As Boolean) Dim i As Integer Dim OldTail As thePosition 39。然后更新 蛇頭的坐標 Snake_P1(0).X = NewHead_X Snake_P1(0).Y = NewHead_Y 39。在地圖上把 舊蛇尾坐標 下的地圖格的屬性設(shè)置為 空白地 ( * MAP_SCALE, * MAP_SCALE)Step(MAP_SCALE, MAP_SCALE), Map_Empty_Color, BF 39。 pos + 1 amp。 將自動改為 “ amp。不斷減少獎勵的分數(shù)Private Sub tmrPrize_Timer() Dim tempColor As Long PrizeRemain = PrizeRemain 1 If PrizeRemain = 0 Then Call ShowPrize(False) 39。 RECORD_FILE_NAME For Random As FileNum Len = Len(Record(0))39。 ☆☆☆ 錯蟲帝國(Bu