Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
1
Programozás III. Gyakorlás
2
Gyakorlás
3
Szabályok Az akadályok vagy oldalirányba, vagy fel-le mozognak. Ha elérnek a pálya szélére, ott visszafordulnak. A játékosnak a jobb alsó sarokban található célig kell eljutnia. Ha hozzáér egy akadályhoz, veszített. (Alternatíva: ha hozzáér egy akadályhoz, elveszít egy életet)
4
Tervezés Válasszunk grafikai módszert Shape-ek? Drawingok? Visualok?
A Rectangle és az Ellipse (Shape-ek) elég a feladat megoldásához, és nem nagy az objektumok száma sem, tehát ez jó választás lehet. Természetesen a két bonyolultabb megoldás is használható.
5
Tervezés Ha Shape-eket választottunk, ezeket általában adatkötés segítségével szoktuk mozgatni egy Canvason. Pl. van egy Játékos objektum, aminek van egy Rect-je (x, y, szélesség, magasság), ehhez van kötve egy Ellipse x, y koordinátái, szélessége, magassága. Most nem tudjuk az akadályokat a designerben lerakni az ablakba! (túl sok van, illetve pályáról pályára változhat a számuk stb.) tehát tudnunk kell kódból lerakni Shape-eket a Canvasra illetve, mivel így nem tudjuk a XAML-ben megírni az adatkötést ezt is kódban kell
6
Tervezés – Téglalapok dinamikus elhelyezése a Canvason
Téglalap létrehozása a kódban: Rectangle rect = new Rectangle(); Ahhoz, hogy látszódjon: Ne felejtsünk neki Fill-t vagy Stroke-ot és esetleg StrokeThickness-t állítani Ne felejtsük el kirakni az ablakba – a canvas Children gyűjeményébe kell belerakni A canvas Children gyűjteménye tartalmazza a canvason lévő objektumokat canvas.Children.Add(rect) canvas.Children.RemoveAt(rect) … további, gyűjteményekben megszokott függvények Indexelni is lehet: canvas.Children[i]
7
Tervezés – adatkötés a kódban
rectangle.SetBinding(Rectangle.WidthProperty, new Binding(„Terulet.Width") { Source = jatekos }); rectangle = az ablakba rakott Rectangle Shape, aminek az adatkötését beállítjuk. Rectangle.WidthProperty = a rectangle Width tulajdonságát akarjuk adatkötéssel beállítani. Ez a Width egy ún. függőségi tulajdonság, amit a Rectangle.WidthProperty nevű statikus mező reprezentál. Terulet.Width = a játékos területének szélességét vegye fel a rectangle szélessége jatekos = adatkötés forrása
8
Tervezés – adatkötés a kódban
Ha egy téglalapot mozgatni szeretnénk, és még a szélességét és magasságát is befolyásolni, a következő statikus mezőkre lesz szükségünk: Rectangle.WidthProperty Rectangle.HeightProperty Canvas.LeftProperty (ugyanis a téglalapnak nincs saját x koordinátája, hanem azt a Canvastól kapja) Canvas.RightProperty (ugyanis a téglalapnak nincs saját y koordinátája, hanem azt a Canvastól kapja)
9
Tervezés Tervezzük meg az osztályokat II.
Kellenek azok az osztályok, amikkel reprezentáljuk a játékban a „szereplőinket” (akadályok, játékos, cél) PalyaObjektum: Jatekos és Akadaly őse, a célt akár reprezentálhatjuk egyből ezzel (vagy lehet külön osztály is neki) Területe van (Rect) Tud ütközni (Az akadálynak ütköznie kell a játékossal, a célnak is ütköznie kell tudni a játékossal… az ütközés a Rect IntersectsWith függvényével könnyen megoldható.) Jatekos PalyaObjektum utóda. A plusz képessége annyi, hogy 4 irányba mozgatható. Akadaly PalyaObjektum utóda. A plusz képessége annyi, hogy mozgatható (egy fix irányba fog mozogni, pálya szélén visszafordul).
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.