Cronos (Normal User)
Pro
Messaggi: 105
Iscritto: 07/09/2009
|
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 il 27/12/2009 alle 16:07 |
|
cassin.simone (Member)
Guru
Messaggi: 1051
Iscritto: 03/06/2009
|
Scusa: non ho ben capito qual'è il problema. Potresti rispiegare?
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
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
|
|
ilmettiu (Ex-Member)
Pro
Messaggi: 88
Iscritto: 17/09/2009
|
Nei giochi di ruolo, spesso quando si tirano più dadi il valore va sommato.
Propongo quindi la seguene soluzione:
Codice sorgente - presumibilmente VB.NET |
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!
|
|
Cronos (Normal User)
Pro
Messaggi: 105
Iscritto: 07/09/2009
|
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?!...
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
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
|
|
Cronos (Normal User)
Pro
Messaggi: 105
Iscritto: 07/09/2009
|
Grazie a tutti , ho risolto, questo codice sembra funzionare a meraviglia:
Codice sorgente - presumibilmente Plain Text |
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 il 30/12/2009 alle 16:25 |
|
Iohoilpotere (Ex-Member)
Pro
Messaggi: 80
Iscritto: 13/09/2009
|
si, ma nn penso che tu debba usare un D4294967297 xD
|
|
GrG (Member)
Guru^2
Messaggi: 3430
Iscritto: 21/08/2007
|
Postato originariamente da Cronos:
Un ultima domanda, (spero non sia sciocca)
secondo voi si può cambiare le variabili da "integer" a "long" |
Se intendi in design-time(ossia quando scrivi il codice) certamente, se intendi in run-time (quando il programma è attivo) credo di no |
|