En el juego que estoy desarrollando, pensé en utilizar lo mismo en Visual Basic para generar un conjunto de naves aleatorias que atacarían a la flota del jugador.
Sin Randomize Timer funciona, pero siempre me genera las mismas naves así que realmente no me vale.
Ésta es la parte del código que tengo hecha para generar dichas naves y cargarlas en pantalla:
Cabecera del Frame:
Código:
Option Explicit
Dim enemy1 As Ship
Dim enemy2 As Ship
Dim enemy3 As Ship
Dim enemy4 As Ship
Dim enemy5 As Ship
Randomize Timer
Sub que genera una flota enemiga aleatoria:
-Storage.shipdb contiene tanto los nombres de naves como las rutas de las imágenes a cargar, sus stats etc. Haré que esta pseudo-base de datos se cargue desde ficheros luego, de momento esto es experimental. (Así que no nos centremos en mi chapuza :3)
-Si necesitáis todo el código para orientarme, decídmelo y paso también el módulo storage que contiene todas las estructuras, arrays, etc... No pongo más de momento, ya que mi única duda es sobre cómo utilizar Randomize Timer correctamente.
Código:
Private Sub enemyload()
Dim dice As Integer
If Storage.level > 10 Then
dice = Int((Rnd * 5) + 1)
Else
dice = Int((Rnd * 3) + 1)
End If
Select Case (dice)
Case 1
enemy1.exists = True
enemy2.exists = False
enemy3.exists = False
enemy4.exists = False
enemy5.exists = False
Case 2
enemy1.exists = True
enemy2.exists = True
enemy3.exists = False
enemy4.exists = False
enemy5.exists = False
Case 3
enemy1.exists = True
enemy2.exists = True
enemy3.exists = True
enemy4.exists = False
enemy5.exists = False
Case 4
enemy1.exists = True
enemy2.exists = True
enemy3.exists = True
enemy4.exists = True
enemy5.exists = False
Case 5
enemy1.exists = True
enemy2.exists = True
enemy3.exists = True
enemy4.exists = True
enemy5.exists = True
End Select
'this will have to be modified as it is just for combat alpha testing
'in the way it currently is, it only supports pirate ship load
If enemy1.exists Then
If Storage.level > 10 Then
dice = Int((Rnd * 6) + 6)
enemy1.shipModel = Storage.shipdb(dice, 0)
Else
dice = Int((Rnd * 3) + 6)
enemy1.shipModel = Storage.shipdb(dice, 0)
End If
Else
enemy1.shipModel = Storage.shipdb(0, 0)
img_enemy1.Visible = False
End If
img_enemy1.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
If enemy2.exists Then
If Storage.level > 10 Then
dice = Int((Rnd * 6) + 6)
enemy2.shipModel = Storage.shipdb(dice, 0)
Else
dice = Int((Rnd * 3) + 6)
enemy2.shipModel = Storage.shipdb(dice, 0)
End If
Else
enemy2.shipModel = Storage.shipdb(0, 0)
img_enemy2.Visible = False
End If
img_enemy2.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
If enemy3.exists Then
dice = Int((Rnd * 3) + 6)
enemy3.shipModel = Storage.shipdb(dice, 0)
Else
enemy3.shipModel = Storage.shipdb(0, 0)
img_enemy3.Visible = False
End If
img_enemy3.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
If enemy4.exists Then
dice = Int((Rnd * 3) + 6)
enemy4.shipModel = Storage.shipdb(dice, 0)
Else
enemy4.shipModel = Storage.shipdb(0, 0)
img_enemy4.Visible = False
End If
img_enemy4.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
If enemy5.exists Then
dice = Int((Rnd * 3) + 6)
enemy5.shipModel = Storage.shipdb(dice, 0)
Else
enemy5.shipModel = Storage.shipdb(0, 0)
img_enemy5.Visible = False
End If
img_enemy5.Picture = LoadPicture(App.Path & Storage.shipdb(dice, 2))
End Sub
El problema es que me da un error cuando intento ejecutarlo:
Citar
El procedimiento externo no es válido.
Marcándome la palabra Timer de la linea:Código:
Randomize Timer
Se puede usar esta función en VB?
Si es así, cómo puedo hacerlo?
Muchas gracias por adelantado.