Forum » Programiranje » Pomoč pri json datoteki
Pomoč pri json datoteki
sasha991 ::
Pozdravljeni!
Moja naloga je da za igro tetris naredim eno json datoteko, v kateri bodo zapisane stopnje/težavnosti igre. Zanima me kako bi se stavri lotil in kako bi kasneje to datoteko klical.
Hvala za pomoč
Moja naloga je da za igro tetris naredim eno json datoteko, v kateri bodo zapisane stopnje/težavnosti igre. Zanima me kako bi se stavri lotil in kako bi kasneje to datoteko klical.
Hvala za pomoč
- premaknil iz Pomoč in nasveti: bluefish ()
Kocka ::
Najprej moraš definirati in strukturirati podatke, katere želiš shranjevati. Pri tem JSON nima nobene zveze, to je le način zapisa podatkov.
Za Tetris bi recimo podatke grupiral za posamezne stopnje, naprimer od level-1 do level 10. Nato pa za vsak level definiraš parametre, naprimer: barva ozadja, hitrost padanja tetrinov in musko, ki igra v ozadju (ime zvočne datoteke), itd.
JSON v grobem omogoča 2 različne vrste podatkov: Array in Dictionary. Podatke se v array našteva znotraj dveh oglatih oklepajev, dictionary pa določata zavita oklepaja. Podatke se lahko strukturira tako, da je naprimer en element v arrayu kar cel dictionary, znotraj tega dictionary-ja pa je lahko en podatek spet en nov array ali pa navaden integer tip itn.
V array zapisuješ podatke/parametre, pri katerem je važen vrstni red in se naštevajo lepo po vrsti od prvega do zadnjega. Naprimer Level-1 do Level-10. Vrstni red je v naprej znan, zato se imena parametrov ne shranjujejo ampak samo njihove vrednosti. Do njih se dostopa preko indeksa, ki določa zaporedno lego parametra.
V Dictionary pa zapisuješ hkrati ime parametra in njegovo vrednost. Naprimer: "barva-ozadja"="modra", "hitrost"=10, "glasba"="music-1.mp3" Tukaj vrstni red ni važen, do podatkov se dostopa tako, da se pokliče ime parametra.
Če vse skupaj združiš, lahko v JSON datoteko zapišeš array (dva oglata oklepaja), katerega njegovi elementi predstavljajo posamezne levele od 1 do 10. Vsak tak level pa je tipa dictionary (dva zavita oklepaja) in so v njem našteti parametri, kot so barva, hitrost in glasba. Recimo takole:
[
{"barva-ozadja"="modra", "hitrost"=10, "glasba"="music-1.mp3"},
{"barva-ozadja"="zelena", "hitrost"=15, "glasba"="music-2.mp3"},
{"barva-ozadja"="rjava", "hitrost"=20, "glasba"="music-3.mp3"},
{"barva-ozadja"="rdeča", "hitrost"=25, "glasba"="music-4.mp3"},
...
]
Več o sami JSON sintaksi si lahko prebereš na Wikiju:
JSON @ Wikipedia
Za Tetris bi recimo podatke grupiral za posamezne stopnje, naprimer od level-1 do level 10. Nato pa za vsak level definiraš parametre, naprimer: barva ozadja, hitrost padanja tetrinov in musko, ki igra v ozadju (ime zvočne datoteke), itd.
JSON v grobem omogoča 2 različne vrste podatkov: Array in Dictionary. Podatke se v array našteva znotraj dveh oglatih oklepajev, dictionary pa določata zavita oklepaja. Podatke se lahko strukturira tako, da je naprimer en element v arrayu kar cel dictionary, znotraj tega dictionary-ja pa je lahko en podatek spet en nov array ali pa navaden integer tip itn.
V array zapisuješ podatke/parametre, pri katerem je važen vrstni red in se naštevajo lepo po vrsti od prvega do zadnjega. Naprimer Level-1 do Level-10. Vrstni red je v naprej znan, zato se imena parametrov ne shranjujejo ampak samo njihove vrednosti. Do njih se dostopa preko indeksa, ki določa zaporedno lego parametra.
V Dictionary pa zapisuješ hkrati ime parametra in njegovo vrednost. Naprimer: "barva-ozadja"="modra", "hitrost"=10, "glasba"="music-1.mp3" Tukaj vrstni red ni važen, do podatkov se dostopa tako, da se pokliče ime parametra.
Če vse skupaj združiš, lahko v JSON datoteko zapišeš array (dva oglata oklepaja), katerega njegovi elementi predstavljajo posamezne levele od 1 do 10. Vsak tak level pa je tipa dictionary (dva zavita oklepaja) in so v njem našteti parametri, kot so barva, hitrost in glasba. Recimo takole:
[
{"barva-ozadja"="modra", "hitrost"=10, "glasba"="music-1.mp3"},
{"barva-ozadja"="zelena", "hitrost"=15, "glasba"="music-2.mp3"},
{"barva-ozadja"="rjava", "hitrost"=20, "glasba"="music-3.mp3"},
{"barva-ozadja"="rdeča", "hitrost"=25, "glasba"="music-4.mp3"},
...
]
Več o sami JSON sintaksi si lahko prebereš na Wikiju:
JSON @ Wikipedia
Kocka ::
Še klic datoteke.
Tu je stvar precej odvisna od platforme za katero je igra razvita, ter programskega jezika v katerem je program napisan. Večinoma obstajajo že narejene knjižnice za branje datotek in parsanje JSON podatkov - ne greš tega izumljat na novo. Funkcija ti navadno vrne objekt, ki je bodisi tipa Array ali pa Dictionary in potem samo prebereš podatek iz njega, ki te zanima.
Recimo, da je ta igra ena web aplikacija spisana v jQueryu. Tu pokličeš eno ajax funkcijo recion $.getJSON s parametrom URL, ki kaže na tvojo tekstovno JSON datoteko ter callback funkcijo, ki se pokliče takrat, ko je bila datoteka uspešno prebrana. V tej funkciji dobiš notri parameter "result" - to je JavaScript objekt, ki predstavlja strukturirane podatke iz tvoje JSON datoteke.
Glej primer:
http://www.w3schools.com/jquery/ajax_ge...
Tu je stvar precej odvisna od platforme za katero je igra razvita, ter programskega jezika v katerem je program napisan. Večinoma obstajajo že narejene knjižnice za branje datotek in parsanje JSON podatkov - ne greš tega izumljat na novo. Funkcija ti navadno vrne objekt, ki je bodisi tipa Array ali pa Dictionary in potem samo prebereš podatek iz njega, ki te zanima.
Recimo, da je ta igra ena web aplikacija spisana v jQueryu. Tu pokličeš eno ajax funkcijo recion $.getJSON s parametrom URL, ki kaže na tvojo tekstovno JSON datoteko ter callback funkcijo, ki se pokliče takrat, ko je bila datoteka uspešno prebrana. V tej funkciji dobiš notri parameter "result" - to je JavaScript objekt, ki predstavlja strukturirane podatke iz tvoje JSON datoteke.
Glej primer:
http://www.w3schools.com/jquery/ajax_ge...
Blinder ::
kaj pa je ajax?
99.991% of over-25 population has tried kissing.
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
If you're one of the 0.009% who hasn't, copy & paste this in your Signature.
Intel i3-12100f gtx 3050 Pismo smo stari v bozjo mater. Recesija generacija
sasha991 ::
Zdej ko sem naredil json file ki zgleda tako:
var text = '{ "stopnje" : [' +
'{ "stopnja":"Lahko","hitrost":"10" },' +
'{ "stopna":"Srednje", "hitrost":"15" },' +
'{ "stopnja":"Tezko""hitrost":"20" } ]}';
sem poskušal vključit v index.html dokument v katerem je vsa potrebna koda za tetris, mi ne naredi nič... Dokument sm vključil s tem ukazom: var obj = JSON.parse(text);+ pot do dokumenta in se ne zgodi nič.
Se komu mogoče sanja?
var text = '{ "stopnje" : [' +
'{ "stopnja":"Lahko","hitrost":"10" },' +
'{ "stopna":"Srednje", "hitrost":"15" },' +
'{ "stopnja":"Tezko""hitrost":"20" } ]}';
sem poskušal vključit v index.html dokument v katerem je vsa potrebna koda za tetris, mi ne naredi nič... Dokument sm vključil s tem ukazom: var obj = JSON.parse(text);+ pot do dokumenta in se ne zgodi nič.
Se komu mogoče sanja?
Kocka ::
Ali lahko prebereš podatek ven? Recimo tole:
bi moralo bi izpisati "Lahko". Glej primer:
http://www.w3schools.com/json/json_eval...
Številk 10,15,20 ne rabiš dajati v narekovaje, razen, če hočeš, da so tipa string namesto integer.
var obj = JSON.parse(text); alert(obj.stopnje[0].stopnja);
bi moralo bi izpisati "Lahko". Glej primer:
http://www.w3schools.com/json/json_eval...
Številk 10,15,20 ne rabiš dajati v narekovaje, razen, če hočeš, da so tipa string namesto integer.
sasha991 ::
to sm tut že probu pa igra sploh ne zaštarta... a obstaja mogoče kakšna opcija, da bi dodal neko tabelo in bi uporabnik pred začetkom igre izbral stopnjo,ki so podane v json datoteki?
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | JsonOddelek: Programiranje | 2339 (878) | acookook |
» | php send data to private dirOddelek: Programiranje | 896 (635) | Excavator |
» | jquery ajax problemOddelek: Izdelava spletišč | 1487 (1109) | miko22 |
» | [js] json kompresijaOddelek: Programiranje | 3834 (3183) | infiniteLoop |
» | [PHP+HTML]Vprasanje glede forme s comboboxiOddelek: Programiranje | 1467 (1286) | cobrica |