第 1 頁 (共 3 頁)
[問題][求助]我初學VisualBasic卡住啦...
發表於 : 2005-04-20 11:40 PM
由 大地旅法師
會的人...
幫看一下吧
我想在電腦上面做"蟲"這個遊戲
===============================================
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嗎?
發表於 : 2005-04-21 1:58 AM
由 Mowd
試試看在最上面加入
Dim x, y As Integer
還有
Private Sub Form_Load()
x = 200
y = 200
End Sub
發表於 : 2005-04-21 11:15 AM
由 sppmg
我很久沒用vb了,所以也沒辦法回答
可是發現了一個奇怪的地方
Circle (x, y), 5, 1
括弧需要嗎?
(我不清楚啊

)
發表於 : 2005-04-21 5:19 PM
由 Mowd
要喔,那是座標,書上都有刮弧啦
發表於 : 2005-04-21 6:12 PM
由 大地旅法師
有了有了
謝謝
dim我懂
但
Private Sub Form_Load()
為什麼要呢?
還是只是定義啟始點而已?
發表於 : 2005-04-21 9:46 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
發表於 : 2005-04-21 10:47 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
發表於 : 2005-04-22 7:48 AM
由 大地旅法師
初版完成了
先放上來...
1.02完成了
砍掉初版...
發表於 : 2005-04-22 11:13 AM
由 Mowd
如果不用CLS閃爍情形會不會比較好?
發表於 : 2005-04-22 7:13 PM
由 大地旅法師
說的也是...
在哈哈上用慣了...
為了左上文字的歸位
還是用了CLS...
發表於 : 2005-04-23 12:15 AM
由 大地旅法師
還有...
它的Rnd怪怪的...
每次跑都一樣...
根本不能算是隨機=.=
還有...
音樂及音效的插入...
教一下吧?
謝謝
發表於 : 2005-04-23 1:16 AM
由 Mowd
和C++一樣,要加入亂數種子。
記得語法應該是
randomize
加在隨機之前。
音樂的插入要用OLE控制項或是Windows API
發表於 : 2005-04-23 1:09 PM
由 大地旅法師
我加入一行:
FOR I=1 TO Minute(Time)+Second(Time) :Rnd:Next
解決^^
發表於 : 2005-04-25 1:20 PM
由 sppmg
大地旅法師 寫:我加入一行:
FOR I=1 TO Minute(Time)+Second(Time) :Rnd:Next
解決^^
用時間嗎?
亂數種子其實也是用時間達成亂數的。
(用它機碼可能比較好)
發表於 : 2005-04-26 7:49 PM
由 大地旅法師
是不是電腦無法真的做出"隨機"
只好用"隨機號碼表"?
用時間這個觀念是死神給的
之前我們討論過
既然連種子都是用時間
那好像也只有這個辦法