Dobrý deň chcem sa spýtať ako sa da naučiť algoritmický rozmýšľať programujeme v Jave s písonky som mal pomerne slušný výsledok (=teória) čiže sa viem naučiť teóriu ale naprogramovať neviem asi nič snáď len kalkulačku jednoduchú (ale fakt len jednoduchú pre 2 čísla akonáhle by som mal spočítať,odčítať,vynásobiť alebo vydeliť n čísel už som z toho v prdeli) ale akonáhle je tu zložitejšia úloha neviem ani ako ju mam začať riešiť. Napríklad sme robili hru sokoban kde sme mali pole hviezdičiek ktoré sme si zadali pri vytvorení inštancie napríklad 5x4 v poli boli hviezdičky potom sme si mali zvoliť pozíciu panáčika bedničky a exitu a dotlačiť s panáčikom bedničku do exitu pričom mal byť program aj blbovzdorný (tj. napr bednička sa nedala vytlačiť mimo poľa alebo ak je bednička v neakom rohu už sa ňou neda pohnúť a takto robili sme to cez for pričom sme tam kládli podmienky. Ale ja proste neviem na to prísť ako mam podobne úlohy riešiť. Mohol by som sa to naučiť naspamäť ale to my na skuúške nepomôže kedže neviem aký program bude potrebne vytvoriť. Preto prosím o radu ako sa mam naučiť programovať. Rada typu, že si mam zobrať hotový program a pochopiť mu mi nepomôže už som to skúšal jednoducho na to pozerám (samozrejme rozmýšľam nad tým) ale nechápem tomu čo to tie podmienky tam robia. Proste neviem rozmyšľať týmto požadovaným spôsobom napriek môjmu snaženiu. Inak samozrejme aj mám vlastnú knihu OOP bez predchodzích znalostí a ako vravím teórii chápem ale naprogramovať fakt neviem nič. Sám tomu nechápem ale je to tak jeden učiteľ mi povedal, že proste na to nemám predpoklady ale nemôžem s ním súhlasiť všetko čo sa niekto chce naučiť sa musí vedieť naučiť a hotovo či už mu to trvá dlhšie alebo kratšie. Tak poprosím o vaše rady ako na to. Vďaka.
Fórum › Java
Ako sa naučiť algoritmycky rozmíšlať
Napadlo ma, že panačik sa musí vedieť hýbať do 4 strán (ale ako to zabezpečiť nemám šajnu) ak preskočí o políčko vpred musí sa zmazať s toho políčka na ktorom bol predtým a vpísať na poličko na ktoré ho chcme dostať. Ale ak narazí na bedničku seba musí premiestniť na miesto kde bola bednička a bednička musí skončiť o jedno políčko pred panáčikom samozrejme sa musí vymazať pôvodna pozícia panačika aj bedničky. Samozrejme je tu otázka blbu vzodrnosti čiže ak je bednička úplne v roku neda sa nou pohnuť tiež sa neda bedničku posunuť mimo pole alke to ani panačika. A keď sa bednička dostane do exitu (ktorý ma je ako pevný nemenny bod) hra sa skončí.To ma napadlo ale ako to spraviť nemám šajnu no viem, ťe cez fory a možno podmienky (a ešte nám nakazali použiť arraylist ktorý sme dovtedy nepoznali čiže sme si to museli najsť na oficialnej stranke javy) ale ako to skombinovať aby to šlo podľa slovneho popisu nemám ani šajnu.
Teraz idem na cvika z informy ale kludne píšte ja odpíšem k večeru dik, že mi venujete pozornosť.
no ted by se momentalne hodilo asi nejprve navrhnout si herni objekty...
1. zed - fixni pozice
2. hraci plocha - fixni pozice - ale mohla by obsahovat kam se z ni da pohybovat, jakej objekt na ni je
3. exit (pro umisteni kamenu)
a pohyblive objekty - ty ktere budou v hraci plose nebo exitu..
4. panacek
5. kamen
pohyblive objekty budou muset testovat smer kam se pohybuji jestli mohou .. hlavne kamen.. panacek testuje spise zdi
vse bude obsahovat neco jako vykresleni na svoji pozici a tak.. muze se vykreslovat jen co se pohnulo-- nejake priznaky a tak...
jj jasne chapem tomu ale ide prave o ine mi sme si vytvorili 3 triedy Plan, Hra, Aplikacia.
S Hry som vybral metodu Hore tu je :
public void hore()
{
if(x>0) // aspon v 1. riadku
{
if(plan.dajPlan()[x-1][y] == " * ") // miesto nado mnou je volne
{
x--;
plan.dajPlan()[x][y] = " P ";
plan.dajPlan()[x+1][y] = " * ";
}
else
if(x>1) // ci sa mozem pozriet 2 riadky nado mnou
if(plan.dajPlan()[x-1][y] == " B ") // miesto nado mnou je balik
{
if(plan.dajPlan()[x-2][y] == " * ") // ci miesto 2 riadky nado mnou je volne
{
plan.dajPlan()[x-2][y] = " B ";
x--;
plan.dajPlan()[x][y] = " P ";
plan.dajPlan()[x+1][y] = " * ";
}
else
if(plan.dajPlan()[x-2][y] == " E ") // ci miesto 2 riadky nado mnou je exit
{
plan.dajPlan()[x-2][y] = " O ";
x--;
plan.dajPlan()[x][y] = " P ";
plan.dajPlan()[x+1][y] = " * ";
}
}
}
}
Ale proste nechapem ako to funguje proste stale na to pozeram a nemam sajnu ako je to prepojene. Pracujeme v programe BlueJ. A tiez mam problem pochopit ako su triedy Aplikacia Hra a hra su prepojene ako spolupracuju nedava mi to zmysel. Tu je subor ako to je ale nechapem jednotlive prepojenie medzi triedami a preco su prepojene prave takto a hlavne tie podmienk hore, dole, doprava, dolava to by som nikdy sam nenapisal nehladne na to kolko by som pri tom sedel. http://www.ulozisko.sk/569412/brandobur.zip
no radky jdou odzhora dolu.. mas pozici na mape x a y (ve tride)... cisluje se od 0 pro prvni radek
musis byt aspon na druhem radku (tj index 1) aby ses mohl pohnout o jedna nahoru...
dal se kontroluje co je nad tebou .. bud je tam misto tak se pohnes.. pokud je tam balik tak se kontroluje dalsi misto nad... pokud je nad balikem exit tak se posune balik i figurka, pokud je tam misto tak se posune balik a panak.. nic slozityho.. (jen je tam maskovani tech ifu)
#1 Patrik
Nenapisal si na aku skolu chodis, ci SS alebo VS, ale to je v podstate jedno , aj ked na VS by ste mali mat predmety zaoberajuce sa algoritmizaciou. Na programovanie potrebujes dobre analyticke myslenie. Vediet problem rozlozit na viacero jednoduhsich problemov, postupne ich vyriesit a prepojit aby spolu splnili ciel. Ako zacat? No od zaciatku, vybrat si programovaci jazyk, zacat pisat jednoduche programy (Hello World, nacitanie vstupu, faktorial - rekurzia, prehladavacie algoritmy.....) a naucit sa syntax. Pred riesenim problemu sa zamysli, ze co ocakavas aby program robil, ake vstupy bude mat, ake vystupy. Rozhodol si sa ist cestou OOP a vravis, ze teoriu vies - tak skusaj. Programovat sa nenaucis citanim knih a cudzich kodov ale tym, ze sam budes tvorit kod. Nevravim, ze citanie nepomaha, sam citam neustale nieco informaticke, ale bez toho kodenia to proste nejde. Ked zvladnes zakladnu syntax jazyka postupne si skusaj kniznice, uc sa o datovych strukturach, prehladavacich a triediacich algoritmoch, casovej zlozitosti...
Tiez sa programovat este len ucim a dost mi pomaha papier a ceruzka. Vcera som pisal program na riesenie hry ClickNSlide, ktory vyuzivai heuristiky. "Spotreboval" som pri tom dve A4, na jednej som mal same stvorce 3x3, na druhej pseudokod aby som sa v tom nestracal.
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Java - GUI (ako sa naucit) — založil puko123
Ktory php framework sa naucit ako dalsi ? — založil nord
Ako spolahlivo zistit ci je subor novsi ako druhy — založil marioff
[tasm] kde sa ho naucit? — založil Guiseppe
Moderátoři diskuze