dimitris_pa Δημοσ. 16 Ιουνίου 2011 Δημοσ. 16 Ιουνίου 2011 Καλησπέρα, πως γίνεται να κάνω την rand να βγάζει από το 1 μέχρι το 4 κάθε 2 δευτερόλεπτα (με timer) στην visual basic ? δηλαδή κάθε 2 δευτερόλεπτα (η αν βάλω διαφορετικό χρόνο) να πετάει έναν αριθμό από το 1 μέχρι το 4 και φυσικά χωρίς το 0. Κανένα παράδειγμα αν γίνεται παρακαλώ Ευχαριστώ εκ των πρότερων. Υ.Γ. όχι δεν είναι εργασία Υ.Γ. το κάνω για να θυμηθώ την vb και προετοιμάζομαι για την java, σύντομα πιστεύω θα ξανά χρειαστώ τα φωτά σας στην ίδια ερωτήσει.
_tasos Δημοσ. 16 Ιουνίου 2011 Δημοσ. 16 Ιουνίου 2011 Αν μιλάς για vb.net (και όχι vb6) δες αυτό το άρθρο http://stackoverflow.com/questions/18676/random-int-in-vb-net. Απαντάει ακριβώς αυτό που θέλεις.
DeltaLover Δημοσ. 16 Ιουνίου 2011 Δημοσ. 16 Ιουνίου 2011 Προσθεσε εναν timer και ενα listbox σε μια VB form... Ο παρακατω κωδικας εξηγει τo initialization του timer και την προσθεση των random αριθμων στο listbox... >Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Randomize() _timer.Interval = 2000 _timer.Start() End Sub Private Sub _timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _timer.Tick _listBox.Items.Add(String.Format("{0}", Int((4 * Rnd()) + 1))) End Sub End Class
dimitris_pa Δημοσ. 16 Ιουνίου 2011 Μέλος Δημοσ. 16 Ιουνίου 2011 Αν μιλάς για vb.net (και όχι vb6) δες αυτό το άρθρο http://stackoverflow.com/questions/18676/random-int-in-vb-net. Απαντάει ακριβώς αυτό που θέλεις. ναι δεν μιλάω για vb6..... δηλαδη με αυτο κανω ενα μερος της δουλειας μου ? >Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer Dim Generator As System.Random = New System.Random() Return Generator.Next(1, 4) End Function Προσθεσε εναν timer και ενα listbox σε μια VB form... Ο παρακατω κωδικας εξηγει τo initialization του timer και την προσθεση των random αριθμων στο listbox... >Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Randomize() _timer.Interval = 2000 _timer.Start() End Sub Private Sub _timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _timer.Tick _listBox.Items.Add(String.Format("{0}", Int((4 * Rnd()) + 1))) End Sub End Class ευχαριστω αλλα μηπως μπορεις να μου το κανεις χωρις listbox και με σχολια ? δεν το πολυ καταλαβα ετσι και δεν νομιζω να καταφερω να το κολλησω σε αυτο που κανω.....
_tasos Δημοσ. 16 Ιουνίου 2011 Δημοσ. 16 Ιουνίου 2011 Ναι, μπορείς να κάνεις τη δουλειά σου, αλλά κάθε φορά που θα τρέχεις το πρόγραμμα θα σου δίνει την ίδια ακολουθία αριθμών. Αν όντως το κάνει αυτό, μπορείς να το κάνεις έτσι: > Public Function RandomNumber(ByVal n As Integer) As Integer 'initialize random number generator Dim r As New Random(System.DateTime.Now.Millisecond) Return r.Next(1, n) End Function
DeltaLover Δημοσ. 16 Ιουνίου 2011 Δημοσ. 16 Ιουνίου 2011 Η χρηση του timer προυποθετει την χρηση Windows Forms. Θα πρεπει πρωτα - πρωτα να προσθεσεις ενα component τυπου Timer στην φορμα σου (μπορεις ευκολα να το κανεις με drag'n drop απο το toolbox). Κατοπιν θα προσθεσεις τις παρακατω γραμμες κωδικα στην OnLoad της φορμας σου >Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Randomize() _timer.Interval = 2000 _timer.Start() End Sub Η γραμμη _timer.Interval = 2000 καθοριζει την συχνοτητα του timer σε millisecods ενω η γραμμη _timer.Start() τον ξεκιναει. Η εντολη Randomize() κανει initialize το random number generator. Το επομενο βημα ειναι να κανεις implement το Tick event του Timer, με αλλα λογια τον κωδικα που θα εκτελεστει καθε φορα που ο timer θα κανει fire... Αυτο γινεται εδω: > Private Sub _timer_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles _timer.Tick Dim i i = Int((4 * Rnd())) +1 End Sub Η γραμμη i = Int((4 * Rnd())) +1 καλει την Rnd και νορμαλοποιει το αποτελεσμα της μεταξυ 1 - 4....
dimitris_pa Δημοσ. 17 Ιουνίου 2011 Μέλος Δημοσ. 17 Ιουνίου 2011 τον timer για άλλη δουλειά κατάλαβα πως να τον χρησιμοποιήσω. Μήπως μπορείτε και έχετε τον χρόνο να μου κάνετε το εξής παράδειγμα ? να έχει 4 picturebox's (picturebox.visible=false) και καθε 2 δευτερολεπτα να γινεται ενα τυχαιο picturebox (π.χ. picturebox2.visible=true). Ευχαριστώ πάρα πολύ για τον χρόνο σας.
_tasos Δημοσ. 18 Ιουνίου 2011 Δημοσ. 18 Ιουνίου 2011 > Public Function RandomNumber(ByVal n As Integer) As Integer Dim r As New Random(System.DateTime.Now.Millisecond) Return r.Next(1, n) End Function Έστω λοιπόν ότι χρησιμοποιείς την πάνω Function τότε στο Tick του timer βάζεις τον παρακάτω κώδικα: > PictureBox1.Visible = True PictureBox2.Visible = True PictureBox3.Visible = True PictureBox4.Visible = True Select Case RandomNumber(4) Case 1 PictureBox1.Visible = False Case 2 PictureBox2.Visible = False Case 3 PictureBox3.Visible = False Case 4 PictureBox4.Visible = False Ή αν θέλεις κάτι πιο compact... > Dim r As Integer = RandomNumber(4) PictureBox1.Visible = (r=1) PictureBox2.Visible = (r=2) PictureBox3.Visible = (r=3) PictureBox4.Visible = (r=4)
dimitris_pa Δημοσ. 18 Ιουνίου 2011 Μέλος Δημοσ. 18 Ιουνίου 2011 > Public Function RandomNumber(ByVal n As Integer) As Integer Dim r As New Random(System.DateTime.Now.Millisecond) Return r.Next(1, n) End Function Έστω λοιπόν ότι χρησιμοποιείς την πάνω Function τότε στο Tick του timer βάζεις τον παρακάτω κώδικα: > PictureBox1.Visible = True PictureBox2.Visible = True PictureBox3.Visible = True PictureBox4.Visible = True Select Case RandomNumber(4) Case 1 PictureBox1.Visible = False Case 2 PictureBox2.Visible = False Case 3 PictureBox3.Visible = False Case 4 PictureBox4.Visible = False Ή αν θέλεις κάτι πιο compact... > Dim r As Integer = RandomNumber(4) PictureBox1.Visible = (r=1) PictureBox2.Visible = (r=2) PictureBox3.Visible = (r=3) PictureBox4.Visible = (r=4) σε ευχαριστω παρα πολυ!!! δουλευει!!! >Public Function RandomNumber(ByVal n As Integer) As Integer Dim r As New Random(System.DateTime.Now.Millisecond) Return r.Next(1, 5) //δεν ξερω γιατι αλλα οταν το ειχα με 4 δεν δουλευε.... End Function > PictureBox1.Visible = False PictureBox2.Visible = False PictureBox3.Visible = False PictureBox4.Visible = False Select Case RandomNumber(4) Case 1 PictureBox1.Visible = True Case 2 PictureBox2.Visible = True Case 3 PictureBox3.Visible = True Case 4 PictureBox4.Visible = True //εκανα και εδω μια αλλαγη και ειναι οκ.
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.