Cominciamo con il creare tre metodi nella classe GameModel
per far partire, fermare e mettere in pausa il gioco. In questi metodi inizieremo a gestire lo scroll dello sfondo e l'animazione del personaggio.
Torniamo alla nostra classe GameModel
e cominciamo ad aggiungere il metodo StartGame
in cui faremo partire lo scrolling dello sfondo e l'animazione del personaggio:
public void StartGame()
{
// Verifica per prima cosa che il gioco non sia già avviato
if (this.GameState != enGameState.PLAY)
{
// fa partire il gameloop
this.GameloopStoryboard.Begin();
// fa partire lo scroll dello schermo
this.GameBackground.ScrollSpeed = 8;
this.GameBackground.get_LayerItem("sky").SpeedRate = 3;
this.GameBackground.get_LayerItem("mountains").SpeedRate = 3;
this.GameBackground.get_LayerItem("hills").SpeedRate = 3;
this.GameBackground.StartScroll();
// fa partire l'animazione del personaggio con un framerate di 25
_playerSprite.StartAnimation("destra", 25);
this.GameState = enGameState.PLAY;
}
}
Per vedere finalmente un po' di movimento, torniamo nel MainPage.xaml.cs
e richiamiamo il metodo StartGame
che fa partire il gioco:
protected async override void OnNavigatedTo(NavigationEventArgs e)
{
// inizializza il game model
this.game = new GameModel();
// aggiunge il canvas generato dalla classe
// ScrollableBackground alla viewbox principale
this.mainViewBox.Child = this.game.GameBackgroundCanvas;
// aggiunge il personaggio principale
await this.game.AddPlayer();
// fa partire il gioco
this.game.StartGame();
}
Se ora compiliamo ed eseguiamo il progetto, possiamo vedere il nostro personaggio muovere la bocca mentre lo sfondo scrolla verso sinistra. I diversi livelli dello sfondo si muovono a diverse velocità, per dare una migliore impressione di movimento e profondità. Ma cosa può fare il nostro povero amichetto se non è in grado di muoversi in giro per lo schermo? Non molto direi... Vediamo allora di aiutarlo noi.