App_Sprite_racchetta, classico gioco rimbalzo pallina

Uno Sprite è un componente che per essere utilizzato, va posizionato in un Canvas. Nel Canvas può muoversi, reagire a tocchi e trascinamenti, interagire con altri sprites (Ball e altri ImageSprites) e collidere con bordi e angoli del Canvas. L’aspetto di ImageSprite è determinato dalla proprietà Picture (un file grafico di cui deve essere fatto upload). Quando le dimensioni dello sprite non sono quelle dell’immagine contenuta (proprietà Picture), l’immagine appare distorta.
In questo gioco/applicazione uno Sprite classico (isRacchetta) ed una Ball si muovono in un Canvas. Al Canvas saranno date le dimensioni 90% e 75% (Oriz. X Vert) di Screen1. La Ball, muovendosi, collide rimbalzando sulle pareti Est, Nord e Sud del Canvas emettendo un suono.
Quando Ball collide con la parete Sud il gioco termina.
Un ImageSprite (isRacchetta) si trova di fronte alla parete Sud del Canvas. Per impedire che il gioco termini, è necessario muovere ImageSprite (isRacchetta) sull’asse orizzontale. Muovendolo, deve essere fatto collidere con Ball, impedendole di sbattere con la parete Sud.
Quando Ball collide con isRacchetta rimbalza emettendo un suono. Ad ogni collisione Ball aumenta leggermente di velocità (Speed+0,005).
Quando Speed arriva a 10, la larghezza dello sprite isRacchetta diminuisce di 0.9 e Speed torna a 5.
Componenti e proprietà da assegnare:

Componente

Gruppo

Nome

Proprietà

Text

Width

Horiz

ScreenArr.

HA1

Fill parent

Label

Basic

lRisiltati

Partite=0

Automatic

Horiz

ScreenArr.

HA2

Fill parent

Canvas

Basic

Canvas

Ball

Animation

ibPalla

Heading=30 Interval=10 Radius=10 PaintColor=Red

ImageSprite

Animation

isRacchetta

Picture=Racchetta.png Interval=1000

Button

Basic

bStart

Start

Fill parent

Sound

Media

MinimumInterval=100 Source=Rimbalzo.mp3 Il file File.mp3 è gestito in Blocks Editor

Come dovrebbero presentarsi la pagina Design e l’Emulatore:
Aprire Blocks Editor
All’avvio occorre dichiarare 4 variabili; 2 per gestire i rimbalzi, 1 per contare le partite, 1 per posizionare lo sprite isRaccheta sull’asse verticale (in modo fisso).
All’avvio va in esecuzione il blocco Screen1.Initialize.
Usando un valore fisso per l’asse Y, lo sprite isRacchetta potrà essere spostato solo in orizzontale.
Finita l’inizializzazione, un click sul pulsante Start può avviare l’applicazione.
Quando lo sprite ibPalla è in movimento occorre gestire i rimbalzi e l’eventuale fine partita.
Fine partita sarà quando ibPalla colliderà con sponda sud ritornado -1 nel blocco ibPalla.EdgeReached.
Per testare le collisioni con le sponde viene utilizzato il blocco EdgeReached (Sponda raggiunta)
Con i prossimi blocchi viene gestita la collisione fra lo sprite ibPalla e lo sprite isRacchetta.
Per fare questo viene utilizzato ibPalla.CollideWith che letto per esteso è:
when - lbPalla.CollideWith - other - name isRacchetta – do,
che in italiano può essere tradotto:
quando – ibPalla collide con – altro – nome isRacchetta – fare
Per ottenere il blocco isRaccheta da inserire nella presa dopo other agire così:
prelevare un blocco name dal menù Built-In/Definition, fare click su name, (quello in grassetto) renden-dolo editabile, sostituire name con isRacchetta che è il nome dello sprite che può collidere ibPalla.
Il resto dei blocchi compiono le seguenti azioni:
Viene emesso il suono del rimbalzo, fatto rimbalzare ibPalla, cambiata la velocità di ibPalla.
Viene testato se ibPalla ha raggiunta la velocità massima consentita, se si, diminuita larghezza della rac-chetta. In ultimo viene messo a video il nuovo punteggio
A questo punto, la palla rimbalza quando collide con lo sprite isRaccheta.
Vengono ora assemblati i blocchi che permettono al giocatore di spostare la racchetta (sprite isRacchetta) su di un piano orizzontale intercettando ibPalla, che altrimenti colliderebbe sulla sponda Sud del Canvas.
Nello spostamento, lo sprite viene trascinato, deve essere quindi utilizzato il blocco isRacchetta.Dragged.
Il piano orizzontale su cui si muove lo sprite isRacchetta è stato stabilito in precedenza nel blocco Sre-en1.Initialize come altezza della Canvas - 100pixel.
La posizione verticale di ImageSprite è stata già stabilita nel blocco Sreen1.Initialize (altezza Canvas -100pixel). Questo valore viene utilizzato nel blocco isRacchetta.Dragged per forzare la posizione di Ima-geSprite sul piano Y durante il trascinamento e successivo rilascio.
Con i prossimi blocchi sono inseriti a video i risultati.
Viene utilizzata la procedura Risultati che nell’applicazione è chiamata da bStart.Click, EdgeReached e lbPalla.CollideWith dando un quadro dei valori in tempo reale.
Le variabili NumeroPartite, RimbalziCorrenti e RimbalziMassimi, sono variabili globali e quindi non c’è la necessità di passare i valori alla procedura.