Attached Behaviours, Routed Events ja Drag & Drop - Viikkotehtävä 6
Tee valitsemasi taso WPF-ohjelmana. Tekemäsi ohjelman on toimittava samalla tavalla kuin malliohjelman mutta värit voit valita itse. Malliohjelmien mahdollisia bugeja ei myöskään tarvitse toistaa ;-) Toteuta ohjelmasi mahdollisimman järkevästi ja helposti laajennettavalla tavalla. Jos mahdollista niin tee toteutus attached propertyja ja routed eventseja käyttäen.
Palauta vastauksesi viimeistään perjantaina 16.3. klo 10:00
Taso 1
Toteuta malliohjelman mukainen ohjelma. Yhteenlasku on suoritettava RoutedEventin avulla. Ohjelmassa raahataan ylhäällä olevia numeroita keskellä olevan laatikon päälle.
Taso 3
Toteuta mallipelin tapaan toimiva peli. Raahaa yläpalkista numeroita liikkuvien numeroiden päälle. Jos raahaus menee ohi liikkuvasta numerosta niin kentälle ilmestyy uusi negatiivinen numero. Onnistuneista raahauksista saa pisteitä, joiden yhteissumma näkyy ohjelman vasemmassa ylänurkassa. Negatiivisten lukujen päälle raahaamisesta saa miinusta. Huomioi seuraavat vaatimukset:
- Pistelasku on tehtävä RoutedEventiä käyttäen eli jokainen näytöllä liikkuva numero (Label) ilmoittaa eventillä jos sen päälle raahataan yläpalkista numero.
- Yläpalkin raahattavien labelien drap & drop on toteutettava Attached Propertyn avulla eli laajenna omalla Attached Propertylla normaalin labelin toimintaa. Luentoesimerkistä saat tähän apua.
Taso 5
Toteuta mallipelin tapaan toimiva taso 3 -vaatimusten mukainen peli ja sitten laajenna seuraavilla lisäyksillä ja seuraavilla toteutustavoilla:
- Numeroita yläpalkista raahatessa näkyy raahattava numero raahauksen aikana eikä vain geneerinen raahauskuvake
- Jos numero ei osu liikkuvan numeron päälle niin uusi kentälle luotava numero ilmestyy samaan kohtaan mihin raahaus päättyi. Samalla yhteispisteisiin lasketaan miinusta 10 kertaa raahatun numeron lukuarvon verran
- Myös itsestään liikkuviin numeroihin voi tarttua ja numeron voi raahata toiseen paikkaan. Jos raahaa toisen numeron päälle niin numerot yhdistyvät ja uuden numeron arvo on vanhojen numeroiden keskiarvo ja fontin koko on myös edellisten numeroiden fonttikoon keskiarvo.
- Tee oma luokka, joka mahdollistaa Attached Propertyn avulla minkä tahansa Label-elementin käyttämisen näytöllä liikkuvana numerona. Ts. käytä tavallisia Label-elementteja ja laajenna niiden toimintaa yhden tai useamman Attached Propertyn avulla. Vinkki: DockPanelin toteutustavasta voinee matkia jotakin...
Käyttäjien kommentit