找回密碼 或 安全提問
 註冊
|註冊|登錄

伊莉討論區

搜索
感激所有對伊莉作出奉獻的人認識好友、聊天,分享生活趣事你準備好成為出色的版主了嗎?
三上悠亞mega無碼fc2人妻霹靂cosplay一拳超人
宇宙列車サキュバsexy mys最後生還鷲尾悪魔を前導遊

休閒聊天興趣交流學術文化旅遊交流飲食交流家庭事務PC GAMETV GAME
熱門線上其他線上感情感性寵物交流家族門派動漫交流貼圖分享BL/GL
音樂世界影視娛樂女性頻道潮流資訊BT下載區GB下載區下載分享短片
電腦資訊數碼產品手機交流交易廣場網站事務長篇小說體育運動時事經濟
上班一族博彩娛樂

[簡]狼與辛香料 Merch

[簡]終末的火車前往何

華為手機 AI讓女生一

(4月新番)[繁]怪人的

(4月新番)[繁]恰如細

[繁]劇場版 鬼太郎誕
C & C++ 語言C# 語言Visual Basic 語言PHP 語言JAVA 語言
查看: 3577|回復: 10
打印上一主題下一主題

[問題]請問有人用VB2008寫過小精靈的遊戲嗎[複製鏈接]

Rank: 2Rank: 2

帖子
137
積分
223 點
潛水值
11947 米
跳轉到指定樓層
樓主
發表於 2011-12-24 10:25 AM|只看該作者|倒序瀏覽
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
本帖最後由 ggjtwo 於 2011-12-24 10:28 AM 編輯

寫遊戲的初期想把要吃的小點點一次給畫上
所以使用drawimage來畫
可是發現這個方式會有些問題

1.小精靈經過時小點點會自己消失(當然這符合遊戲要求),可是這種現象不是
   自己控制的,也就是說當我突然轉方向時會導至小點點只吃半點

2.另外若是切換視窗或是有其它視窗覆蓋在遊戲上面時,所有小點點都不見了
...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
分享分享0收藏收藏0支持支持0

使用道具檢舉

  專 家(12000/24000)

偶素程式設計下的產物「浻」

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1412
積分
17880 點
潛水值
38287 米
頭香
發表於 2011-12-24 11:26 PM|只看該作者
若對尊貴或贊助會員有任何疑問,歡迎向我們查詢。我們的即時通或MSN: admin@eyny.com
我有做過那種一半的(只是我忘了我是放在那個論壇 或者部落格了)
而你的參考 影片連結也是我當初參考的
我就是整個卡在一半(程式的一半而已)
而程式碼幾乎可以說一樣
偏偏就是 vb6 跑起來就順順的
vb 2008 跑起來就像腦殘一樣
小精靈在 vb 6 就可以很順暢的上下左右
vb 2008 就是不按牌理(有殘影問題)

建議你 用 direct x  去做吧...
瀏覽完整內容,請先 註冊登入會員
本人 都是寫 vb.net 如果看到本人的原創 請自備 .Net FrameWork 3.5

使用道具檢舉

  專 家(12000/24000)

落葉知秋

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1600
積分
23884 點
潛水值
54991 米
3
發表於 2011-12-25 07:24 AM|只看該作者
如果你不介意的話,可以把整個專案附上來嗎?(懶得重弄)
我有空的時候幫你看一下,有沒有比較好的解決方法。
新手就更該多用「心」動「手」找答案;
經驗是累積來的,答案則是 Google 來的。

使用道具檢舉

Rank: 2Rank: 2

