Avatar
Twigynka
Člen
Avatar
Twigynka:

Ve škole jsme dostali úžasný domácí úkol na svátky.
Vytvořit hru člověče nezlob se v grafické podobě... až na hrací kostku nemám šajnu jak na to.
Věděl by někdo ? :D

 
Odpovědět 18.12.2012 19:44
Avatar
Luboš Běhounek (Satik):

nejjednodussi je to pres pictureBoxy, kteryma jen budes hybat, pripadne je schovavat :)

Editováno 18.12.2012 19:46
Nahoru Odpovědět 18.12.2012 19:45
:)
Avatar
Twigynka
Člen
Avatar
Odpovídá na Luboš Běhounek (Satik)
Twigynka:

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

 
Nahoru Odpovědět 18.12.2012 19:48
Avatar
Kit
Redaktor
Avatar
Odpovídá na Twigynka
Kit:

Logicky to budeš mít jako kruhový seznam se čtyřmi vstupními body.

Nahoru Odpovědět 18.12.2012 20:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Twigynka
Člen
Avatar
Odpovídá na Kit
Twigynka:

když mi to řekneš takhle tak nevím vůbec jak to myslíš :)

 
Nahoru Odpovědět 18.12.2012 20:08
Avatar
Luboš Běhounek (Satik):

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 :)

Nahoru Odpovědět 18.12.2012 20:34
:)
Avatar
Twigynka
Člen
Avatar
Twigynka:

a jak budu posunovat figurky ?
Ja ani nevím jak to mam zapsat ...

 
Nahoru Odpovědět 18.12.2012 20:40
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

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 polickaPoKterychSe­DaChodit 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 polickaPoKterychSe­DaChodit vykreslovat jinak, než políčka po kterých se nedá chodit...

Editováno 18.12.2012 21:09
 
Nahoru Odpovědět 18.12.2012 21:05
Avatar
Luboš Běhounek (Satik):

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. :D

Nahoru Odpovědět 18.12.2012 21:12
:)
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

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.

Editováno 18.12.2012 21:18
 
Nahoru Odpovědět 18.12.2012 21:17
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

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.

Nahoru Odpovědět 18.12.2012 21:18
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
matesax
Redaktor
Avatar
Odpovídá na David Čápka
matesax:

Ale rozhodně ne jako tisíce Pictureboxů... Nechápu, proč hru nedělat v XNA - cpát hru do Formů...

Editováno 18.12.2012 21:21
 
Nahoru Odpovědět 18.12.2012 21:20
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na matesax
David Čápka:

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.

Nahoru Odpovědět 18.12.2012 21:21
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

Pokud někdo s C# začíná, tak přes WF je to mnohem jednodussi nez pres xna.

Nahoru Odpovědět 18.12.2012 21:22
:)
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

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...

Editováno 18.12.2012 21:24
 
Nahoru Odpovědět 18.12.2012 21:23
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

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.

Nahoru Odpovědět 18.12.2012 21:27
:)
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

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...

Editováno 18.12.2012 21:33
 
Nahoru Odpovědět 18.12.2012 21:32
Avatar
Twigynka
Člen
Avatar
Twigynka:

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 ?

  • vlastně dojet do domečku ...
 
Nahoru Odpovědět 18.12.2012 21:34
Avatar
Twigynka
Člen
Avatar
Twigynka:

Kluci vlastně vám ani nerozumím ale je hezký jak se to snažíte vymyslet :)Díky

 
Nahoru Odpovědět 18.12.2012 21:35
Avatar
matesax
Redaktor
Avatar
Odpovídá na Twigynka
matesax:

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...

 
Nahoru Odpovědět 18.12.2012 21:38
Avatar
Twigynka
Člen
Avatar
Odpovídá na matesax
Twigynka:

Jestli to je v XNA tak v tom to nemužu dělat ....

 
Nahoru Odpovědět 18.12.2012 21:40
Avatar
matesax
Redaktor
Avatar
Odpovídá na Twigynka
matesax:

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..."

 
Nahoru Odpovědět 18.12.2012 21:41
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

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)

Nahoru Odpovědět 18.12.2012 21:43
:)
Avatar
Twigynka
Člen
Avatar
Twigynka:

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...

 
Nahoru Odpovědět 18.12.2012 21:45
Avatar
Twigynka
Člen
Avatar
Twigynka:

.

Editováno 18.12.2012 21:46
 
Nahoru Odpovědět 18.12.2012 21:45
Avatar
Twigynka
Člen
Avatar
Twigynka:

.

Editováno 18.12.2012 21:46
 
