Poslao: 18 Jan 2009 21:31
|
offline
- biser-x
- Počasni građanin
- Pridružio: 28 Jun 2004
- Poruke: 990
- Gde živiš: Kucura
|
Sto na pm? Ako nije problem raspravite ovde... mozda neko i nauci nesto...
|
|
|
Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
|
|
Poslao: 18 Jan 2009 21:48
|
offline
- Pridružio: 31 Mar 2005
- Poruke: 448
- Gde živiš: Novi Beograd
|
Ok, vracamo se ovde mislio sam da malo davimo ljude, al vracamo... evo malo update-a sta se desava
problem sa sum/function not defined, smo resili, u stvari problem nije ni postojao, moguce da je momak nesto cackao po source-u...
- onda je sl problem bio na tapetu
"Ponovo sam probao i sad radi normlno...
E, sad imam drugi problem? Ako imam 20 pitanja u kodu, kako da namestim da se posle 5 pitanja pokaze broj bodova i da je to kraj igre.
Unapred hvala."
- resen je dodavanjem public promenljive koja se uvecava posle svakog pritisnutog buttona za sl. pitanje
Public broj As Integer
i u on click event stavljeno
broj = broj + 1
i na kraju u form_load stavljeno
If broj = 5 Then
MsgBox "Kraj kviza, hvala sto ste igrali"
Unload Form1
End
End If
brainstolen, nastavi sa postovanjem ovde,
voleo bih da neko da i drugi nacin (jednostavniji, citljiviji, i u svemu pametniji), jer sam ja isao linijem manjeg otpora i vrlo verovatno da postoji mnogo elegantnijih resenja (kako ne bi brain-a lose edukovao)
Poz
Drejk
|
|
|
|
Poslao: 18 Jan 2009 22:53
|
offline
- biser-x
- Počasni građanin
- Pridružio: 28 Jun 2004
- Poruke: 990
- Gde živiš: Kucura
|
Hmm.. Pogledao sam source, ali samo preko notepada, posto VB ne mogu instalirati na ovom kompu na kojem sam trenutno prinudjen da radim
1. savet:
U form load eventu, jedan deo bi izmeno ovako:
Dim pitanje(0 To 2, 0 To 4) 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(0, 4) = "1"
'ovde se cuva index tacnog odgovora (u ovom slucaju je 1 i to je zvezda)
Tako se uproscuje realizacija ostalog dela programa i ovaj postupak treba primeniti na svako pitanje.
2. savet:
Ovaj deo bih prebacio u funkciju i po potrebi pozvao:
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
3. savet:
Private Sub cmdSledece_Click() bih sada odradio drugacije, tako da se ne mora za svako pitanje pisati posebno jedan red koda. Ovako:
for i = 0 to 2
'ovo 2 je broj pitanja + 1. U form_load eventu je definisano.
if Frame1.Caption = pitanje(i, 0) and Form1.Option1(pitanje(i, 4)).Value = True Then tacno = tacno + 1
next i
Upss.. da Ovde se jos mora prepraviti da se svaka od opcija (znaci Option1, Option2 i Option3) zovu Option1, ali da imaju razlicite indexe.
Index je broj koji se nalazi Form1.Option1( -- Ovde -- ). Takodje index elementa se moze procitati u Properties prozoru.
Dopuna: 18 Jan 2009 22:53
Jos da dodam sta sam zaboravio:
- U cmdSledece_Click eventu na kraju ne treba pozivati form_load event, vec funkciju iz saveta 2.
- Dim pitanje(0 To 2, 0 To 3) As String sada treba postaviti ispod Public tacno As Integer.
Nadam se da ce raditi posto nisam proveravao...
|
|
|
|
Poslao: 18 Jan 2009 23:05
|
offline
- Pridružio: 31 Mar 2005
- Poruke: 448
- Gde živiš: Novi Beograd
|
Odlicna logika, svaka cast..
saveti su na mestu.
brain, nadam se da ces da podelis source na kraju sa nama
kad ga zavrsis, licnes i picnes (mora to malo i vizuelno da lici na nesto)
|
|
|
|
|
Poslao: 19 Jan 2009 12:13
|
offline
- biser-x
- Počasni građanin
- Pridružio: 28 Jun 2004
- Poruke: 990
- Gde živiš: Kucura
|
- Evo kako napraviti funkciju:
Private Function ime_funkcije()
'kod funkcije
End Function
Tu stavis ono iz saveta 2, samo sto treba prepraviti kod zbog indexa na ovako:
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
- Indexe za Option1 uradi tako sto ces kliknuti na Option1 kontrolu, a zatim u Properties prozoru u polje index uneti 1 (u nasem slucaju ide 1 inace za pocetak indexa se koristi 0). Onda ime kontrole Option2 promeni u Option1 i index promeni u 2, a za Option3 isto tako u Option1 i index 3.
Evo i gotovog projekta sa izmenama:
https://www.mycity.rs/must-login.png
|
|
|
|
Poslao: 19 Jan 2009 12:27
|
offline
- brainstolen
- Novi MyCity građanin
- Pridružio: 16 Jan 2009
- Poruke: 23
|
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 Javlja mi se greska Run time erorr 9 - Subscript out of range
|
|
|
|
Poslao: 19 Jan 2009 17:06
|
offline
- Pridružio: 31 Mar 2005
- Poruke: 448
- Gde živiš: Novi Beograd
|
Problem sa clanom niza, izleteo si van opsega... samo ne vidim gde?
|
|
|
|
Poslao: 19 Jan 2009 17:19
|
offline
- brainstolen
- Novi MyCity građanin
- Pridružio: 16 Jan 2009
- Poruke: 23
|
Kad pokrenem program pojavi se ta poruka gore, i pozuti Private Function ime_funkcije() ....
|
|
|
|
Poslao: 19 Jan 2009 17:52
|
offline
- Pridružio: 31 Mar 2005
- Poruke: 448
- Gde živiš: Novi Beograd
|
rnd ti vraca vrednost od 1-3
a niz pitanje ti je definisan od 0 do 2...
poz
drejk
|
|
|
|