Moikka!
Mulla on tässä nyt semmonen peliprojekti meneillään ja siinä sitten pitäis taistella vihuja vastaan vuoropohjasessa taistelusysteemissä ja nyt tarviisin vähän vinkkejä ja vihjeitä että miten pystyn toteuttamaan systeemin joka hakee random vihun taulukosta? Tai siis ku siinä on tietokantafilu josta se peli hakee kaikki vihujen tiedot ja tallentaa ne sitten MonsterDataTypeen (itsetehty taulukkotsydeemi). Ja siihen MonsterDataTypeen kuuluu esim MonHp, MonLvl, MonName ja muuta vastaavaa sälää. Niin tässä nyt ei sinäällään valmista koodia kysellä (eikä tarvii edes välttämättä tietää just Visual Basic 6:sesta yhtikäs mitään, kunhan muuten ohjelmointikonsepti hanskassa). Niin että vinkkejä, vihjeitä ja ideoita, mistä suunnasta tätä ongelmaa kannattais lähteä lähestymään, olisi oikein mukava saada!
-Feltsu
Tekstistäsi en ymmärtänyt, mikä on ongelmana. Satunnaisen vihollisen saa, kun arpoo luvun ja ottaa luvun osoittaman vihollisen taulukosta. Pseudokoodina siis näin:
min = alaraja(vihollistaulu) max = ylaraja(vihollistaulu) i = arvo_luku_valilta(min, max) vihollinen = vihollistaulu(i)
Ei ole kovin ihmeellistä, vai onko? Itse en ainakaan tarvitse tähän yhtäkään erityistä "ohjelmointikonseptia", vaan ihan taulukko ja satunnaislukufunktio riittävät.
MORJENS TAAS feltsu!
tässä valmispaskaa vihun arpomiseen VBA-versiona...
Private Type EnemyType
Name As String
isAlive As Boolean
'jne...
End Type
Private Enemies() As EnemyType
Private CurrentEnemy As Integer
Private Sub UserForm_Activate()
Static IsInitialized As Boolean
If Not IsInitialized Then
IsInitialized = True
Dim i As Integer
ReDim EnemyTable(0)
For i = 0 To 9
ReDim Preserve Enemies(i)
Enemies(i).Name = "Enemy " & CStr(i)
Enemies(i).isAlive = True
Next i
End If
End Sub
Private Sub CommandButton1_Click()
Dim theEnemy As Variant
Dim index As Integer
DoItAgain:
index = RaffleIndex(LBound(Enemies), UBound(Enemies))
If Enemies(index).isAlive Then
CurrentEnemy = index
theEnemy = Enemies(index).Name
MsgBox theEnemy
Else
GoTo DoItAgain
End If
End Sub
Private Function RaffleIndex( _
min As Integer, max As Integer) As Integer
Randomize
RaffleIndex = CInt((max - min) * Rnd() + min)
End FunctionUI! KIITTI! Tosta oli kyllä loads of help :D Nyt koitan vaan soveltaa että vertaa vielä player leveliä monsterin leveliin ja valitsee vaan oikean tasoisia vastuksia :D Kivaa aivotyöskentelyä kyllä! Mutta luultavasti viimeistään maanantaina tuun itkemään ku en saa toimimaan :D Kohtuu nuub viel näissä touhuissa, mut toisaalta tällä tavalla opinkin parhaiten (taino toisiks parhaiten, parhaimmin oppimisin jos istuisin tunnilla ja maikka selittäis mutta se on sitte taas ihan toinen juttu)
-Feltsu
Aihe on jo aika vanha, joten et voi enää vastata siihen.