Nahoru Odpovědět 18.12.2012 21:45
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

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.Conta­ins(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...

Editováno 18.12.2012 21:50
 
Nahoru Odpovědět 18.12.2012 21:46
Avatar
Twigynka
Člen
Avatar
Twigynka:

ale já tě chápu ale samotnej text nedokážu jak napsat...
bože kašlete na to, asi nechápete že to vidim zhruba po 5tí... a nevím co jakej zmetek dělá... tak logicky ani nevím jak to zapsat...
například nemam ani šajnu co je enum...

 
Nahoru Odpovědět 18.12.2012 21:53
Avatar
matesax
Redaktor
Avatar
Odpovídá na Twigynka
matesax:

Tak si projdi zdejší tutoriály - od toho tu jsou...

 
Nahoru Odpovědět 18.12.2012 21:57
Avatar
Odpovídá na matesax
Luboš Běhounek (Satik):

Složité to děláš ty, když jen posouváš pictureBoxy, tak nemusíš vůbec vědět, co je Graphics :)

Nahoru Odpovědět 18.12.2012 22:09
:)
Avatar
matesax
Redaktor
Avatar
Odpovídá na Luboš Běhounek (Satik)
matesax:

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ě...

 
Nahoru Odpovědět 18.12.2012 22:12
Avatar
Luboš Běhounek (Satik):

To uz je celkem fuk, vyjde to v podstate nastejno :)

Nahoru Odpovědět 18.12.2012 22:54
:)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Twigynka
David Čápka:

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 :)

Editováno 19.12.2012 9:48
Nahoru Odpovědět  +4 19.12.2012 9:45
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
TomBen
Redaktor
Avatar
Odpovídá na Twigynka
TomBen:

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.. :D
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ý. :D
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..:)

Editováno 19.12.2012 9:59
Nahoru Odpovědět 19.12.2012 9:59
Za posledních 200 miliónů let se nic zvláštního nestalo, akorát dinosauři vymřeli a opice se naučily programovat.
Avatar
Twigynka
Člen
Avatar
Odpovídá na David Čápka
Twigynka:

no tak to jsem zvědavá co z toho upatlám :D
jinak kostku jsem si vytvořila sama, to jsem zvládla :D
zítra to budeme prej ve škole řešit tak jsem zvědavá na toho WikipediaMastera co nám hodlá "vysvětlit"
:)

 
Nahoru Odpovědět 19.12.2012 20:36
Avatar
Barča
Neregistrovaný
Avatar
Odpovídá na David Čápka
Barča:

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.

 
Nahoru Odpovědět 22.2.2013 8:24
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Barča
David Čápka:

Vše co jsem předtím psal máš udělané?

Nahoru Odpovědět 22.2.2013 14:10
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Barča
Neregistrovaný
Avatar
Odpovídá na David Čápka
Barča:

Ano, udělala jsem to podle toho co jsi psal. Teda kromě listu figurek to si nejsem přesně jistá jak udělat.

 
Nahoru Odpovědět 23.2.2013 13:21
Avatar
Barča
Neregistrovaný
Avatar
Barča:

poradil bys mi prosím jak na to už mám i ten list hotovej :)

 
Nahoru Odpovědět 2.3.2013 9:37
Avatar
Honza Bittner
Redaktor
Avatar
Honza Bittner:

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 :)

Editováno 2.3.2013 23:08
Nahoru Odpovědět  +1 2.3.2013 23:07
Ptejte se mě na cokoli na https://github.com/HoBi/ama a followujte mě na Twitteru https://twitter.com/tenhobi. :-)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Barča
David Čápka:

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;
        ...
     }
  }
}
Editováno 3.3.2013 7:20
Nahoru Odpovědět  +3 3.3.2013 7:16
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Mediel
Redaktor
Avatar
Odpovídá na David Čápka
Mediel:

Kdyz ted plynule navazu na David Čápka , 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 :)

Nahoru Odpovědět 4.3.2013 14:28
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Barča
Neregistrovaný
Avatar
Odpovídá na David Čápka
Barča:

To mi nefunguje nebere mi ty components

 
Nahoru Odpovědět 6.3.2013 9:47
Avatar
Mediel
Redaktor
Avatar
Odpovídá na Barča
Mediel:

Co konkretne ti to nebere? Hod sem kod, co zatim mas... :)

Nahoru Odpovědět 6.3.2013 13:57
Nechci vám ukazovat, jak dobrý jsem já ... Chci vám ukázat, jak dobrý můžete být vy ... Když uvěříte ... V sami sebe...
Avatar
Odpovídá na David Čápka
Libor Šimo (libcosenior):

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.

Nahoru Odpovědět 10.8.2013 9:01
Aj tisícmíľová cesta musí začať jednoduchým krokom.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Libor Šimo (libcosenior)
David Čápka:

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.

Nahoru Odpovědět 10.8.2013 9:49
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Ľuboš Čurgó
Redaktor
Avatar
Odpovídá na David Čápka
Ľuboš Čurgó:

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 :D

 
Nahoru Odpovědět 15.8.2013 17:56
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Ľuboš Čurgó
David Čápka:

Ono je divoké mít i ty pictureboxy :)

Nahoru Odpovědět 15.8.2013 18:04
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Ľuboš Čurgó
Redaktor
Avatar
Odpovídá na David Čápka
Ľuboš Čurgó:

inak to neviem :] mozno casom

 
Nahoru Odpovědět 15.8.2013 18:05
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 49 zpráv z 49.