帖子
137
積分
223 點
潛水值
11947 米
4
發表於 2011-12-25 09:22 AM|只看該作者
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
本帖最後由 ggjtwo 於 2011-12-25 09:00 PM 編輯
  1. Public Class Form1

  2. Dim i As Integer 'X座標
  3. Dim j As Integer 'Y座標
  4. Dim point As Integer = 0 '吃過的小點數
  5. Dim direct As Integer = 0 '目前行進方向
  6. Dim tempx As Integer '目前x座標(代替picture.image做運算用的)
  7. Dim tempy As Integer '目前y座標(代替picture.image做運算用的)

  8. '地圖陣列,0是空白 1是有小點 2是橫磚 3是直磚 4~7角磚
  9. Dim arr(,) As Integer = {{4, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6}, _
  10. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  11. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  12. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  13. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  14. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  15. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  16. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  17. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  18. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  19. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  20. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  21. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  22. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  23. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  24. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  25. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  26. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  27. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  28. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  29. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  30. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  31. {3, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 3}, _
  32. {3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}, _
  33. {5, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 7}}



  34. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

  35. PictureBox1.Visible = True '小精靈的圖像(四個方向加張口閉口)
  36. PictureBox2.Visible = True '地圖的圖像(磚塊之類)
  37. PictureBox1.Left = 64 '初始座標
  38. PictureBox1.Top = 64
  39. Timer1.Enabled = True '小精靈動作控制
  40. Timer2.Enabled = True '地圖狀態(主要為小點狀態消失與否)
  41. PictureBox2.Image = My.Resources.Dot '磚塊圖檔(取代my.resources.xxx,因很耗CPU 資源)
  42. PictureBox3.Image = My.Resources.gridver
  43. PictureBox4.Image = My.Resources.grid
  44. PictureBox5.Image = My.Resources.gridcorn1
  45. PictureBox6.Image = My.Resources.gridcorn2
  46. PictureBox7.Image = My.Resources.gridcorn3
  47. PictureBox8.Image = My.Resources.gridcorn4

  48. End Sub


  49. Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick

  50. tempy = PictureBox1.Top '座標運算用
  51. tempx = PictureBox1.Left
  52. If tempx Mod 32 = 0 Then '到了整數座標時才能變換方向(X->Y)
  53. If direct = 42 Or direct = 12 Then
  54. direct = 2
  55. ElseIf direct = 43 Or direct = 13 Then
  56. direct = 3
  57. End If
  58. End If
  59. If tempy Mod 32 = 0 Then '到了整數座標時才能變換方向(Y->X)
  60. If direct = 30 Or direct = 20 Then
  61. direct = 0
  62. ElseIf direct = 31 Or direct = 21 Then
  63. direct = 1
  64. End If
  65. End If
  66. ' direct=0,1,2,3 => 右左上下
  67. If direct = 0 Or direct = 42 Or direct = 43 Then 'direct=42,43分別代表由向右轉到上下
  68. If Int(((PictureBox1.Left) / 10)) Mod 2 = 1 Then
  69. PictureBox1.Image = My.Resources._1
  70. Else
  71. PictureBox1.Image = My.Resources._2
  72. End If
  73. If arr(Int(tempx / 32) + 1, Int(tempy / 32)) = 0 Or arr(Int(tempx / 32) + 1, Int(tempy / 32)) = 1 Then
  74. PictureBox1.Left = PictureBox1.Left + 4 '不碰壁時就才能前進
  75. End If
  76. ElseIf direct = 1 Or direct = 12 Or direct = 13 Then 'direct=12,13分別代表由向左轉到上下向
  77. If Int(((PictureBox1.Left) / 10)) Mod 2 = 1 Then
  78. PictureBox1.Image = My.Resources._5
  79. Else
  80. PictureBox1.Image = My.Resources._6
  81. End If
  82. If arr(Int((tempx - 4) / 32), Int(tempy / 32)) = 0 Or arr(Int((tempx - 4) / 32), Int(tempy / 32)) = 1 Then
  83. PictureBox1.Left = PictureBox1.Left - 4
  84. End If
  85. ElseIf direct = 2 Or direct = 21 Or direct = 20 Then 'direct=21,20分別代表由向上轉到左右向
  86. If Int(((PictureBox1.Top) / 10)) Mod 2 = 1 Then
  87. PictureBox1.Image = My.Resources._3
  88. Else
  89. PictureBox1.Image = My.Resources._4
  90. End If
  91. If arr(Int(tempx / 32), Int(tempy / 32) + 1) = 0 Or arr(Int(tempx / 32), Int(tempy / 32) + 1) = 1 Then
  92. PictureBox1.Top = PictureBox1.Top + 4
  93. End If
  94. ElseIf direct = 3 Or direct = 30 Or direct = 31 Then 'direct=31,30分別代表由向下轉到左右向
  95. If Int(((PictureBox1.Top) / 10)) Mod 2 = 1 Then
  96. PictureBox1.Image = My.Resources._7
  97. Else
  98. PictureBox1.Image = My.Resources._8
  99. End If
  100. If arr(Int(tempx / 32), Int((tempy - 4) / 32)) = 0 Or arr(Int(tempx / 32), Int((tempy - 4) / 32)) = 1 Then
  101. PictureBox1.Top = PictureBox1.Top - 4
  102. End If
  103. End If
  104. If tempx Mod 32 = 0 And tempy Mod 32 = 0 Then '當吃到小點時,此位置必為整數,吃完後已空白圖片覆蓋小點點
  105. If arr(tempx / 32, tempy / 32) = 1 Then
  106. arr(tempx / 32, tempy / 32) = 0
  107. Using g As Graphics = Me.CreateGraphics()
  108. g.DrawImage(My.Resources.blank1, tempx, tempy)
  109. End Using
  110. point = point + 1 '吃完一點就積分
  111. End If
  112. End If
  113. Label1.Text = point
  114. End Sub




  115. Public Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles TextBox1.KeyDown

  116. If e.KeyCode = 39 Then '39,37,38,40分別到表鍵盤右左上下鍵
  117. TextBox1.Focus()
  118. If direct = 1 Then
  119. direct = 0
  120. ElseIf direct = 2 Then
  121. direct = 20
  122. ElseIf direct = 3 Then
  123. direct = 30
  124. End If
  125. ElseIf e.KeyCode = 37 Then
  126. TextBox1.Focus()
  127. If direct = 0 Then
  128. direct = 1
  129. ElseIf direct = 2 Then
  130. direct = 21
  131. ElseIf direct = 3 Then
  132. direct = 31
  133. End If
  134. ElseIf e.KeyCode = 40 Then
  135. TextBox1.Focus()
  136. If direct = 0 Then
  137. direct = 42
  138. ElseIf direct = 1 Then
  139. direct = 12
  140. ElseIf direct = 3 Then
  141. direct = 2
  142. End If
  143. ElseIf e.KeyCode = 38 Then
  144. TextBox1.Focus()
  145. If direct = 0 Then
  146. direct = 43
  147. ElseIf direct = 1 Then
  148. direct = 13
  149. ElseIf direct = 2 Then
  150. direct = 3
  151. End If
  152. End If
  153. End Sub



  154. Private Sub Timer2_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer2.Tick
  155. i = 0 '此處之目的為地圖畫面需一再更新,否則畫面會因切換視窗或其他因素消失
  156. j = 0
  157. Using g As Graphics = Me.CreateGraphics()
  158. While i < 25
  159. While j < 20
  160. Select Case arr(i, j)
  161. Case Is = 1
  162. g.DrawImage(PictureBox2.Image, i * 32, j * 32)
  163. Case Is = 2
  164. g.DrawImage(PictureBox3.Image, i * 32, j * 32)
  165. Case Is = 3
  166. g.DrawImage(PictureBox4.Image, i * 32, j * 32)
  167. Case Is = 4
  168. g.DrawImage(PictureBox5.Image, i * 32, j * 32)
  169. Case Is = 5
  170. g.DrawImage(PictureBox6.Image, i * 32, j * 32)
  171. Case Is = 6
  172. g.DrawImage(PictureBox7.Image, i * 32, j * 32)
  173. Case Is = 7
  174. g.DrawImage(PictureBox8.Image, i * 32, j * 32)
  175. End Select

  176. j = j + 1
  177. End While
  178. j = 0
  179. i = i + 1
  180. End While
  181. End Using
  182. End Sub
  183. End Class
複製代碼
到目前的程式碼已貼上,可是我不會對齊耶,諸位前輩可能要看得辛苦一些了
1.現在遇到的問題,小精靈太大隻,經過時會蓋到磚頭(可能會用縮小小精靈圖片來解決)
2.地圖是用Me.creategraphics畫的,只畫一次的話會因為切換視窗等問題而畫面消失,須反複的畫上
   ,我試過用VB6來寫(paintpicture也是遇到同樣題),所以我放在timer2,每隔一段時間就畫
   一次地圖,可是這樣導至整個遊戲速度變慢,目前還沒有解決辦法
3.吃小點點的時候都得到整數的位置才能吃,不知有什麼辦法可以只碰到就吃到點的
4.最後,還有鬼還沒寫,鬼追蹤小精靈的方式也毫無頭緒(這部份應該是最難的吧)

VB2008的檔案請由此下載(
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
)

程式寫了一天超累的,各位前輩如果有看到什麼可以改的地方或是可加快速度的方式
請多多給予意見,謝謝

...
瀏覽完整內容,請先 註冊登入會員
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

  專 家(12000/24000)

偶素程式設計下的產物「浻」

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1412
積分
17880 點
潛水值
38287 米
5
發表於 2011-12-25 12:07 PM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
回答你最後一個問題就是
鬼追小精靈的問題
或許你可以從 老鼠追游標的方向去思考
vb 6版本
下載: 訪客無法瀏覽下載點,請先 註冊登入會員


然後還要外加 尋路 系統喔




本人 都是寫 vb.net 如果看到本人的原創 請自備 .Net FrameWork 3.5
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。

使用道具檢舉

  專 家(12000/24000)

繼續轉動。

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1044
積分
15030 點
潛水值
33773 米
6
發表於 2011-12-25 04:21 PM|只看該作者
如果把要吃掉的點點弄成一個圖片然後當成物件匯入
每次吃掉就把該物件visible給false掉
不知道我這樣的概念有沒有錯

使用道具檢舉

Rank: 2Rank: 2

帖子
137
積分
223 點
潛水值
11947 米
7
發表於 2011-12-25 08:33 PM|只看該作者
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。
謝謝dark大的意見,目前在研究當中
回kev大,目前小點點的概念是這樣沒錯,只是我不太清楚圖片匯入跟我用me.creategraphics(用畫上去的)有什麼差異

使用道具檢舉

  專 家(12000/24000)

偶素程式設計下的產物「浻」

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1412
積分
17880 點
潛水值
38287 米
8
發表於 2011-12-25 08:48 PM|只看該作者
若新密碼無法使用,可能是數據未更新。請使用舊密碼看看。
本帖最後由 darkjack 於 2011-12-25 11:56 PM 編輯

給6樓的,那會消耗很多資源
且在vb.net 用這種方式來稿會讓顯示更加慢
本人 都是寫 vb.net 如果看到本人的原創 請自備 .Net FrameWork 3.5
成為伊莉的版主,你將獲得更高級和無限的權限。把你感興趣的版面一步步地發展和豐盛,那種滿足感等著你來嚐嚐喔。

使用道具檢舉

Rank: 2Rank: 2

帖子
137
積分
223 點
潛水值
11947 米
9
發表於 2011-12-25 09:03 PM|只看該作者
分享使你變得更實在,可以使其他人感到快樂,分享是我們的動力。今天就來分享你的資訊、圖片或檔案吧。
回復
下載: 訪客無法瀏覽下載點,請先 註冊登入會員
darkjack



請問dark版主,那匯入是用什麼function或是指令啊
是建imagelist還是用picturebox一個一個畫地圖呢
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

  專 家(12000/24000)

偶素程式設計下的產物「浻」

Rank: 5Rank: 5Rank: 5Rank: 5Rank: 5

帖子
1412
積分
17880 點
潛水值
38287 米
10
發表於 2011-12-26 12:16 AM|只看該作者
在 vb.net (2008 ) 你先去找,動態按鈕 (google搜尋)
然後知道怎做之後在去用 picturebox (如果你真的想用 這種耗資源的方式)
vb6 直接用陣列就可以 但是在vb.net 就不能這樣
vb6 可以直接這樣寫 picturebox(n).image
vb.net 就不能這種寫法 (這就是為何我會要你找 動態按鈕)

如果你說的imagelist 是要放你的圖形資料那還好,因為小精靈的圖形資料不多
且從你的開頭 詢問的文字有找到youtube的教學,且你是看到 #3
...
瀏覽完整內容,請先 註冊登入會員





本人 都是寫 vb.net 如果看到本人的原創 請自備 .Net FrameWork 3.5
如果你忘記伊莉的密碼,請在登入時按右邊出現的 '找回密碼'。輸入相關資料後送出,系統就會把密碼寄到你的E-Mail。

使用道具檢舉

Rank: 2Rank: 2

帖子
137
積分
223 點
潛水值
11947 米
11
發表於 2012-1-4 06:40 PM|只看該作者
目前遊戲已經寫到一個段落了
還有大力丸和遊戲選單未製作
目前還有個問題是我的圖片重疊卻都不是透明的
我使用的圖片檔是Gif檔,且已做透明處理了
圖片是套到picturebox裡,picturebox背景顏色也設為透明
可是就是無法呈現透明的效果
有沒有前輩有成功做出透明的經驗
可以分享一下嗎
謝謝
附件: 你需要登錄才可以下載或查看附件。沒有帳號?註冊
如果瀏覽伊莉時速度太慢或無法連接,可以使用其他分流瀏覽伊莉,www01.eyny.com(02,03)。

使用道具檢舉

您需要登錄後才可以回帖 登錄 | 註冊

Powered by Discuz!

© Comsenz Inc.

重要聲明:本討論區是以即時上載留言的方式運作,對所有留言的真實性、完整性及立場等,不負任何法律責任。而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。於有關情形下,用戶應尋求專業意見(如涉及醫療、法律或投資等問題)。 由於本討論區受到「即時上載留言」運作方式所規限,故不能完全監察所有留言,若讀者發現有留言出現問題,請聯絡我們。有權刪除任何留言及拒絕任何人士上載留言,同時亦有不刪除留言的權利。切勿上傳和撰寫 侵犯版權(未經授權)、粗言穢語、誹謗、渲染色情暴力或人身攻擊的言論,敬請自律。本網站保留一切法律權利。
回頂部