[問題][求助]我初學VisualBasic卡住啦...

版主: 總版面管理員實習版面管理員

頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

[問題][求助]我初學VisualBasic卡住啦...

文章 大地旅法師 »

會的人...
幫看一下吧
我想在電腦上面做"蟲"這個遊戲

===============================================
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Then Unload Me Else If KeyCode <> 0 Then a = c: b = d Else t = t + 3.14159265358979 / 12

End Sub
===============================================
Private Sub Timer1_Timer()
Cls
Circle (x, y), 5, 1
y=y+1
x=x+1
End Sub
===============================================

以上...
但是每跑到timer時
x和y的值好像都歸零了
所以永遠只在左上角有個球
電腦是會將所有變數重設為0嗎?
附加檔案
bug程式碼.zip
程式檔
(3.21 KiB) 已下載 1069 次
bug.zip
1.02版
有特殊球
可記錄高分
但無音樂音效
(9.85 KiB) 已下載 1270 次
最後由 大地旅法師 於 2005-04-26 7:52 PM 編輯,總共編輯了 4 次。
Mowd
系統管理員
系統管理員
文章: 1828
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd »

試試看在最上面加入
Dim x, y As Integer
還有
Private Sub Form_Load()
x = 200
y = 200
End Sub
Mowd 與你的交流天地
歡迎您的到來
頭像
sppmg
一級會員
一級會員
文章: 260
註冊時間: 2004-01-10 12:41 PM
來自: 地球ㄉ台灣ㄉ台北
聯繫:

文章 sppmg »

我很久沒用vb了,所以也沒辦法回答

可是發現了一個奇怪的地方
Circle (x, y), 5, 1
括弧需要嗎?
(我不清楚啊 :roll: )
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)
Mowd
系統管理員
系統管理員
文章: 1828
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd »

要喔,那是座標,書上都有刮弧啦
Mowd 與你的交流天地
歡迎您的到來
頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

文章 大地旅法師 »

有了有了
謝謝
dim我懂

Private Sub Form_Load()
為什麼要呢?
還是只是定義啟始點而已?
頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

文章 大地旅法師 »

又有問題了...
我用KeyDown事件寫
但它判斷第一次和第二次之間會有間隔
就是按下時keydown
隔一下才keydownkeydownkeydownkeydownkeydownkeydownkeydown
而且
If KeyCode = 0 Then t = t + 3.14159265358979 / 12
這行沒用...
為什麼?
以下:

Dim X, Y, m, n, a, b, c, d, t, r As Integer
==========================
Private Sub Form_Load()
m = 1
n = 1
X = 20
Y = 20
r = 10
a = 140
b = 105
c = a + 5 * Cos(t)
d = b + 5 * Sin(t)
End Sub
===========================================
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Then Unload Me
If KeyCode <> 0 Then a = c: b = d
If KeyCode = 0 Then t = t + 3.14159265358979 / 12
End Sub
==================
Private Sub Timer1_Timer()
Cls
Circle (X, Y), r, 1
c = a + 5 * Cos(t)
d = b + 5 * Sin(t)
X = X + m
Y = Y + n
If X > 271 - r Then m = -m: X = 271 - r
If X < r Then m = -m: X = r
If Y > 203 - r Then n = -n: Y = 203 - r
If Y < r Then n = -n: Y = r
Line (a, b)-(c, d)
End Sub
頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

文章 大地旅法師 »

=.=
可以了
我還真厲害...(逃)

(回)
我用了keyup解決...

Dim X, Y, m, n, a, b, c, d, t, r, z As Integer
===========================
Private Sub Form_Load()
m = 2
n = 2
X = 20
Y = 20
r = 10
a = 140
b = 105
c = a + 5 * Cos(t)
d = b + 5 * Sin(t)
End Sub
===========================================
Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Then Unload Me
If KeyCode <> 0 Then z = 1
End Sub
=========================================
Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)
z = 0
End Sub
==================
Private Sub Timer1_Timer()
Cls
If z = 1 Then a = c: b = d
If z = 0 Then t = t + 3.14159265358979 / 12
Circle (X, Y), r, 1
c = a + 5 * Cos(t)
d = b + 5 * Sin(t)
X = X + m
Y = Y + n
If X > 271 - r Then m = -m: X = 271 - r
If X < r Then m = -m: X = r
If Y > 203 - r Then n = -n: Y = 203 - r
If Y < r Then n = -n: Y = r
Line (a, b)-(c, d)
End Sub
頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

文章 大地旅法師 »

初版完成了
先放上來...

1.02完成了
砍掉初版...
最後由 大地旅法師 於 2005-04-24 5:54 PM 編輯,總共編輯了 1 次。
Mowd
系統管理員
系統管理員
文章: 1828
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd »

如果不用CLS閃爍情形會不會比較好?
Mowd 與你的交流天地
歡迎您的到來
頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

文章 大地旅法師 »

說的也是...
在哈哈上用慣了...

為了左上文字的歸位
還是用了CLS...
最後由 大地旅法師 於 2005-04-24 5:57 PM 編輯,總共編輯了 1 次。
頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

文章 大地旅法師 »

還有...
它的Rnd怪怪的...
每次跑都一樣...
根本不能算是隨機=.=

還有...
音樂及音效的插入...
教一下吧?
謝謝
Mowd
系統管理員
系統管理員
文章: 1828
註冊時間: 2003-07-16 6:31 PM
來自: 台灣台北
聯繫:

文章 Mowd »

和C++一樣,要加入亂數種子。
記得語法應該是
randomize
加在隨機之前。

音樂的插入要用OLE控制項或是Windows API
Mowd 與你的交流天地
歡迎您的到來
頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

文章 大地旅法師 »

我加入一行:
FOR I=1 TO Minute(Time)+Second(Time) :Rnd:Next
解決^^
頭像
sppmg
一級會員
一級會員
文章: 260
註冊時間: 2004-01-10 12:41 PM
來自: 地球ㄉ台灣ㄉ台北
聯繫:

文章 sppmg »

大地旅法師 寫:我加入一行:
FOR I=1 TO Minute(Time)+Second(Time) :Rnd:Next
解決^^
用時間嗎?
亂數種子其實也是用時間達成亂數的。
(用它機碼可能比較好)
好久沒完6502了
也沒時間......
目前除了拼課業就是玩Linux(還說沒時間......)
頭像
大地旅法師
三級會員
三級會員
文章: 579
註冊時間: 2003-07-17 4:10 PM
來自: 大地 卯族

文章 大地旅法師 »

是不是電腦無法真的做出"隨機"
只好用"隨機號碼表"?
用時間這個觀念是死神給的
之前我們討論過
既然連種子都是用時間
那好像也只有這個辦法
回覆文章