Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Autor | Správa |
---|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 | 135 Bydlisko: Bratislava ... |
Mám novú otázku, nie je to problém ale čiste zo zaujímavosti. Ako ukladať data s hry? ako do Save Slotov v hre. Robím (zatial docela uspesne) jednu adventurku vo VB a síce nepotrebujem tam save keďže ide len o prvý diel série ale v Ďalších to už potreba bude takže preto sa pýtam. Hra je riešena dosť debilne prevažne rozne Visible = True/False a prepinanie sa medzi formami. samozrejme mám aj nejaký ten Modul a herný systém cez premenné a overovanie a tak. A tak sa pýtam či je možné niečo v takomto stave zaznamenať a uložit do nejakého Save suboru v subore s hrou.
Spočiatku som plánoval čosi že tam prednastavím 6 save suborov a to bude predstavovat 6 save slotov a pri ulozeni by som zapisoval do nich sucasny kod v akom stave je pocas hry prave a zaznamenal a pri nacitani opat nacital. ale to mi nepripada moc efektivne, neporadi mi prosim niekdo?
|
|
Registrovaný: 02.11.08 Prihlásený: 10.08.12 Príspevky: 85 Témy: 1 | 1 |
Myslim, ze pokial nemas nejaku moc komplikovanu hru tak staci iba trochu prace so subormi.
Napr.: Vzdy ked klikne hrac na "save" tak sa vytvori novy subor (bude sa volat napr. 08.11.2008.dat - datum, moze tam byt hociaka koncovka) a do toho suboru sa budu ukladat hodnoty, ktore po "load game" potrebujes pre spravne spustenie nacitanej hry (napr. skore, poloha panacika, veci panacika atp.) A jednoducho budes citat zo "save suboru" po riadkoch informacie a nastavovat ich na formulari.
Ak by si este chcel, mozes si ten subor sifrovat nejak aby sa nedal subor upravit v notepade napr. tak, aby hrac mal co ja viem score 1000000.
Ak by ta hra bola zlozitejsia, bolo by to uz komplikovanejsie. Na nete najdes urcite par zdrojakov, ktore ti ukazu ako to asi funguje. Osobne sa na hry moc nezameriavam, takze neviem ti blizsie poradit.
edit: Ak myslis zapisovanie do exe suboru hry, tak to je za behu programu nemozne a navyse neprakticke
|
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 | 135 Bydlisko: Bratislava ... |
a nemohol by si mi dat nejaky link na tutorial pre funkcie na pracu zo subormi? velmi by si mi pomohol, raz som jeden taky cital ale jedine co som si zapametal z neho bolo Kill "subor"
a este to sifrovanie, ako to zasifrovat + pri citani s toho zase odsifrovat aby si to hra vedela precitat
|
|
Registrovaný: 02.11.08 Prihlásený: 10.08.12 Príspevky: 85 Témy: 1 | 1 | |
Registrovaný: 02.11.08 Prihlásený: 10.08.12 Príspevky: 85 Témy: 1 | 1 | |
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 | 135 Bydlisko: Bratislava ... |
kukam ze je to tazsie nez som si myslel...ale mohol by si mi s niecim poradit. mam nieco taketo:
Kód: Dim Subor As Integer
Private Sub Command1_Click() Subor = FreeFile Open "C:\hh.txt" For Output As #Subor Print #Subor, "nejaký text" Close #Subor End Sub Ale mám k tomu otázku, prečo vždy keď to spustím sa to do suboru vlozi len raz?? myslím tým len raz sa to tam vloží a ked chcem znova už sa nič nestane. Dalej nejde mi moc otvorenie a zaznamenanie suboru. je to klasicky takto: Kód: Dim Subor As Integer
Subor = FreeFile Open "C:\XXX.txt" For Output As #Subor
a toto mi ide, ale nedari sa mi na to aplikovat funkciu Line Input. ktora precita jeden riadok zo suboru a zaznamena do premennej typu String.
a k tomuto mám tiez otázku, co ak potrebujem precitat viac riadkov? ako by taky kod vyzeral?
+ to iste pri zapisovani do suboru (vyssie) jak zapisat nieco do viacerych riadkov??
|
|
Registrovaný: 02.11.08 Prihlásený: 10.08.12 Príspevky: 85 Témy: 1 | 1 |
B.A.X.O píše: kukam ze je to tazsie nez som si myslel...ale mohol by si mi s niecim poradit. mam nieco taketo: Kód: Dim Subor As Integer
Private Sub Command1_Click() Subor = FreeFile Open "C:\hh.txt" For Output As #Subor Print #Subor, "nejaký text" Close #Subor End Sub Ale mám k tomu otázku, prečo vždy keď to spustím sa to do suboru vlozi len raz?? myslím tým len raz sa to tam vloží a ked chcem znova už sa nič nestane. #### K tomuto: Robi to preto, lebo VB otvori subor hh.txt ako output a na dalsom riadku kodu tam vlozi hodnotu "nejaky text". Tym padom prepise vsetko co bolo v tom subore doteraz. Ak chces zapisovat znova a znova, musis si najprv precitat hodnotu suboru a az potom tam zapisovat a pouzivat neco ako: Kód: Dim textova_hodnota As String Dim co_chcem_zapisat As String Dim FF FF = FreeFile
co_chcem_zapisat = "nejaky text" Open "hh.txt" For Input As #FF Do While Not EOF(iFileNo) Input #FF, textova_hodnota Loop Close #FF
Open "hh.txt" For Output As #FF Print #FF, textova_hodnota & vbNewLine & co_cchem_zapisat Close #FF #### B.A.X.O píše: Dalej nejde mi moc otvorenie a zaznamenanie suboru. je to klasicky takto: Kód: Dim Subor As Integer
Subor = FreeFile Open "C:\XXX.txt" For Output As #Subor a toto mi ide, ale nedari sa mi na to aplikovat funkciu Line Input. ktora precita jeden riadok zo suboru a zaznamena do premennej typu String. a k tomuto mám tiez otázku, co ak potrebujem precitat viac riadkov? ako by taky kod vyzeral? + to iste pri zapisovani do suboru (vyssie) jak zapisat nieco do viacerych riadkov?? Skusme to na konkretnom priklade .. Na form si daj MultiLine text1 Command1 -> Command1.caption = "Citaj" Po kliknuti na citaj sa ti nacita obsah suboru "data.txt", v ktorom sa nachadza viacriadkovy text. Ku kazdemu riadku prida aj cislo riadku. Ak som na nieco zabudol, napis Kód: Private Sub Command1_Click() Dim subor As String Dim ff As Integer Dim riadok As String Dim cely_text As String Dim i As Integer
subor = "C:\Program Files\Microsoft Visual Studio\VB98\read\data.txt" ff = FreeFile
Open subor For Input As #ff
i = 1 Do While Not EOF(ff) Line Input #ff, riadok riadok = i & ". " & riadok & vbCrLf cely_text = cely_text & riadok i = i + 1 Loop Text1.Text = cely_text
Close #ff End Sub
|
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 | 135 Bydlisko: Bratislava ... |
strasne ti dakujem si mi pomohol dík. ale este jednu otázku, nakoniec ved preda to o com sa tu bavime je prospesne aj pre inych kedze VB je uz tabu sa da povedat. ako to je s gif animaciami? našiel som si knižnicu AniGif.ocx a funguje jak ma, no problem je v tom že je Unregistered. a nejdu na to moc ani cracky alebo pod, som skúšal. Ono by to ani nevadilo lebo to funguje jak má, ale vždy pr ispusteni exe sa hodi tabulka o unregistered a pod. takže to tam nemoze byt, teda ci nevies este o niecom inom co by mi pomohlo? dik
a este mám kod:
Kód: Dim Subor As String
Private Sub Command1_Click() Subor = FreeFile Open "C:\tt.txt" For Output As #Subor Print #Subor, "nejaký text" Close #Subor End Sub
Private Sub Command2_Click() Text1.Text = Subor End Sub
ale nepochopil som prečo ked preniesiem obsah suboru do ktoreho som zapisoval sa ukaze len 1 v textboxe . ved to nepocita riadky...
a skusal som aj typy: Integer a Long. ale nic, myslel som ze je to v tom ale zrejme nie
|
|
Registrovaný: 02.11.08 Prihlásený: 10.08.12 Príspevky: 85 Témy: 1 | 1 |
B.A.X.O píše: strasne ti dakujem si mi pomohol dík. ale este jednu otázku, nakoniec ved preda to o com sa tu bavime je prospesne aj pre inych kedze VB je uz tabu sa da povedat. ako to je s gif animaciami? našiel som si knižnicu AniGif.ocx a funguje jak ma, no problem je v tom že je Unregistered. a nejdu na to moc ani cracky alebo pod, som skúšal. Ono by to ani nevadilo lebo to funguje jak má, ale vždy pr ispusteni exe sa hodi tabulka o unregistered a pod. takže to tam nemoze byt, teda ci nevies este o niecom inom co by mi pomohlo? dik
V referenciach si najdi GIF ActiveX, malo by byt original od Microsoftu. B.A.X.O píše: a este mám kod: Kód: Dim Subor As String
Private Sub Command1_Click() Subor = FreeFile Open "C:\tt.txt" For Output As #Subor Print #Subor, "nejaký text" Close #Subor End Sub
Private Sub Command2_Click() Text1.Text = Subor End Sub ale nepochopil som prečo ked preniesiem obsah suboru do ktoreho som zapisoval sa ukaze len 1 v textboxe . ved to nepocita riadky... a skusal som aj typy: Integer a Long. ale nic, myslel som ze je to v tom ale zrejme nie
1.) Ten kod mas zle... Do FreeFile nemozes zapisovat string.
FreeFile = 1 vacsinou, nemoze to byt string, musi byt integer alebo long
#Subor = 1, a je to oznacenie handle suboru, cize nemozes tam zapisovat data z txt suboru.
Ak nieco chyba, napis, uz je neskoro mozno som na nieco zabudol.
|
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 | 135 Bydlisko: Bratislava ... |
no to je všetko pekné ale...ako teda zobrazit data z txt suboru do textboxu? ist to predsa musi...mám chybu vo formate freefile? ale ja som nevedel ze su este ine
|
|
Registrovaný: 02.11.08 Prihlásený: 10.08.12 Príspevky: 85 Témy: 1 | 1 |
neviem, ci si si vsimol ten kod co som ti napisal vyssie ... cita vsetky data PO RIADKOCH z textoveho suboru a prida ku kazdemu riadku cislo riadku ...
Vysledny text zapise do textboxu
Kód: Private Sub Command1_Click() Dim subor As String Dim ff As Integer Dim riadok As String Dim cely_text As String Dim i As Integer
subor = "data.txt" ff = FreeFile
Open subor For Input As #ff
i = 1 Do While Not EOF(ff) Line Input #ff, riadok riadok = i & ". " & riadok & vbCrLf cely_text = cely_text & riadok i = i + 1 Loop Text1.Text = cely_text
Close #ff End Sub
|
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 | 135 Bydlisko: Bratislava ... |
Patkoo píše: neviem, ci si si vsimol ten kod co som ti napisal vyssie ... cita vsetky data PO RIADKOCH z textoveho suboru a prida ku kazdemu riadku cislo riadku ... Vysledny text zapise do textboxu Kód: Private Sub Command1_Click() Dim subor As String Dim ff As Integer Dim riadok As String Dim cely_text As String Dim i As Integer
subor = "data.txt" ff = FreeFile
Open subor For Input As #ff
i = 1 Do While Not EOF(ff) Line Input #ff, riadok riadok = i & ". " & riadok & vbCrLf cely_text = cely_text & riadok i = i + 1 Loop Text1.Text = cely_text
Close #ff End Sub
Ano máš pravdu díky, ale ten tvoj kod má jednu chybu. Ked kliknem na tlačitko co ma spravit ten tvoj script, tak mi vypise normalne obsah suboru data.txt:
nejaký text
nejaký text
a výsledna podoba v textboxe je:
1.nejaký text
2.nejaký text
ale ked to tlačítko spustím znova tak sa tam pridá toto:
1.nejaký text
2.nejaký text
1.nejaký text
a to je problém lebo by mi to mohlo spravit bordel v save subore. Domnieval som sa že je to tým Loop teda opakovat, ale ked som to odstranil hodilo chybu, v dosledku toho cyklu Do while. tak som odstranil Do a na koniec scriptu miesto Loop som dal Wend. ale, script napisal chyu Bad file name or number...
takze neviem, asi som fakt lama:D a snazim sa tu riesit to na co nemam
PS: cisla riadkov nie sú nutné
a nedalo by sa to previest do podoby ze tie dva riadky s data.txt ulozim do dvoch premenných ktoré potom zobrazím do textboxu?
|
|
Registrovaný: 02.11.08 Prihlásený: 10.08.12 Príspevky: 85 Témy: 1 | 1 |
jo sorry.. musis si vynulovat integer i na 1 vzdy pred kazdym kliknutim na skript, taktiez musis pridat na zaciatok Command1_Click riadok: Text1.text = ""
Urcite sa to da ...
na form si daj 3 tlacitka a jeden textbox, do ktoreho budes zadavat cislo riadku, ktory sa ti vypise.
Budem pouzivat Polia (Arrays).
Kód: Dim riadok(0 To 100) As String
Private Sub Command1_Click() Dim subor As String Dim file_handle As Integer
file_handle = FreeFile
subor = App.Path & "\data.txt"
Open subor For Input As #file_handle i = 0 Erase riadok Do While Not EOF(file_handle) Line Input #file_handle, riadok(i) i = i + 1 Loop
Close #file_handle End Sub
Private Sub Command2_Click() Dim cislo As Integer
cislo = Text1.Text If cislo = 1 Then cislo = 0
If riadok(cislo) = "" Then
Else MsgBox riadok(cislo) End If End Sub
|
|
Registrovaný: 22.01.08 Prihlásený: 19.04.15 Príspevky: 492 Témy: 135 | 135 Bydlisko: Bratislava ... |
hm docela zaujimavy script aj som ho sam trocha vyuzil...ale. kedze sa ucim nemozem len brat diela ostatnych preto napisal som toto:
Kód: Dim Premenna1 As String, Premenna2 As String Dim Subor As Integer Private Sub Command1_Click() Subor = FreeFile Open "C:\data.txt" For Input As #Subor Line Input #Subor, Premenna1 Line Input #Subor, Premenna2 MsgBox Premenna1 MsgBox Premenna2 Close #Subor End Sub
dokonca je to aj funkcne, problem je v tom ze Msgbox zobrazi premenne inak ako chcem, teda najprv jedno vystrazne okno s textom Nejaky text a potom odkliknes ok a vzapeti druhe Nejaky text2.
mimochodom obsah suobru data.txt je:
Nejaky text
Nejaky text2
ano je to banalny problem, ale...chcel som obidve nejako natlacit do toho jedneho msgboxu ale neslo to...skusal som to niekolkymio sposobmi:
MsgBox Premenna1, Premenna2
MsgBox Premenna1 Or Premenna2
MsgBox Premenna1 And Premenna2
ale vzdy hlasi Run time error 13, type mismatch
|
|
Registrovaný: 02.11.08 Prihlásený: 10.08.12 Príspevky: 85 Témy: 1 | 1 |
MagBox Premenna1 & vbNewLine & Premenna2
|
|
Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
|