Forum » Programiranje » [VB05] Pomoč za Do...Loop - začetnik
[VB05] Pomoč za Do...Loop - začetnik
gregor_83 ::
Pozdrav od novega uporabnika!
Spravil sem se pisat svoj prvi program. Namen je igranje preproste igrice.
Če imamo polje številk:
1 2 3
4 5 6
7 8 X
je cilj da bodo razporejene takole:
1 2 3
8 X 4
7 6 5
Prazen prostor(X) lahko premikamo samo vodoravno in navpično.
Moj program naj bi delal vse možn poteze dokler ne bi našel prave. Se pravi od začetnega polja rešitev bi nadaljeval do i-tega, dokler ne bi našel prave kombinacije cifer, pri tem pa bi upošteval pravila ige.
In sedaj moj problem: uspelo mi je spisati dovolj da program prebavi prvo iteracijo rešitev, vendar naprej noče. Preprosto v Debuggerju zmrzne in niti ne pokaže kake napake (Samo 'Program not responding')
KODA (z opombami):
'Najprej so deklarirane vse spremenljivke, tega nisem skopiral
i = 0
Do
'prva DOLOOP (znotraj te sta še dve), namen je da iterira dokler ne najde rešitve. Za zadaj je pogoj da konča pri i=2, pa še to ne zmore
matrika = My.Computer.FileSystem.ReadAllText("C:\igra\matrika.txt")
'Prvo polje (pravim jim matrike) je .zapisano v .txt datoteki in je oblike '123456789' (9 je enako kot prazno polje)
steviloMatrik = (3 ^ i)
'Število matrik v vsaki iteraciji
Do
'DOLOOP za prebiranje vseh vrednosti v vseh poljih vseh matrik, ki so na voljo za igranje v i-ti iteraciji. Vrednosti polj se shranijo v 1D array-e 'Cifra11(),'cifra12()'....'cifra33()', kjer je cifra11 vrednost v prvi vrstici in prvem stolpcu, cifra33 pa vrednost v tretji vrstici v retjem stolpcu. Tu najverjetneje nastopijo težave, a o tem kasneje.
cifraprogres = 0
char11progres = 0
char12progres = 1
char13progres = 2
char21progres = 3
char22progres = 4
char23progres = 5
char31progres = 6
char32progres = 7
char33progres = 8
cifra11(cifraprogres) = Val(matrika.Chars(char11progres))
cifra12(cifraprogres) = Val(matrika.Chars(char12progres))
cifra13(cifraprogres) = Val(matrika.Chars(char13progres))
cifra21(cifraprogres) = Val(matrika.Chars(char21progres))
cifra22(cifraprogres) = Val(matrika.Chars(char22progres))
cifra23(cifraprogres) = Val(matrika.Chars(char23progres))
cifra31(cifraprogres) = Val(matrika.Chars(char31progres))
cifra32(cifraprogres) = Val(matrika.Chars(char32progres))
cifra33(cifraprogres) = Val(matrika.Chars(char33progres))
cifraprogres = cifraprogres + 1
char11progres = char11progres + 9
char12progres = char12progres + 9
char13progres = char13progres + 9
char21progres = char21progres + 9
char22progres = char22progres + 9
char23progres = char23progres + 9
char31progres = char31progres + 9
char32progres = char32progres + 9
char33progres = char33progres + 9
Loop Until cifraprogres = steviloMatrik
matrika = ""
'Sprazni strikng 'matrika', ki jo je prebral na začetku. Njene vrednosti so spravljene v cifraxy(), tako da lahko napiše novo, ki bo osnova za naslednjo potezo.
Do
'Pravila za igro. Na kratko: program gleda kje lahko premakne cifro 9 in kam. V skrajnih kotih sta možni dve potezi, na robovih matrike tri in v sredini štiri. Vsakič ko najde možno potezo, zapiše sekvenco v string 'matrika' in gleda naprej. To ponovi (glej spremenljivko 'cloop') tolikokrat, kolikor je spremenljivk v posameznem arrayu cifraXY(). Na koncu dobimš zaporednje številk, ki so odigrane vrednosti. Lahko da je kje napaka, ampak sem skrbno pregledal, pa tudi če je ni tako pomembno, saj le sekvence ne bodo prave, število potez pa bo pravo (4*2+4*3+4=24), tako da bo na voljo pravilno število matrik za naslednjo potezo.
cloop = 0
If cifra11(cloop) = 9 Then
cifra11(cloop) = cifra12(cloop)
cifra12(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra12(cloop) = cifra11(cloop)
cifra11(cloop) = 9
End If
If cifra11(cloop) = 9 Then
cifra11(cloop) = cifra21(cloop)
cifra21(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra21(cloop) = cifra11(cloop)
cifra11(cloop) = 9
End If
If cifra12(cloop) = 9 Then
cifra12(cloop) = cifra11(cloop)
cifra11(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra11(cloop) = cifra12(cloop)
cifra12(cloop) = 9
End If
If cifra12(cloop) = 9 Then
cifra12(cloop) = cifra13(cloop)
cifra13(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra13(cloop) = cifra12(cloop)
cifra12(cloop) = 9
End If
If cifra12(cloop) = 9 Then
cifra12(cloop) = cifra22(cloop)
cifra22(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra22(cloop) = cifra12(cloop)
cifra12(cloop) = 9
End If
If cifra13(cloop) = 9 Then
cifra13(cloop) = cifra12(cloop)
cifra12(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra12(cloop) = cifra13(cloop)
cifra13(cloop) = 9
End If
If cifra13(cloop) = 9 Then
cifra13(cloop) = cifra23(cloop)
cifra23(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra23(cloop) = cifra13(cloop)
cifra13(cloop) = 9
End If
If cifra21(cloop) = 9 Then
cifra21(cloop) = cifra11(cloop)
cifra11(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra11(cloop) = cifra21(cloop)
cifra21(cloop) = 9
End If
If cifra21(cloop) = 9 Then
cifra21(cloop) = cifra22(cloop)
cifra22(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra22(cloop) = cifra21(cloop)
cifra21(cloop) = 9
End If
If cifra21(cloop) = 9 Then
cifra21(cloop) = cifra31(cloop)
cifra31(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra31(cloop) = cifra21(cloop)
cifra21(cloop) = 9
End If
If cifra22(cloop) = 9 Then
cifra22(cloop) = cifra12(cloop)
cifra12(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra12(cloop) = cifra22(cloop)
cifra22(cloop) = 9
End If
If cifra22(cloop) = 9 Then
cifra22(cloop) = cifra21(cloop)
cifra21(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra21(cloop) = cifra22(cloop)
cifra22(cloop) = 9
End If
If cifra22(cloop) = 9 Then
cifra22(cloop) = cifra23(cloop)
cifra23(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra23(cloop) = cifra22(cloop)
cifra22(cloop) = 9
End If
If cifra22(cloop) = 9 Then
cifra22(cloop) = cifra32(cloop)
cifra32(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra32(cloop) = cifra22(cloop)
cifra22(cloop) = 9
End If
If cifra23(cloop) = 9 Then
cifra23(cloop) = cifra13(cloop)
cifra13(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra13(cloop) = cifra23(cloop)
cifra23(cloop) = 9
End If
If cifra23(cloop) = 9 Then
cifra23(cloop) = cifra22(cloop)
cifra22(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra22(cloop) = cifra23(cloop)
cifra23(cloop) = 9
End If
If cifra23(cloop) = 9 Then
cifra23(cloop) = cifra33(cloop)
cifra33(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra33(cloop) = cifra23(cloop)
cifra23(cloop) = 9
End If
If cifra13(cloop) = 9 Then
cifra13(cloop) = cifra21(cloop)
cifra21(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra21(cloop) = cifra13(cloop)
cifra13(cloop) = 9
End If
If cifra13(cloop) = 9 Then
cifra13(cloop) = cifra32(cloop)
cifra32(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra32(cloop) = cifra31(cloop)
cifra31(cloop) = 9
End If
If cifra32(cloop) = 9 Then
cifra32(cloop) = cifra31(cloop)
cifra31(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra31(cloop) = cifra32(cloop)
cifra32(cloop) = 9
End If
If cifra32(cloop) = 9 Then
cifra32(cloop) = cifra22(cloop)
cifra22(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra22(cloop) = cifra32(cloop)
cifra32(cloop) = 9
End If
If cifra32(cloop) = 9 Then
cifra32(cloop) = cifra33(cloop)
cifra33(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra33(cloop) = cifra32(cloop)
cifra32(cloop) = 9
End If
If cifra33(cloop) = 9 Then
cifra33(cloop) = cifra23(cloop)
cifra23(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra23(cloop) = cifra33(cloop)
cifra33(cloop) = 9
End If
If cifra33(cloop) = 9 Then
cifra33(cloop) = cifra32(cloop)
cifra32(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra32(cloop) = cifra33(cloop)
cifra33(cloop) = 9
End If
cloop = cloop + 1
Loop Until cloop = steviloMatrik
steviloElementov = 9 * (4 ^ (i + 1))
'Število elmentov v vseh matrikah v i-ti potezi, tudi tisti, ki so nični (glej spodaj).
If matrika.Length < steviloElementov Then
Ta IFTHEN pogleda če je dovolj vseh elementov. Če sta naprimer samo dve možni potezi (tako kot pri prvi potezi, ko je polje 123456789), potem bo v naslednji potezi premalo elementov, da bi napolnil vsa mesta v array-ih cifraXY(). Tako da če ugotovi da jih res manjka, jih z DOLOOP dodaja eno po eno dokler jih ni dovolj (=steviloElementov)
Do
matrika = matrika & "0"
Loop Until matrika.Length = steviloElementov
End If
My.Computer.FileSystem.WriteAllText("C:\igra\matrika.txt", matrika, False)
'Napiše nov navor matrik v 'matrika.txt', sedaj samo še doda k števcu potez (i), in potem jo znova lhko preber in začene novo potezo. Vsaj tako naj bi bilo....
i = i + 1
MsgBox(matrika)
Loop Until i = 2
Torej, probal sem v Debugu pritisniti pavzo in pogledati kaj se dogaja. Ustavi se nekje pri deklaracijah cifraXY(cifraprogres) = Val(matrika.Chars(charXYprogres)), ampak ko preberem trenutne vrednosti spremenljivk in števcev so ti v redu, tako da pojma nimam zakaj se mi to dogaja.
Hvala za odgovore!
Spravil sem se pisat svoj prvi program. Namen je igranje preproste igrice.
Če imamo polje številk:
1 2 3
4 5 6
7 8 X
je cilj da bodo razporejene takole:
1 2 3
8 X 4
7 6 5
Prazen prostor(X) lahko premikamo samo vodoravno in navpično.
Moj program naj bi delal vse možn poteze dokler ne bi našel prave. Se pravi od začetnega polja rešitev bi nadaljeval do i-tega, dokler ne bi našel prave kombinacije cifer, pri tem pa bi upošteval pravila ige.
In sedaj moj problem: uspelo mi je spisati dovolj da program prebavi prvo iteracijo rešitev, vendar naprej noče. Preprosto v Debuggerju zmrzne in niti ne pokaže kake napake (Samo 'Program not responding')
KODA (z opombami):
'Najprej so deklarirane vse spremenljivke, tega nisem skopiral
i = 0
Do
'prva DOLOOP (znotraj te sta še dve), namen je da iterira dokler ne najde rešitve. Za zadaj je pogoj da konča pri i=2, pa še to ne zmore
matrika = My.Computer.FileSystem.ReadAllText("C:\igra\matrika.txt")
'Prvo polje (pravim jim matrike) je .zapisano v .txt datoteki in je oblike '123456789' (9 je enako kot prazno polje)
steviloMatrik = (3 ^ i)
'Število matrik v vsaki iteraciji
Do
'DOLOOP za prebiranje vseh vrednosti v vseh poljih vseh matrik, ki so na voljo za igranje v i-ti iteraciji. Vrednosti polj se shranijo v 1D array-e 'Cifra11(),'cifra12()'....'cifra33()', kjer je cifra11 vrednost v prvi vrstici in prvem stolpcu, cifra33 pa vrednost v tretji vrstici v retjem stolpcu. Tu najverjetneje nastopijo težave, a o tem kasneje.
cifraprogres = 0
char11progres = 0
char12progres = 1
char13progres = 2
char21progres = 3
char22progres = 4
char23progres = 5
char31progres = 6
char32progres = 7
char33progres = 8
cifra11(cifraprogres) = Val(matrika.Chars(char11progres))
cifra12(cifraprogres) = Val(matrika.Chars(char12progres))
cifra13(cifraprogres) = Val(matrika.Chars(char13progres))
cifra21(cifraprogres) = Val(matrika.Chars(char21progres))
cifra22(cifraprogres) = Val(matrika.Chars(char22progres))
cifra23(cifraprogres) = Val(matrika.Chars(char23progres))
cifra31(cifraprogres) = Val(matrika.Chars(char31progres))
cifra32(cifraprogres) = Val(matrika.Chars(char32progres))
cifra33(cifraprogres) = Val(matrika.Chars(char33progres))
cifraprogres = cifraprogres + 1
char11progres = char11progres + 9
char12progres = char12progres + 9
char13progres = char13progres + 9
char21progres = char21progres + 9
char22progres = char22progres + 9
char23progres = char23progres + 9
char31progres = char31progres + 9
char32progres = char32progres + 9
char33progres = char33progres + 9
Loop Until cifraprogres = steviloMatrik
matrika = ""
'Sprazni strikng 'matrika', ki jo je prebral na začetku. Njene vrednosti so spravljene v cifraxy(), tako da lahko napiše novo, ki bo osnova za naslednjo potezo.
Do
'Pravila za igro. Na kratko: program gleda kje lahko premakne cifro 9 in kam. V skrajnih kotih sta možni dve potezi, na robovih matrike tri in v sredini štiri. Vsakič ko najde možno potezo, zapiše sekvenco v string 'matrika' in gleda naprej. To ponovi (glej spremenljivko 'cloop') tolikokrat, kolikor je spremenljivk v posameznem arrayu cifraXY(). Na koncu dobimš zaporednje številk, ki so odigrane vrednosti. Lahko da je kje napaka, ampak sem skrbno pregledal, pa tudi če je ni tako pomembno, saj le sekvence ne bodo prave, število potez pa bo pravo (4*2+4*3+4=24), tako da bo na voljo pravilno število matrik za naslednjo potezo.
cloop = 0
If cifra11(cloop) = 9 Then
cifra11(cloop) = cifra12(cloop)
cifra12(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra12(cloop) = cifra11(cloop)
cifra11(cloop) = 9
End If
If cifra11(cloop) = 9 Then
cifra11(cloop) = cifra21(cloop)
cifra21(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra21(cloop) = cifra11(cloop)
cifra11(cloop) = 9
End If
If cifra12(cloop) = 9 Then
cifra12(cloop) = cifra11(cloop)
cifra11(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra11(cloop) = cifra12(cloop)
cifra12(cloop) = 9
End If
If cifra12(cloop) = 9 Then
cifra12(cloop) = cifra13(cloop)
cifra13(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra13(cloop) = cifra12(cloop)
cifra12(cloop) = 9
End If
If cifra12(cloop) = 9 Then
cifra12(cloop) = cifra22(cloop)
cifra22(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra22(cloop) = cifra12(cloop)
cifra12(cloop) = 9
End If
If cifra13(cloop) = 9 Then
cifra13(cloop) = cifra12(cloop)
cifra12(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra12(cloop) = cifra13(cloop)
cifra13(cloop) = 9
End If
If cifra13(cloop) = 9 Then
cifra13(cloop) = cifra23(cloop)
cifra23(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra23(cloop) = cifra13(cloop)
cifra13(cloop) = 9
End If
If cifra21(cloop) = 9 Then
cifra21(cloop) = cifra11(cloop)
cifra11(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra11(cloop) = cifra21(cloop)
cifra21(cloop) = 9
End If
If cifra21(cloop) = 9 Then
cifra21(cloop) = cifra22(cloop)
cifra22(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra22(cloop) = cifra21(cloop)
cifra21(cloop) = 9
End If
If cifra21(cloop) = 9 Then
cifra21(cloop) = cifra31(cloop)
cifra31(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra31(cloop) = cifra21(cloop)
cifra21(cloop) = 9
End If
If cifra22(cloop) = 9 Then
cifra22(cloop) = cifra12(cloop)
cifra12(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra12(cloop) = cifra22(cloop)
cifra22(cloop) = 9
End If
If cifra22(cloop) = 9 Then
cifra22(cloop) = cifra21(cloop)
cifra21(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra21(cloop) = cifra22(cloop)
cifra22(cloop) = 9
End If
If cifra22(cloop) = 9 Then
cifra22(cloop) = cifra23(cloop)
cifra23(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra23(cloop) = cifra22(cloop)
cifra22(cloop) = 9
End If
If cifra22(cloop) = 9 Then
cifra22(cloop) = cifra32(cloop)
cifra32(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra32(cloop) = cifra22(cloop)
cifra22(cloop) = 9
End If
If cifra23(cloop) = 9 Then
cifra23(cloop) = cifra13(cloop)
cifra13(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra13(cloop) = cifra23(cloop)
cifra23(cloop) = 9
End If
If cifra23(cloop) = 9 Then
cifra23(cloop) = cifra22(cloop)
cifra22(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra22(cloop) = cifra23(cloop)
cifra23(cloop) = 9
End If
If cifra23(cloop) = 9 Then
cifra23(cloop) = cifra33(cloop)
cifra33(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra33(cloop) = cifra23(cloop)
cifra23(cloop) = 9
End If
If cifra13(cloop) = 9 Then
cifra13(cloop) = cifra21(cloop)
cifra21(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra21(cloop) = cifra13(cloop)
cifra13(cloop) = 9
End If
If cifra13(cloop) = 9 Then
cifra13(cloop) = cifra32(cloop)
cifra32(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra32(cloop) = cifra31(cloop)
cifra31(cloop) = 9
End If
If cifra32(cloop) = 9 Then
cifra32(cloop) = cifra31(cloop)
cifra31(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra31(cloop) = cifra32(cloop)
cifra32(cloop) = 9
End If
If cifra32(cloop) = 9 Then
cifra32(cloop) = cifra22(cloop)
cifra22(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra22(cloop) = cifra32(cloop)
cifra32(cloop) = 9
End If
If cifra32(cloop) = 9 Then
cifra32(cloop) = cifra33(cloop)
cifra33(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra33(cloop) = cifra32(cloop)
cifra32(cloop) = 9
End If
If cifra33(cloop) = 9 Then
cifra33(cloop) = cifra23(cloop)
cifra23(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra23(cloop) = cifra33(cloop)
cifra33(cloop) = 9
End If
If cifra33(cloop) = 9 Then
cifra33(cloop) = cifra32(cloop)
cifra32(cloop) = 9
matrika = matrika & cifra11(cloop) & cifra12(cloop) & cifra13(cloop) & cifra21(cloop) & cifra22(cloop) & cifra23(cloop) & cifra31(cloop) & cifra32(cloop) & cifra33(cloop)
cifra32(cloop) = cifra33(cloop)
cifra33(cloop) = 9
End If
cloop = cloop + 1
Loop Until cloop = steviloMatrik
steviloElementov = 9 * (4 ^ (i + 1))
'Število elmentov v vseh matrikah v i-ti potezi, tudi tisti, ki so nični (glej spodaj).
If matrika.Length < steviloElementov Then
Ta IFTHEN pogleda če je dovolj vseh elementov. Če sta naprimer samo dve možni potezi (tako kot pri prvi potezi, ko je polje 123456789), potem bo v naslednji potezi premalo elementov, da bi napolnil vsa mesta v array-ih cifraXY(). Tako da če ugotovi da jih res manjka, jih z DOLOOP dodaja eno po eno dokler jih ni dovolj (=steviloElementov)
Do
matrika = matrika & "0"
Loop Until matrika.Length = steviloElementov
End If
My.Computer.FileSystem.WriteAllText("C:\igra\matrika.txt", matrika, False)
'Napiše nov navor matrik v 'matrika.txt', sedaj samo še doda k števcu potez (i), in potem jo znova lhko preber in začene novo potezo. Vsaj tako naj bi bilo....
i = i + 1
MsgBox(matrika)
Loop Until i = 2
Torej, probal sem v Debugu pritisniti pavzo in pogledati kaj se dogaja. Ustavi se nekje pri deklaracijah cifraXY(cifraprogres) = Val(matrika.Chars(charXYprogres)), ampak ko preberem trenutne vrednosti spremenljivk in števcev so ti v redu, tako da pojma nimam zakaj se mi to dogaja.
Hvala za odgovore!
darkolord ::
Preprosto v Debuggerju zmrzne in niti ne pokaže kake napake
A si prepričan da program ne laufa naprej? Lahko da laufa normalno in samo ne osvežuje forme.
Dej cel projekt zazipaj pa ga uploadaj recimo na rapidshare.
A si prepričan da program ne laufa naprej? Lahko da laufa normalno in samo ne osvežuje forme.
Dej cel projekt zazipaj pa ga uploadaj recimo na rapidshare.
gregor_83 ::
Prepričan? Hja, nekje srednje prepričan. Sem omenil da je to moj prvi program?
V glavnem, tu je upload: *link*
Pa še dodati je potrebno c:\igra\matrika.txt ki naj vsebuje' 123456789' (oziroma katero koli kombinacijo cifer 1-9)
V glavnem, tu je upload: *link*
Pa še dodati je potrebno c:\igra\matrika.txt ki naj vsebuje' 123456789' (oziroma katero koli kombinacijo cifer 1-9)
Zgodovina sprememb…
- spremenil: gregor_83 ()
nevone ::
Pomoje maš tle napako:
Kako naj bogi cloop kdaj doseže steviloMatrik, če ga vedno na vrhu zanke resetiraš na 0?
o+ nevone
Kako naj bogi cloop kdaj doseže steviloMatrik, če ga vedno na vrhu zanke resetiraš na 0?
Do
cloop = 0
If cifra11(cloop) = 9 Then
cifra11(cloop) = cifra12(cloop)
cifra12(cloop) = 9
...
bla bla bla
...
cloop = cloop + 1
Loop Until cloop = steviloMatrik
o+ nevone
Either we will eat the Space or Space will eat us.
gregor_83 ::
Kako naj bogi cloop kdaj doseže steviloMatrik, če ga vedno na vrhu zanke resetiraš na 0?
Seveda! Zveseljem sporočam da sedaj po tem in nekaj drugih manjših popravkih deluje, zato hvala za pomoč!
Edin hakeljc je da 10 potez vzame več ur da se izračuna (opomba sebi: enačbe kot so 9*(4^i+1) niso programerjev prijatelj )
Sedaj me čaka samo še da napišem pogoj. Ker je ta precej dolg, ga ne morem spraviti v eno vrstico zraven LOOP UNTIL ...
Zato me zanima če lahko napišem *LOOP UNTIL nekSub* in definiram nekSub kar ob zagonu glavne forme?
nevone ::
Lahko narediš na ta način:
o+ nevone
Do bla bla bla bla pejtven = 0 If pogoj1 Then If pogoj2 Then pejtven = 1 End If End if If pogoj3 Then pejtven = 1 Loop Until pejtven = 1
o+ nevone
Either we will eat the Space or Space will eat us.
gregor_83 ::
Hvala nevone, sem že sam razmišljal o nečem podobnem, ampak sem ugotovil da lahko uporabim:
Do Until katerikoliString.Contains("iskaniString") = True
Ki prav fletno paše v eno vrstico! Mi je vedno všeč ta VB.NET.
Program je zdaj končan, tako da še enkrat hvala!
Do Until katerikoliString.Contains("iskaniString") = True
Ki prav fletno paše v eno vrstico! Mi je vedno všeč ta VB.NET.
Program je zdaj končan, tako da še enkrat hvala!
Zgodovina sprememb…
- spremenil: gregor_83 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | [C#] branje ter urejanje podatkovOddelek: Programiranje | 1587 (1362) | maticm |
» | Suse Linux - rabim pomoč čisto od začetkaOddelek: Operacijski sistemi | 1220 (1066) | twom |
» | Linux / netOddelek: Pomoč in nasveti | 1619 (1292) | roscha |
» | Zvok v Pingo2Oddelek: Operacijski sistemi | 779 (668) | BigWhale |
» | problem v c++ kako prebrati matriko?Oddelek: Programiranje | 1404 (1221) | robinzon |