Pravim neki kviz pa mi to treba ako neko ovo zna neka mi kaze i ako je bilo reci o ovome nemojte da mi zamerite za to sto nemam brz net pa nemogu da pregledam sve...
Kako da kad god udjem u igru bude drugo pitanje?
Zaključano
Zakačeno
Cao Slobo, ti si mi omiljen ovde!
Promenjaiva Broj_pitanja ce ti dati nasumicni broj pitanja u ovom slucaju od 1 do 9. Ti postavi da bira od 1 do onog broja koliko gotovih pitanja imas znaci ako imas 100 pitanja bice 1+100 a ako imas 3 pitanj bice 1+3
Pozdrav!
Code:
Randomize
Broj_pitanja = Int(1 + 9 * Rnd)
Randomize
Broj_pitanja = Int(1 + 9 * Rnd)
Promenjaiva Broj_pitanja ce ti dati nasumicni broj pitanja u ovom slucaju od 1 do 9. Ti postavi da bira od 1 do onog broja koliko gotovih pitanja imas znaci ako imas 100 pitanja bice 1+100 a ako imas 3 pitanj bice 1+3
Pozdrav!
Da, samo ta funkcija ima manu, a to je da svakim ponovnim startanjem programa daje isti niz random brojeva.
ali uz malu doradu...
ali uz malu doradu...
Code:
Public Function Random() As Long
Dim Broj As Integer
'Broj = Minute(Now) & Second(Now)
Broj = Second(Now)
Random = Int((Broj * Rnd) + Second(Now))
End Function
Public Function Random() As Long
Dim Broj As Integer
'Broj = Minute(Now) & Second(Now)
Broj = Second(Now)
Random = Int((Broj * Rnd) + Second(Now))
End Function
Potpis
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
izmenjeno 1 put, poslednji put Blue82 19.11.2008. u 00:39
Izmene poruke
- Blue8219.11.2008. u 00:39zapis iz teksta poruke
Ona funkcija Dava nema manu! Imala bi tu manu da nema naredbe randomize koja na osnovu vremena sistemskog sata racuna slucajni broj te on s toga NIKADA nece biti isti svakim ponovnim startovanjem. A sem toga tvoj kod nema ni ogranicenje broja pitanja.
Poz!
Poz!
to se uglavnom radi ovako:
i gde ti treba random broj u opsegu (na primer) od 1 do 10 pozivas:
Code:
Randomize Timer ' ovo ubaciti u Form_Load ili Sub Main (zavisi sta je entry-point)
...
Function GetRandom(min As Long, max As Long) As LOng
GetRandom = Int((max - min + 1)*RNd) + min
ENd Function
Randomize Timer ' ovo ubaciti u Form_Load ili Sub Main (zavisi sta je entry-point)
...
Function GetRandom(min As Long, max As Long) As LOng
GetRandom = Int((max - min + 1)*RNd) + min
ENd Function
i gde ti treba random broj u opsegu (na primer) od 1 do 10 pozivas:
Code:
GetRandom(1, 10)
GetRandom(1, 10)
e hvala puno ljudi to je to
Moja greska ;)
Potpis
SELECT * FROM หน่วยงานหลัก WHERE ยสันติ LIKE 'โดย%'
Code:
Public tacno As Integer
Private Sub cmdSledece_Click()
If Frame1.Caption = "Pitanje broj 1" And Form1.Option1.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 2" And Form1.Option3.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 3" And Form1.Option1.Value = True Then tacno = tacno + 1
MsgBox "Tacnih odgovora " & tacno
Call Form_Load
End Sub
Private Sub Form_Load()
Dim pitanje(0 To 2, 0 To 3) As String
pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?"
pitanje(0, 1) = "Crvena zvezda"
pitanje(0, 2) = "Partizan"
pitanje(0, 3) = "Obilic"
pitanje(1, 0) = "Sta je brze ili zec?"
pitanje(1, 1) = "Zec"
pitanje(1, 2) = "Ili"
pitanje(1, 3) = "Nista od svega"
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?"
pitanje(2, 1) = "Bela"
pitanje(2, 2) = "Plava"
pitanje(2, 3) = "Zuta"
Form1.lblPitanje.Caption = pitanje(x, 0)
Form1.Option1.Caption = pitanje(x, 1)
Form1.Option2.Caption = pitanje(x, 2)
Form1.Option3.Caption = pitanje(x, 3)
Form1.Frame1.Caption = "Pitanje broj " & x + 1
End Sub
Kako da stavim u ovaj kod random funkciju da se pitanja nasumicno smenjuju?
Public tacno As Integer
Private Sub cmdSledece_Click()
If Frame1.Caption = "Pitanje broj 1" And Form1.Option1.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 2" And Form1.Option3.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 3" And Form1.Option1.Value = True Then tacno = tacno + 1
MsgBox "Tacnih odgovora " & tacno
Call Form_Load
End Sub
Private Sub Form_Load()
Dim pitanje(0 To 2, 0 To 3) As String
pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?"
pitanje(0, 1) = "Crvena zvezda"
pitanje(0, 2) = "Partizan"
pitanje(0, 3) = "Obilic"
pitanje(1, 0) = "Sta je brze ili zec?"
pitanje(1, 1) = "Zec"
pitanje(1, 2) = "Ili"
pitanje(1, 3) = "Nista od svega"
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?"
pitanje(2, 1) = "Bela"
pitanje(2, 2) = "Plava"
pitanje(2, 3) = "Zuta"
Form1.lblPitanje.Caption = pitanje(x, 0)
Form1.Option1.Caption = pitanje(x, 1)
Form1.Option2.Caption = pitanje(x, 2)
Form1.Option3.Caption = pitanje(x, 3)
Form1.Frame1.Caption = "Pitanje broj " & x + 1
End Sub
Code:
x = GetRandom(LBound(pitanje), UBound(pitanje))
x = GetRandom(LBound(pitanje), UBound(pitanje))
Code:
Public tacno As Integer
Private Sub cmdSledece_Click()
If Frame1.Caption = "Pitanje broj 1" And Form1.Option1.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 2" And Form1.Option3.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 3" And Form1.Option1.Value = True Then tacno = tacno + 1
MsgBox "Tacnih odgovora " & tacno
Call Form_Load
End Sub
Function RandomPitanje() As Integer
Randomize Timer
RandomPitanje = (Int((5 * Rnd)))
End Function
Private Sub Form_Load()
Dim pitanje(0 To 2, 0 To 3) As String
pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?"
pitanje(0, 1) = "Crvena zvezda"
pitanje(0, 2) = "Partizan"
pitanje(0, 3) = "Obilic"
pitanje(1, 0) = "Sta je brze ili zec?"
pitanje(1, 1) = "Zec"
pitanje(1, 2) = "Ili"
pitanje(1, 3) = "Nista od svega"
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?"
pitanje(2, 1) = "Bela"
pitanje(2, 2) = "Plava"
pitanje(2, 3) = "Zuta"
x=RandomPitanje()
Form1.lblPitanje.Caption = pitanje(x, 0)
Form1.Option1.Caption = pitanje(x, 1)
Form1.Option2.Caption = pitanje(x, 2)
Form1.Option3.Caption = pitanje(x, 3)
Form1.Frame1.Caption = "Pitanje broj " & x + 1
End Sub
Probao sam ovako. E sad, nekad mi se pri menjanju pitanja dogodi da se pojave dva ista pitanja za redom.Public tacno As Integer
Private Sub cmdSledece_Click()
If Frame1.Caption = "Pitanje broj 1" And Form1.Option1.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 2" And Form1.Option3.Value = True Then tacno = tacno + 1
If Frame1.Caption = "Pitanje broj 3" And Form1.Option1.Value = True Then tacno = tacno + 1
MsgBox "Tacnih odgovora " & tacno
Call Form_Load
End Sub
Function RandomPitanje() As Integer
Randomize Timer
RandomPitanje = (Int((5 * Rnd)))
End Function
Private Sub Form_Load()
Dim pitanje(0 To 2, 0 To 3) As String
pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?"
pitanje(0, 1) = "Crvena zvezda"
pitanje(0, 2) = "Partizan"
pitanje(0, 3) = "Obilic"
pitanje(1, 0) = "Sta je brze ili zec?"
pitanje(1, 1) = "Zec"
pitanje(1, 2) = "Ili"
pitanje(1, 3) = "Nista od svega"
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?"
pitanje(2, 1) = "Bela"
pitanje(2, 2) = "Plava"
pitanje(2, 3) = "Zuta"
x=RandomPitanje()
Form1.lblPitanje.Caption = pitanje(x, 0)
Form1.Option1.Caption = pitanje(x, 1)
Form1.Option2.Caption = pitanje(x, 2)
Form1.Option3.Caption = pitanje(x, 3)
Form1.Frame1.Caption = "Pitanje broj " & x + 1
End Sub
Moze li to nekako da se ispravi?
moze da se ispravi naravno, za pocetak bih ti predlozio da umesto vise-dimenzionalnih nizova koristis udt (user define type):
sada ce ti niz pitanje biti izmesan i mozes da ga citas clan po clan (prvo pitanje(0) pa pitanje(1)....) i (skoro) uvek ce biti drugaciji redosled pitanja a neces imati ponavljanja pitanja (dok ne "ispucas" sva pitanja iz niza)
Code:
Type Question
Text As String ' text pitanja
Answer(0 to 2) As String ' niz ponudjenih odgovora
CorrectAnswer As Long ' index tacnog odgovora
End Type
....
Dim pitanje(0 to 5) As Question
pitanje(0).Text = "tekst pitanja"
pitanje(0).Answer(0) = "odgovor A"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectANswer = 1 ' recimo da je tacan odgovor pod B
.....
Dim i As Long, x as Long, tmp As Question
Dim min As Long = LBound(pitanje)
Dim max As Long = UBound(pitanje)
For i = min to max
x = GetRandom(min, max)
tmp = pitanje(x)
pitanje(x) = pitanje(i)
pitanje(i) = tmp
Next
Type Question
Text As String ' text pitanja
Answer(0 to 2) As String ' niz ponudjenih odgovora
CorrectAnswer As Long ' index tacnog odgovora
End Type
....
Dim pitanje(0 to 5) As Question
pitanje(0).Text = "tekst pitanja"
pitanje(0).Answer(0) = "odgovor A"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectANswer = 1 ' recimo da je tacan odgovor pod B
.....
Dim i As Long, x as Long, tmp As Question
Dim min As Long = LBound(pitanje)
Dim max As Long = UBound(pitanje)
For i = min to max
x = GetRandom(min, max)
tmp = pitanje(x)
pitanje(x) = pitanje(i)
pitanje(i) = tmp
Next
sada ce ti niz pitanje biti izmesan i mozes da ga citas clan po clan (prvo pitanje(0) pa pitanje(1)....) i (skoro) uvek ce biti drugaciji redosled pitanja a neces imati ponavljanja pitanja (dok ne "ispucas" sva pitanja iz niza)
Code:
Type Question
Text As String ' text pitanja
Answer(0 To 2) As String ' niz ponudjenih odgovora
CorrectAnswer As Long ' index tacnog odgovora
End Type
Private Sub Command1_Click()
Dim i As Long, x As Long, tmp As Question
Dim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
For i = min To max
x = GetRandom(min, max)
tmp = pitanje(x)
pitanje(x) = pitanje(i)
pitanje(i) = tmp
Next
End Sub
Private Sub Form_Load()
Dim pitanje(0 To 2) As Question
pitanje(0).Text = "Koliko ima dana u godini?"
pitanje(0).Answer(0) = "356"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectAnswer = 1
pitanje(1).Text = "Wind of change je pesma grupe?"
pitanje(1).Answer(0) = "Children of Bodom"
pitanje(1).Answer(1) = "Aerosmith"
pitanje(1).Answer(2) = "Scorpions"
pitanje(1).CorrectAnswer = 3
End Sub
Stavio sam nesto samo sa dva pitanja da probam, ali meni se pojavljuje neka greska....
Type Question
Text As String ' text pitanja
Answer(0 To 2) As String ' niz ponudjenih odgovora
CorrectAnswer As Long ' index tacnog odgovora
End Type
Private Sub Command1_Click()
Dim i As Long, x As Long, tmp As Question
Dim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
For i = min To max
x = GetRandom(min, max)
tmp = pitanje(x)
pitanje(x) = pitanje(i)
pitanje(i) = tmp
Next
End Sub
Private Sub Form_Load()
Dim pitanje(0 To 2) As Question
pitanje(0).Text = "Koliko ima dana u godini?"
pitanje(0).Answer(0) = "356"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectAnswer = 1
pitanje(1).Text = "Wind of change je pesma grupe?"
pitanje(1).Answer(0) = "Children of Bodom"
pitanje(1).Answer(1) = "Aerosmith"
pitanje(1).Answer(2) = "Scorpions"
pitanje(1).CorrectAnswer = 3
End Sub
Code:
Public tacno As Integer
Dim pitanje(0 To 2, 0 To 4) As String
Private Sub cmdSledece_Click()
For i = 0 To 2
If Form1.lblPitanje.Caption = pitanje(i, 0) And Form1.Option1(pitanje(i, 4)).Value = True Then tacno = tacno + 1
Next i
MsgBox "Tacnih odgovora " & tacno
Call ime_funkcije ()
End Sub
Private Sub Form_Load()
tacno = 0
pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?"
pitanje(0, 1) = "Crvena zvezda"
pitanje(0, 2) = "Partizan"
pitanje(0, 3) = "Obilic"
pitanje(0, 4) = "1"
pitanje(1, 0) = "Sta je brze ili zec?"
pitanje(1, 1) = "Zec"
pitanje(1, 2) = "Ili"
pitanje(1, 3) = "Nista od svega"
pitanje(1, 4) = "3"
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?"
pitanje(2, 1) = "Plava"
pitanje(2, 2) = "Bela"
pitanje(2, 3) = "Zuta"
pitanje(2, 4) = "2"
Call ime_funkcije ()
End Sub
Function RandomPitanje() As Integer
Randomize
RandomPitanje = Int(1 + 3 * Rnd)
End Function
Private Function ime_funkcije()
x = RandomPitanje()
Form1.lblPitanje.Caption = pitanje(x, 0)
Form1.Option1(1).Caption = pitanje(x, 1)
Form1.Option1(2).Caption = pitanje(x, 2)
Form1.Option1(3).Caption = pitanje(x, 3)
Form1.Frame1.Caption = "Pitanje broj " & x + 1
End Function
Ne znam zasto mi ne radi, pise Comple error: Method or data member not found.....Molim Vas, pomoc!
Public tacno As Integer
Dim pitanje(0 To 2, 0 To 4) As String
Private Sub cmdSledece_Click()
For i = 0 To 2
If Form1.lblPitanje.Caption = pitanje(i, 0) And Form1.Option1(pitanje(i, 4)).Value = True Then tacno = tacno + 1
Next i
MsgBox "Tacnih odgovora " & tacno
Call ime_funkcije ()
End Sub
Private Sub Form_Load()
tacno = 0
pitanje(0, 0) = "Koji je nas najtrofejniji fudbalski klub?"
pitanje(0, 1) = "Crvena zvezda"
pitanje(0, 2) = "Partizan"
pitanje(0, 3) = "Obilic"
pitanje(0, 4) = "1"
pitanje(1, 0) = "Sta je brze ili zec?"
pitanje(1, 1) = "Zec"
pitanje(1, 2) = "Ili"
pitanje(1, 3) = "Nista od svega"
pitanje(1, 4) = "3"
pitanje(2, 0) = "Koje od navedenih boja nije osnovna?"
pitanje(2, 1) = "Plava"
pitanje(2, 2) = "Bela"
pitanje(2, 3) = "Zuta"
pitanje(2, 4) = "2"
Call ime_funkcije ()
End Sub
Function RandomPitanje() As Integer
Randomize
RandomPitanje = Int(1 + 3 * Rnd)
End Function
Private Function ime_funkcije()
x = RandomPitanje()
Form1.lblPitanje.Caption = pitanje(x, 0)
Form1.Option1(1).Caption = pitanje(x, 1)
Form1.Option1(2).Caption = pitanje(x, 2)
Form1.Option1(3).Caption = pitanje(x, 3)
Form1.Frame1.Caption = "Pitanje broj " & x + 1
End Function
na koju liniju prijavljuje gresku?
Na private function ime_funkcije ()....
problem sa tvojim kodom (ovim sto koristi udt) je sto si niz pitanje deklarisao kao privatnu promenljivu metode Form_Load a kasnije pokusavas da joj pristupis iz druge metode (gde ta promenljiva nije vidljiva, i gde ne postoji).
Potrebno je da taj niz definises na nivou modula (forme tj) tako da bi bio vidljiv u svim metodama forme, takodje, kod za mesanje niza treba da pozoves samo jedanput.
Ovako nekako:
Potrebno je da taj niz definises na nivou modula (forme tj) tako da bi bio vidljiv u svim metodama forme, takodje, kod za mesanje niza treba da pozoves samo jedanput.
Ovako nekako:
Code:
Type Question
Text As String ' text pitanja
Answer(0 To 2) As String ' niz ponudjenih odgovora
CorrectAnswer As Long ' index tacnog odgovora
End Type
Dim pitanje(0 To 1) As Question
Dim trenutnoPitanje As Long
Private Sub SledecePitanje()
trenutnoPitanje = trenutnoPitanje + 1
If trenutnopitanje > UBOund(pitanje) then trenutnoPitanje = 0 ' obrnuo si krug...
lblPitanje.Caption = pitanje(trenutnoPitanje).Text
Option1(1).Caption = pitanje(trenutnoPitanje).Answer(0)
Option1(2).Caption = pitanje(trenutnoPitanje).Answer(1)
Option1(3).Caption = pitanje(trenutnoPitanje).Answer(2)
Frame1.Caption = "Pitanje broj " & (trenutnoPitanje + 1)
End Sub
Private Sub Form_Load()
pitanje(0).Text = "Koliko ima dana u godini?"
pitanje(0).Answer(0) = "356"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectAnswer = 0
pitanje(1).Text = "Wind of change je pesma grupe?"
pitanje(1).Answer(0) = "Children of Bodom"
pitanje(1).Answer(1) = "Aerosmith"
pitanje(1).Answer(2) = "Scorpions"
pitanje(1).CorrectAnswer = 2
Dim i As Long, x As Long, tmp As Question
Dim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
For i = min To max
x = GetRandom(min, max)
tmp = pitanje(x)
pitanje(x) = pitanje(i)
pitanje(i) = tmp
Next
trenutnoPitanje = -1
SledecePitanje ' ucitavas sledece (prvo) pitanje
End Sub
Type Question
Text As String ' text pitanja
Answer(0 To 2) As String ' niz ponudjenih odgovora
CorrectAnswer As Long ' index tacnog odgovora
End Type
Dim pitanje(0 To 1) As Question
Dim trenutnoPitanje As Long
Private Sub SledecePitanje()
trenutnoPitanje = trenutnoPitanje + 1
If trenutnopitanje > UBOund(pitanje) then trenutnoPitanje = 0 ' obrnuo si krug...
lblPitanje.Caption = pitanje(trenutnoPitanje).Text
Option1(1).Caption = pitanje(trenutnoPitanje).Answer(0)
Option1(2).Caption = pitanje(trenutnoPitanje).Answer(1)
Option1(3).Caption = pitanje(trenutnoPitanje).Answer(2)
Frame1.Caption = "Pitanje broj " & (trenutnoPitanje + 1)
End Sub
Private Sub Form_Load()
pitanje(0).Text = "Koliko ima dana u godini?"
pitanje(0).Answer(0) = "356"
pitanje(0).Answer(1) = "odgovor B"
pitanje(0).Answer(2) = "odgovor C"
pitanje(0).CorrectAnswer = 0
pitanje(1).Text = "Wind of change je pesma grupe?"
pitanje(1).Answer(0) = "Children of Bodom"
pitanje(1).Answer(1) = "Aerosmith"
pitanje(1).Answer(2) = "Scorpions"
pitanje(1).CorrectAnswer = 2
Dim i As Long, x As Long, tmp As Question
Dim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
For i = min To max
x = GetRandom(min, max)
tmp = pitanje(x)
pitanje(x) = pitanje(i)
pitanje(i) = tmp
Next
trenutnoPitanje = -1
SledecePitanje ' ucitavas sledece (prvo) pitanje
End Sub
izmenjeno 1 put, poslednji put zzzzeljko 19.01.2009. u 19:54
Izmene poruke
- zzzzeljko19.01.2009. u 19:54zapis iz teksta poruke
Ne moze da mi se pokrene program zbog ovog dela koda
Plus pise greska Compile error - Cannot define a Public-user defined type within private object module
Code:
Dim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
- inace ovo je crvene bojeDim min As Long=LBound(pitanje)
Dim max As Long=UBound(pitanje)
Plus pise greska Compile error - Cannot define a Public-user defined type within private object module
umesto Type Question stavi Private Type Question a tu min/max deklaraciju pokusaj sam da napises ispravno...
Code:
trenutnoPitanje = -1
SledecePitanje ' ucitavas sledece (prvo) pitanje
End Sub
Ovde mi je obelezeno SledecePitanje i pise Invalid use of property
trenutnoPitanje = -1
SledecePitanje ' ucitavas sledece (prvo) pitanje
End Sub
ajd'mo ovako: SledecePitanje smo definisali kao funkciju, pitanje za milion dolara: sta se radi sa funkcijama?