Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - Randomize e i dadi
Forum - Visual Basic 6 - Randomize e i dadi

Avatar
Cronos (Normal User)
Pro


Messaggi: 105
Iscritto: 07/09/2009

Segnala al moderatore
Postato alle 16:06
Domenica, 27/12/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
PM Quote
Avatar
cassin.simone (Member)
Guru


Messaggi: 1051
Iscritto: 03/06/2009

Segnala al moderatore
Postato alle 20:33
Domenica, 27/12/2009
Scusa: non ho ben capito qual'è il problema. Potresti rispiegare?

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 20:36
Domenica, 27/12/2009
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

PM Quote
Avatar
ilmettiu (Ex-Member)
Pro


Messaggi: 88
Iscritto: 17/09/2009

Segnala al moderatore
Postato alle 2:17
Lunedì, 28/12/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

  1. Dim i, n, t, sum as Integer
  2.  
  3. Randomize()
  4.  
  5. For i = 0 to n                   'n = numero di volte da lanciare
  6.    sum = sum + CInt(Rnd * t)     't = tipo di dado (4, 6, 8, ecc..)
  7. Next i



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

See ya, guys!

PM Quote
Avatar
Cronos (Normal User)
Pro


Messaggi: 105
Iscritto: 07/09/2009

Segnala al moderatore
Postato alle 19:23
Lunedì, 28/12/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?!...
:-?

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 21:20
Lunedì, 28/12/2009
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

PM Quote
Avatar
Cronos (Normal User)
Pro


Messaggi: 105
Iscritto: 07/09/2009

Segnala al moderatore
Postato alle 15:05
Martedì, 29/12/2009
Grazie a tutti :k: , ho risolto, questo codice sembra funzionare a meraviglia:

Codice sorgente - presumibilmente Plain Text

  1.  



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
PM Quote
Avatar
Iohoilpotere (Ex-Member)
Pro


Messaggi: 80
Iscritto: 13/09/2009

Segnala al moderatore
Postato alle 18:41
Mercoledì, 30/12/2009
si, ma nn penso che tu debba usare un D4294967297  xD

PM Quote
Avatar
GrG (Member)
Guru^2


Messaggi: 3430
Iscritto: 21/08/2007

Segnala al moderatore
Postato alle 21:21
Mercoledì, 30/12/2009
Testo quotato

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

PM Quote