Kviz VB6 - problem

3

Kviz VB6 - problem

offline
  • 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.
offline
  • drejk 
  • Ugledni građanin
  • Pridružio: 31 Mar 2005
  • Poruke: 448
  • Gde živiš: Novi Beograd

Ok, vracamo se ovde Smile 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 Smile i vrlo verovatno da postoji mnogo elegantnijih resenja (kako ne bi brain-a lose edukovao)

Poz

Drejk



offline
  • 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 Smile

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 Smile 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...

offline
  • drejk 
  • Ugledni građanin
  • 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 Smile

kad ga zavrsis, licnes i picnes (mora to malo i vizuelno da lici na nesto) Smile

offline
  • Pridružio: 16 Jan 2009
  • Poruke: 23

Ne kapiram kako da odradim drugi savet, ni kako te indexe da postavim...

offline
  • 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

offline
  • 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

offline
  • drejk 
  • Ugledni građanin
  • Pridružio: 31 Mar 2005
  • Poruke: 448
  • Gde živiš: Novi Beograd

Problem sa clanom niza, izleteo si van opsega... samo ne vidim gde?

offline
  • Pridružio: 16 Jan 2009
  • Poruke: 23

Kad pokrenem program pojavi se ta poruka gore, i pozuti Private Function ime_funkcije() ....

offline
  • drejk 
  • Ugledni građanin
  • 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

Ko je trenutno na forumu
 

Ukupno su 578 korisnika na forumu :: 40 registrovanih, 6 sakrivenih i 532 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3028 - dana 22 Nov 2019 07:47

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., amstel, Apok, Atomski čoban, Bane san, cifra, Cirkon, CrazyDiablo, darkstar101, DM1994, dolinalima, draganozinic64, Georgius, GreenMan, Imperator41, Insan, KlinkaPalacinka, kunktator, lovac12, Lucije Kvint, manda87, mercedesamg, Mercury, Mihajlo, MilosKop, Miskohd, mustangkg, nebojsag, Neretva, ostoja, pacika, Regrut Boskica, ruso, shone34, Skijavoneska, Snorks, srecko81, vathra, Vlada1389, Yellow Pinky