Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 3 odgovora
  • 11.444 pregleda

Najnovija ↓

Pomoc oko slagalice (VBA) 12.04.2009. u 13:40 · pre 213 meseci #1
Pravim slagalicu slova i potrebna mi je pomoc sledeca:


Kad se izvuku slova na formi (od kojih se treba sasjtaviti reč) u slucaju da upotrebim neko slovo koje nije izvuceno,treba da racunar izbaci NAG screen ("Ne mozete koristiti ovo slovo &slovo").

Bilo bi dobro kad bih moga,prilikom provjere da sva izvucena slova u TXT BOX koja sam koristio za sklapanje reči oboji pozadinu tog txt box-a.

Upload-ovo sam slagalicu,tj dokle sam ja uspjeo da napravim.Mozda se nekom nece svideti metoda RND slova koju sam ja koristio.Moze i ovako.

Do While (i <= 12)
i = i + 1
b = Int((25 * rnd) + 1)
Cells(i, 1) = Chr(b + 64)
Loop


Potpis
AS
Re: Pomoc oko slagalice (VBA) 12.04.2009. u 18:24 · pre 213 meseci #2
Sigurno postoje različiti načini da se to uradi ali ja sam pokušao da iskombinujem proceduru koja će da označi iskorišćena slova i proceduru validacije, pa sam došao do sledećeg rešenja.
Uzmemo reč koja je unesena označimo je sa strT. Pretražujemo da li je slovo iz prvog tekst boxa sadržano u toj reči. Za to koristimo funkciiju InStr. Ukoliko je sadržano obojimo tekst box. Takođe eliminišemo pronađeno slovo iz reči strT, koristići pronađenu poziciju i funkcije Left i Right. Ustvari iz početne reči uzmeo deo levo od pronađenog slova i deo desno od pronađenog slova. Pređemo na sledeći tekst box.
Na kraju ukoliko je sve uredu strT treba da bude prazan string (dužine 0). Ukoliko je nešto preostalo u tom stringu znači da ta slova nisu postojala u zadatim slovima i ispisujemo poruku.
Evo kod koji treba dodati u modul provera ispred petlje For a=1 To 10
Code:

Dim strT As String
Dim i As Integer, pos As Integer

strT = Trim(UCase(slagalica.rec))
For i = 1 To 10   ' provereva od zadatih slova, slovo po slovo da li je korisceno
   pos = InStr(1, strT, UCase(slagalica.Controls("txt" & i).Text))
   If pos <> 0 Then
       strT = Left(strT, pos - 1) & Right(strT, Len(strT) - pos) ' Brise pronadjeno slovo iz reci
       slagalica.Controls("txt" & i).BackColor = RGB(255, 0, 0)  ' Ukoliko je koriljženo boji crveno
   End If
Next i

If Len(strT) > 0 Then 'Ukoliko je preostalo slova u reci ona nisu bila u zadatim slovima
   MsgBox ("Koriscena slova koja ne postoje: " & strT)
   GoTo kraj
End If
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Re: Pomoc oko slagalice (VBA) 13.04.2009. u 01:22 · pre 213 meseci #3
@Jpeca ovo je odlicno,bas kao sto sam i ja zamislio.

Primjetio si da imam Sheet "baza" i da se tu dodahz reči od A1 do A...n
Kako mogu da sortiram ove reči da idu ovako

Reči sa 2 slova
Reči sa 3 slova
Reči sa 4 slova
Reči sa n slova

Onda bih mogao da racunar izvuče najduzu reč u bazi (sastavljenu od izvucenih slova) tako sto bih krenuo sa proverom od najduze reči i kad nađe tu reč da je ispiše.


HVALA!
Potpis
AS
Re: Pomoc oko slagalice (VBA) 13.04.2009. u 09:03 · pre 213 meseci
izmenjeno 1 put, poslednji put Jpeca 13.04.2009. u 10:34
  1. Jpeca13.04.2009. u 10:34zapis iz teksta poruke
#4
Što se tiče sortiranja po dužini to je jednostavno. Funkcija LEN određuje dužinu reči. Dodaj kolonu u bazi koja ima izračunava dužinu reči i sortiraj po toj koloni. Kad jednom izračunaš dužinu reči pretvori formule u vrednosti. Problem koji se javlja tom prilikom su diftozi u našoj latinici lj, nj, dž - Len će dati dužinu 2 za njih a treba 1. Moguće je izvršiti zamenu ovih znaka za x, q, w ili korišćenje ćirilice. U svakom slučaju algoritam koji sam ti ja dao za proveru nije dovoljno efikasan da se koristi za pronalaženje najduže reči u bazi. Ozbiljna baza morala bi da ima više od 50000 reči, pa je i upotreba Excela za ove svrhe diskutabilna.

U ovoj temi http://www.elitesecurity.org/t...napraviti-kviz-TV-SLAGALICA-VB već je Goran Vucicevic otkrio trik kako se u TV slagalici biraju slova - izabere se neka reč od 9 do 11 slova, dopune slučajnim slovima do 12 slova i onda slova izmešaju. U tom slučaju najduža reč je već poznata.
Potvrde da se koristi ovaj način u TV emisiji su sledeće:
1/ Prateći ovaj kviz nikad nisam video da je kompjuter izbacio reč kraću od 9 slova, što da je slučajni izbor slova trebalo bi da se desi (nisam računao statistiku koliko često, ali ovako na osnovu zdravog razuma)
2/ Dešava se (doduše retko) da korisnik ima dužu reč od kompjutera - to je moguće ako je dopuna slučajnim slovima takva da se može sastaviti duža reč od početne, slučajno određene reči
Potpis
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme