Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Abban szeretném a tanácsotokat kérni, miként lehetne megoldani, hogy a munkalapon egy meghatározott oszlopban a számok tizedesjele ne a rendszerbeállítás szerinti (pl. ',') legyen, hanem a '.'! Nem megváltoztatni szeretném az Excel (vagy Windows) beállításait (bár úgy megadhatnám, hogy mi legyen a tizedes elválasztó, igaz, ez az egész munkalapra érvényes lesz), hanem a kérdéses oszlopra tudnék-e olyan cellaformázási beállítást alkalmazni, ami csak abban az oszlopban változtatná meg (ha szükséges) a tizedesjelre vonatkozó területi beállításokat? Tehát minden más oszlopban az aktuális területi beállítás szerinti tizedesjel szerepelne, de abban a bizonyos oszlopban mindig '.' lenne a tizedes elválasztó. (Nagyon kerülő megoldást tudok, ha összefűzöm az egészrészt a tizedesponttal, majd a tört részből a megfelelő számú tizedes számjegyet, de hátha lenne ettől egyszerűbb megoldás.)
"Mondok egy példát. Legyen a kiindulás állapot az, hogy az Y tengely fentről lefelé nő, mint a munkalapon a sorok számozása, és a sötét oldal a tábla tetejéről indul. Ekkor:
Ennél több nem is kell ahhoz, hogy megfogalmazd a programban figyelembe veendő lépési korlátozásokat. Inkább a fínomságokra érdemes még odafigyelni, ami elsőre elkerülheti a figyelmedet. Például, ha az ellenfél sakkot adott, akkor minden lépés érvénytelen, aminek az eredményeként a király sakkban marad. És ennek ellentéteként minden olyan lépés érvénytelen amelynek eredményeképp a király sakkba kerülne (Tehát, ha a királyt a sakk elől védő bábút mozdítaná el a játékos).
Aztán van még két speciális lépés, amiről szintén nem szabad megfeledkezni. Az egyik az en passant, azaz az anpassz, a másik a rosálás. Az utóbbinál azt kell tudni, hogy királylépésnek számít. Tehát ha a - mostanáig mozdulatlan - király kettőt lép balra, vagy jobbra, és a mellette lévő bástya sem mozdult még, akkor az szabályos lépés, amire a programnak a bástyát át kell emelnie a királyon.
Sakkozni egyébként tudsz? Illetve pontosabban fogalmazva tudod a szabályokat? Mert szerintem első lépésként azt kellene nagyon alaposan összeszedned, amit játék közben akár öntudatlanul is alkalmazol. Például, hogy ha a bástya vagy a futó útjában valamilyen saját bábú áll, akkor csak az azt megelőző kockára lehet lépni. Ha ellenfélé áll ott, akkor szintén, de annyival egészül ki, hogy le is ütheted. Mögé egyik esetben sem kerülhetsz. A királynő a kettő kombinációja. A ló esetében ilyen megkötés nincs. Gyalognál különválik a 2 (7) mezőről történő lépés, és az ütéssel is egész más a helyzet. A király meg csak akkor üthet, ha ezáltal nem kerül sakkba. És így tovább. Szóval ezeket kellene először megfogalmaznod nagyon szabatosan (nem úgy, mint az első bejelentkezésedkor, hogy „...segítene nekem sakkot csinálni...”).
Ugyanis a programozás két dologról szól. Az első a megoldandó feladat nagyon precíz megfogalmazása, lehetőleg minél elemibb részekre bontva, végiggondolva az apróbb buktatókat, hibalehetőségeket. És lehetőleg nem kifelejtve a megfogalmazásból azokat a dolgokat, amiket egyébként általában evidensnek tekintünk. Ugyanis a számítógép számára nincs evidencia. Neki mindent el kell magyarázni. Úgy sejtem, hogy Jimmy most ezt várja tőled, hogy aztán segíthessen a továbblépésben.
És csak ha ez megvan, akkor jöhet a második rész - ami nemegyszer könnyebb az elsőnél – a kódolás, azaz a programkód megírása. Bonyolultabb feladatoknál a kettő közé beiktatható egy folyamatábra elkészítése, mert a kódolásnál könnyen eltévedhet az ember.
Szóval jó munkát! Ha ez nem megy, akkor idén esélytelen a dolog.
Ja és egy off javaslat itt a beszélgetésnél: Ha itt válaszolsz valakinek, lehetőleg ne az 'új hozzászólás' gombot használd, hanem a hozzászólás felső sorában a válasz gombot (a visszafelé hajló nyíl). Ugyanis akkor rögtön látszik, hogy éppen kinek válaszolsz, és ez megkönnyíti a beszélgetés követését.
Igen sakk programmot szeretnék, nem kicsi hanem nagy erőfeszítés árán mert ahogy már írtam sajnos semmi tudásom sincs. Ja és sajnos nincs más ötletem. :)
Utólag szeretném előrebocsátani, hogy én azért foglalkozom most a kérdéseddel, mert megbántam a tegnapi kirohanásomat, és mert az email címed alapján valószínűleg lány vagy, és a hölgyeket egy férfiembernek tisztelni és segíteni illik. De a tartalmi kérdésben nem változott a véleményem: ebből a projektből akkor lesz eredmény, ha dolgozol rajta. Én nem fogom helyetted megcsinálni, csak segítek, a szó valódi értelmében. December 29-ig még van két hét (amit nevezzünk inkább egynek), szerintem van esélye, hogy elkészül. De el kell döntened, hogy mit akarsz: sakkprogramot némi erőfeszítés árán, vagy van jobb ötleted, amiben én nem szerepelek.
Ez egy villámválasz volt, de én nem ezt várom tőled. Gondolkodj, és írd össze. Tételesen.
Ha a lépő bábu sötét bástya, akkor milyen feltételeknek kell teljesülni, hogy a lépés szabályos legyen. Ha a lépő bábu sötét huszár, akkor akkor milyen feltételeknek kell teljesülni, hogy a lépés szabályos legyen. stb. stb. Teljes körű lista kell, nagyjából úgy, ahogy a sötét gyalog esetében leírtam az előbb.
Az nem baj, ha a feltételek közt olyan is van, amit nem tudsz képletben megfogalmazni, számszerűsíteni. Ha pl. azt mondod: "meg kell vizsgálni, hogy a bábu lépése útjában van-e másik bábu", de nem tudod, hogyan lehet ezt a vizsgálatot megvalósítani, akkor az egy fekete doboz. Tudjuk mit csinál, de nem tudjuk hogyan. Pontosabban MÉG nem tudjuk. De majd az is meglesz előbb-utóbb.
Hát szerintem először is meg kéne vizsgàlni azt, hogy azon a helyen ahova lépni szertnénk van e egy màsik bábu, aztàn a lépő bàbut megkéne vizsgàlni, hogy szabályos e a lépés vagy igazából nem tudom
Belegondoltam, és arra jutottam, hogy talán még egyszerűbb is lenne grafikus felülettel. De ezt most egyelőre hagyjuk, a megjelenítéssel majd később foglalkozzunk. Most inkább nézzük meg a "core" funkciót.
Tegyük fel, hogy a sakktábla egy kétdimenziós koordinátarendszer, X éy Y tengellyel. Tegyük fel, hogy X0,Y0 koordinátákon áll egy bábu, amit az egyik játékos mozgatni akar X1,Y1 koordinátákba. (X1 nem feltétlenül különbözik X0-tól, és Y1 nem feltétlenül különbözik Y0-tól, de lagalább az egyik koordinátának változnia kell, különben nincs mozgás.) A cél az, hogy összerakjunk egy függvényt, ami visszaadja egy tervezett bábulépésről, hogy az érvényes vagy sem. Ehhez kell egy jó algoritmus. Gondolkodj, és írd össze, hogy szerinted milyen szempontból kellene megnézni a lépést. Milyen vizsgálatokat kell elvégezni, hogy az algoritmus megtalálja a tervezett lépés érvénytelenítéét okozó akadályokat, szabálytalanságokat?
Mondok egy példát. Legyen a kiindulás állapot az, hogy az Y tengely fentről lefelé nő, mint a munkalapon a sorok számozása, és a sötét oldal a tábla tetejéről indul. Ekkor:
HA a bábu sötét gyalog
ÉS delta X = 0
ÉS delta Y = 1
ÉS X0,Y1 koordinátákon nem másik bábu
ÉS Y1<=8
AKKOR az egy szabályos lépés.
Szedj össze mindent, ami eszedbe jut, nem baj, ha nem teljes a lista, majd kiegészítjük.
Olyan nagyon igényesnek nem kell lennie szerintem, de azért egy sakk tablára kéne hasonlítani de szerintem a bábukat például szerintem helyettesíthetik betűk
Pont tegnap voltam egy tréningen, ahol elmondták, hogy a passzív ember kihozza másokból az állatot, magára húzza amazok agresszióját. Azt mondta a tréner, hogy vannak akik úgy mennek végig az utcán, hogy szinte kedvünk támadna fejbevágni. Ezek az emberek gyakorlatilag fejbe vágatják magukat, és midenkiből kiváltják ezt a reakciót.
Én persze nem hittem el, hogy ennyire ösztönlény lennék. És erre tessék...
És mit gondolsz, mi az elvárás: grafikus megjelenítés, ami úgy is néz ki, mint egy sakktábla, vagy elég egy 8x8-as cellatartomány valamelyik munkalapon, ahol betűk/számok jelképezik a sakkfigurákat? Szóval mennyire kell igényesnek lennie?
Ahol eleve úgy kezdik az oktatást mintha már mindenki tudna programozni, ott valszeg mindenki tud programozni. Pont egy ilyen helyre kellett jelentkezned?