Oppure

Loading
27/12/09 15:06
Cronos
Salve a tutti. Sto creando un programma per i giochi di ruolo. Consiste nell'inserire il tipo di dado da lanciare (4, 6, 8, 10, 12, 20) e il numero di volte che occorre lanciarlo.
Ora, per il tipo di dado non vi è problema, ma come faccio per le volte che deve essere lanciato: probabilmente si tratta di un ciclo for unito a randomize, ma poi, non sapendo come andare avanti, le ho provate un po' tutte con scarsi risultati.

Aituatemi, anche solo dadnomi un qualche consiglio

Grazie
Ultima modifica effettuata da Cronos 27/12/09 15:07
aaa
27/12/09 19:33
cassin.simone
Scusa: non ho ben capito qual'è il problema. Potresti rispiegare?
aaa
27/12/09 19:36
GrG
dici "ma come faccio per le volte che deve essere lanciato" quindi presumo che tu sappia come fare uscire in mondo random i numeri dal dato, quindi basta usare un ciclo for del tipo

dim i as integer

for i = 1 to *NumeroVolteDaLanciare*
'codice che fa uscire un numero dal dato
next i
aaa
28/12/09 1:17
ilmettiu
Nei giochi di ruolo, spesso quando si tirano più dadi il valore va sommato.
Propongo quindi la seguene soluzione:

Dim i, n, t, sum as Integer

Randomize()

For i = 0 to n                   'n = numero di volte da lanciare
   sum = sum + CInt(Rnd * t)     't = tipo di dado (4, 6, 8, ecc..)
Next i


Avrai pochi 20 naturali, ma poco importa. Altrimenti devi scrivere una breve funzione di arrotondamento, o cercarne una esistente.

See ya, guys!
aaa
28/12/09 18:23
Cronos
Grazie dei consigli, purtroppo non è così facile a quanto pare, visto che mettendo suddeti codici (uniti alla funzione rnd) lanciando ad esempio un dado da sei una volta può venire anche zero o sette!!
quindi ho pensato di aggiungere (come spesso si fa) +1 dopo (rnd * t), per compensare l'uscita del dado, ma neanche questo è servito!
Può forse centrare la funzione di arrotondamento di cui parlavi, ilmettiu?
:-?
oppure?!...
:-?
aaa
28/12/09 20:20
GrG
il + 1 va bene

ma rnd * 6 da numeri da 0 a 6 quindi aumentando di 1 da numeri da 1 a 7 quindi basta usare

rnd * 5 così da numeri da 1 a 6
aaa
29/12/09 14:05
Cronos
Grazie a tutti :k: , ho risolto, questo codice sembra funzionare a meraviglia:




Dim i, n, t, sum As Integer

Randomize

t = tipo.text
n = quant.text
sum = 0

For i = 1 To n 'cambiando 0 con 1
sum = sum + Int(Rnd * t)
labelris = sum + 1
Next i

Un ultima domanda, (spero non sia sciocca)
secondo voi si può cambiare le variabili da "integer" a "long"
Ultima modifica effettuata da Cronos 30/12/09 15:25
aaa
30/12/09 17:41
Iohoilpotere
si, ma nn penso che tu debba usare un D4294967297 xD
aaa