Diskuze: Člověče nezlob se
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 49 zpráv z 49.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
nejjednodussi je to pres pictureBoxy, kteryma jen budes hybat, pripadne je
schovavat
no já si nějak nedokážu ani představit nějak logicky...
graficky si to nějak představím, ale jak s tím budu hýbat to netuším
Logicky to budeš mít jako kruhový seznam se čtyřmi vstupními body.
Myslel tim logickou reprezentaci hraci plochy - policek.
To namodelujes idealne seznamem policek, kde kazde pole bude nejak ukazovat na
to dalsi a protoze v clovece nezlob se je ta cesta kruhova, tak "posledni"
policko v tvem seznamu by melo ukazovat zase na prvni.
A pak jeste samozrejme budes muset vymyslet odbocky do domecku
Pictureboxy? Ne to opravdu ne... Klasicky v XNA - uděláš to v políčkové grafice. Zvolíš velikost políčka a jím pak budeš násobit čísla zapsaná v políčkových jednotkách. Na začátku budeš mít seznam políček, po kterých lze chodit - a v Update budeš sledovat, zda pro budoucí místo figurky platí
polickaPoKterychSeDaChodit.Contains(new Vector2((int)(budouciX / velikostPolicka), (int)(budouciY / velikostPolicka)))
a soucasne kontrola kolik políček tím překročí... Tedy po kliknutí na figurku - které díky rozdělení herní plochy na políčka můžeš snadno získat dotazem na
vsechnyFigurky.Contains(new Vector2((int)(klikleX / velikostPolicka), (int)(klikleY / velikostPolicka)))
Před tím jej budeš muset pomocí LINQ zkrátit o tvé figurky...
Jo a pohyb upřesním:
pomocí dotazu Contains zjistíš, na kterou figurku je kliknuto - tu dáš do proměnné - lastFigure - a když další klik bude v seznamu polickaPoKterychSeDaChodit a nebude v seznamu figurek protihráčů, tak provedeš onu kontrolu dostupnosti políčka - podle hozené hodnoty...
A v Draw budeš pochopitelně políčka ze seznamu polickaPoKterychSeDaChodit vykreslovat jinak, než políčka po kterých se nedá chodit...
Jo tady jsme v XNA, chtelo by to nejak vypisovat, v ktery sekci je to dotaz,
takhle to clovek vidi az kdyz koukne nahoru do adressbaru.
Jsme tu v C# a .NET - je kravina dělat hry ve WF/WPF - chceš hru - XNA... Jakmile budeš dělat v xy Pictureboxech, tak dokonale zahltíš procesor...Kdepak - toto chce pěkně DirectX... A jak jsem napsal - dá se to krásně zvládnout v políčkové grafice... Stačí sepsat políčkové pozice průchozích polí a uchovávat seznam pozic všech hráčů + jejich identifikátor - takže bych to udělal přes slovník - identifikátor může být třeba Struct - tím to bude pěkně přehledné... Pomocí LINQ pak ze seznamu hráčů půjde snadno vynechat aktuálního hráče na tahu...
Seznam průchozích polí by se asi měl udělat v externím textovém souboru.
Pokud to máš jako úkol do školy, tak se od tebe XNA asi neočekává... Člověče není graficky náročná hra, nic se tam nepřekresluje, klidně to může být jako form.
Ale rozhodně ne jako tisíce Pictureboxů... Nechápu, proč hru nedělat v XNA - cpát hru do Formů...
Protože ho profesor třeba ani nezná nebo se nemá smysl učit XNA když neumíš ani formy? Já bych to dělal jako 1 picturebox a na ten si čmáral, tedy jako v XNA, jen ve formech.
Pokud někdo s C# začíná, tak přes WF je to mnohem jednodussi nez pres xna.
To jako spriteBatch.Draw je težší, než založit PictureBox a skládat obrázek pomocí Graphics?
Navíc metody Draw a Update - ve Formu to bude chít ještě Timer a kdo ví co...
Ale XNA neni jen napsani SpriteBatch.Draw.
Obrazek nemusis skladat pres graphics, staci mit jeden picturebox jako pozadi a dalsi transparentni pictureboxy, ktery jen budes posouvat jako figurky. A updatovat to staci az kdyz se hybe figurkou, ani tam nemusi byt animace pohybu, proste rovnou skoci na cilove misto.
Takhle jsem delal hry, kdyz jsem zacinal a je to nejjednodussi zpusob, jak delat s grafikou.
A to je právě blbost - když už PictureBox - tak jeden. Je rozhodně lepší lepit pomocí Graphics... Nechápu nač to zesložiťovat tisíce Controly - lze to krásně udělat v políčkové grafice - takže stačí po celou dobu počítat v políčkové grafice a při vyreslení vynásobit velikostí políčka...
A o čem jiném je XNA? Je to pravidelné překreslování herní plochy - navíc s možností skládání - komponentky...
No kapli jste na to že ten wikipediamaster XNA neumí, takže to neumím ani
já, ale zatím jsem stále u kostky hrací pole přes graphics dokážu
udělat..... proste kopu koleček udělám.. jestli to teda takto myslíte
Ale zatím mě teda nenapadlo jak posunovat figurky po hracím poli + k tomu
budu musit propojit aj kostku ne ?
Pospal jsem to velice jasně...
Uděláš seznam políček, po kterých se dá chodit, seznam figurek a při kliknutí se podíváš, zda nejbližší políčková pozice kliklého místa je v seznamu figurek - pokud ano - uložíš do proměnné lastFigure onu figurku - pokud ne - posuneš lastFigure na kliklé místo - pokud bude v rozsahu hozené hodnoty...
Děláš si ze mě srandu?
"Uděláš seznam políček, po kterých se dá chodit, seznam figurek a při kliknutí se podíváš, zda nejbližší políčková pozice kliklého místa je v seznamu figurek - pokud ano - uložíš do proměnné lastFigure onu figurku - pokud ne - posuneš lastFigure na kliklé místo - pokud bude v rozsahu hozené hodnoty..."
PictureBoxy muzes vytvaret dynamicky a mit je prirazeny k figurkam, pak je uz
celkem fuk, jestli kreslis na jeden nebo obcas hejbnes s dalsima..
Hlavne ti to staci updatovat az po pohnuti figurkou, takze nemusis mit zadnou smycku/timer -> zatizeni procesoru je 0% narozdil od XNA, ktery porad kresli (kdyz uz jsi tu na zacatku diskuze zminoval zatizeni procesoru)
takže ještě jednou... nevím jak to mam zapsat, jelikož jsem dosud
dokázala vytvořit jen hrací kostku a šibenici podle tutoriálu....
tak promin že jsem holka a zřejmě asi uplně blbá...
rozumím jak to bude fungovat, ale nevím jak to napsat...
Proč to děláš složité? Stačí jeden PictureBox - v cyklu na něj vykreslíš podle pozic figurek figurky, podle pozic polí po kterých se dá chodit políčko průchozího pole a zbytek dolepíš Graphics...
TwigyDaFirenze
Popsal jsem ti to jak to jen šlo... Vytvoříš seznam políček, po kterých se dá chodit, slovník
figurek - kde klíč bude asi enum a proměnnou lastFigure. Střídat po kolech
budeš hodnoty enum - a ty pak budeš používat při dotazu po kliknutí - zda
slovníkFigurek.Values.Contains(viz. hoře) a před tím usekneš asi
pomocí LINQ aktuálního hráče - zvoleného z enum... Vše je hoře
popsáno...
Složité to děláš ty, když jen posouváš pictureBoxy, tak nemusíš
vůbec vědět, co je Graphics
Když jen posouváš PictureBoxy - takže ty potřebuješ xy PictureBoxů - atd... Mě stačí 2 proměnné, seznam a slovník - zda pak použiješ Graphics je jen na tobě...
To uz je celkem fuk, vyjde to v podstate nastejno
Koukám, že tě matesax odrovnal, to je mu podobné Úplně v klidu, na XNA zapomeň a
na enum taky.
1. Jako první si vytvoř hrací pole. Je celkem jedno, přes kterou komponentu to uděláš, Luboš Běhounek Satik má pravdu, že jednodušší (i když ošklivější) je dát jich tam více. Čili si udělej picturebox s puntíkem a ty si 100x nakopíruj na formulář a postav si z toho hezky hrací plánek.
Pictureboxům vyplň vlastnost Tag a to hezky od 1 do X, kde X je poslední poličko ve hře (nevím z hlavy kolik jich je). Prostě aby 1. puntík měl 1, druhý 2 atd., hezky popořadě, jak se kolem nich chodí.
"Domečkům" (těm 4 puntíkům, kde se čeká na nasazení fungurky) dej Tag podle barvy (tedy třeba 4 červené puntiky budou mít tag "cerveny0", "cerveny1"...). Pak jsou ty 2. domečky, kde je cíl, to udělej podobně, jen s nějakým prefixem, třeba cil_cerveny0, cil_zeleneny0 atd.
2. Udělej si třídu Figurka, té uděláš atributy pozice (int) a barva (tu jako string). Dále tam bude bool domecek a bool cil.
3. Poté si udělej List figurek a ten si naplň. Vytvoříš tam figurky, těm dáš barvu a nastavíš pozici na 1,2,3,4, barvu dle potřeby a domecek na true, cil na false.
4. Kostku máš ukázanou v tutoriálu zde, udělej si jí podle toho: http://www.itnetwork.cz/…ahodna-cisla . Udělej si instanci kostky a na nějaké tlačítko na formu si udělej, aby se vykreslovala podle toho, co padlo.
5. Až se sem dostaneš, pošli to a pokud to k něčemu bude, vymyslím
zbytek
Algoritmicky podle mého názoru nejde o nic složitého,
pokud se nesnažíš napsat k tomu kvalitní, konfigurovatelnou AI.
Jako 2x human player to musí jít napsat prakticky v čemkoli a jakkoli
celkem se základními znalostmi vybraného prostředí.
Mám jedno Člověče hotové na skladě, ale opsat ho nemůžeš,
protože je v gamemaker language. A to by asi sveřepí šakali zavile vyli..
Jestli ale chceš, můžeš z něj vytahat sprity. Figurky jsou rendrované,
políčka jednoduchá, kostka je plně animovaná. Třeba ti to pomůže,
myslím, že graficky to nemám špatné. Kód má nějaké drobné
nedostatky,
hlavně v AI, která je extrémně hloupá (takže spíš Artificial
Stupidity)
a občas se stane, že nejde zapnout zvuk. To ale zas tak velká škoda
není,
protože je dost hrozný.
Kód určitě nečti, je to taková prasárna, že to dřív napíšeš
třikrát znovu,
než se v tom vyznáš. Psal jsem to dětem na hraní, tak to prostě bylo
jedno.
Pro nějakou inspiraci to snad může posloužit, tak prosím nekamenovat.
http://www.ulozto.cz/…/clobrdo-zip
Ale koukám, že sdraco už to asi vzal za správný konec..:)
no tak to jsem zvědavá co z toho upatlám
jinak kostku jsem si vytvořila sama, to jsem zvládla
zítra to budeme prej ve škole řešit tak jsem zvědavá na toho
WikipediaMastera co nám hodlá "vysvětlit"
Poradil bys mi prosím jak jsi na to šel jako mám udělanou kostku a pole ale nejsem si jistá jak to s těma pictureBoxama udělat.
Ano, udělala jsem to podle toho co jsi psal. Teda kromě listu figurek to si nejsem přesně jistá jak udělat.
Možná by bylo dobré hru zjednodušit z 'klasického' rozvržení na
'zjednodušené' ... to tak že hrácí pole budou ve čtverci např 10x10 a
domečky budou průsečíky stran - rohy .... také by bylo třeba dobré
zjednodušení udělat že v cíli nemusíš figurky rovnat ale prostě že
vejdou do cíle a budou tam (jestli to chápete)
(klasickou herní deskou myslím - http://www.openoffice.cz/…nal/1417.jpg)
není potřeba dělat těžké hrací pole když dívenka nemůže pochopit jak
na to
má rade zní ... zjednodušuj jak můžeš nejsi nějaká ***** vývojářka
No při hodu kostkou připočteš to co padlo (třeba 4) k pozici figurky (třeba 11). Finta jak najít políčko kam chceš jít (tedy 15) je v tom, že projedeš všechny komponenty formuláře a podle vlastnosti tag najdeš to správné. Nemám čas to zkoušet, ale bude to vypadat nějak takto:
kamChci = "15";
// projedu vše na formuláři
foreach (Component c in formular.Components)
{
// jsem na pictureboxu
if (c is PictureBox)
{
// mám správný picturebox
if ((c as PictureBox).Tag == "15")
{
// dám picturebox figurky na pozici toho políčka
figurka.Position = c.Position;
...
}
}
}
Kdyz ted plynule navazu na David Hartinger , tak dalsim krokem budou pravdepodobne kolize figurek. Tedy pokud na cilovem policku nekdo stoji, tak vykonam nejakou akci.
Kdyz tam bude stat figurka prave hrajiciho hrace, hrac bude muset tahnout
jinou. Kdyz tam bude stat figurka ciziho hrace, bude vyloucena z5 do domecku
jednoducha kontrola
Môže mať jeden Picturebox viac obrázkov a tie prepínať?
Myslím to tak, že jedno políčko Človeče sa bude meniť podľa toho, či je
prázdne, alebo je tam farebná figurka.
Viem, že to ide tak, že sa prekryje niekoľko Picturebox-ov a len potrebný
bude viditeľný.
Ale predsa ma zaujíma, či to nejde aj inakšie.
Zakládej prosím nová vlákna místo komentování článků a psaní do starých vláken. Picturebox slouží pouze k zobrazení jednoho obrázku a neměl by sloužit ani k jeho uchování. Obrázky se ukládají do Bitmap a potom se vykreslují na Graphics.
predtym nez som poznal tuto konstrukciu tak som mal na kazdy picturebox 1
case, ked ich tam bolo tak 50 tak to vyzeralo dost divoko
Zobrazeno 49 zpráv z 49.