Sprites
![]()
Els sprites s’utilitzen comunament per representar els personatges dels jocs en Arcade. Els personatges poden ser controlats per la persona que juga o per l’ordinador mateix.
Concepte: Moviment simple de sprites
Crear i controlar Sprites són dos dels passos més importants en el desenvolupament del teu propi joc. El Sprite que controla un jugador proporciona una manera perquè el jugador interactuï amb el joc.
Exemple #1: Sprites predefinits

- Revisa el codi següent.
player = sprites.create(sprites.castle.princessFront0, 0) controller.moveSprite(player, 100, 100) - Identifica com es crea el
Sprite. - Identifica com el jugador pot moure el
Spriteen el joc.
En l’exemple anterior, l’sprite es crea utilitzant sprites.create. Hi ha molt a considerar:
playerés de tipusSprite.- La funció que crea el
Spritepren dues coses: una imatge (sprites.castle.princessFront0és una de les imatges proporcionades per començar) i unkindde 0. controller.moveSpriteés una funció que pren unSpritei permet que es mogui per la pantalla utilitzant les tecles de direcció. A més delSprite, també necessita dos números: un per a la velocitat horitzontal i un altre per a la velocitat vertical.
Tasca #1: Ralentitzar el nou sprite
- Comença amb el codi de l’exemple #1
- Canvia la imatge del
SpritedeprincessFront0aprincess2Front(la partsprites.castle.ha de romandre davant) - Canvia el
vxencontroller.moveSpritea 50 - Canvia el
sprites.vyencontroller.moveSpritea 150 - Juga el joc i identifica com ha canviat en aquesta tasca
Concepte: Personalitzar sprites
Quan crees el teu propi joc, probablement necessitaràs passar algun temps personalitzant els teus propis sprites. Això canviarà la manera com es veuen, així com la manera com es comporten.
Per començar a personalitzar els teus propis sprites, necessitarem aprendre sobre dues coses diferents: l’editor d’imatges i els kinds de sprites.
Exemple #2a: El teu propi sprite
-
Revisa el codi següent
player = sprites.create(""" . . . . . . b . b . . . . . . . . . . . . f b b b f f . . . . . . . . . f 1 b 7 b 1 c f . . . . . . . f 1 c c c c c 1 c f . . . . . . f c c f f f f c 1 f . . . . . . f c f f e e f f c f . . . . . f c f e f e e f e f c f . . . . f c f e a e e a e f c f . . . . f c c f e e e e f c c f . . . f c c f a f f f f a f c c f . . . f f e a b a a b a e f f . . . . f e e f a b b a f e e f . . . . . f f a a a a a a f f . . . . . . f a a b a a b a a f . . . . . . f f f f f f f f f f . . . . . . . . f f . . f f . . . . . """, SpriteKind.Player) controller.moveSprite(player, 100, 100) -
Identifica les parts que són similars a l’exemple #1 i les parts que són diferents
Una novetat en l’exemple anterior és l’ús de les cadenes de triple cometes (
""").Aquests strings poden ocupar múltiples línies i les utilitzarem per a les imatges dels
sprites. Dins de la cadena, cada lletra representa un color diferent. Aquesta representació de la imatge permet que no calga pujar una imatge per a cadaspriteque es vulgui crear.Per crear i modificar les imatges dels
sprites, pots utilitzar l’editor d’imatges - fes clic a la paleta de colors a l’esquerra de la imatge per obrir-lo i dibuixar la teva obra mestra.
Exemple #2b: Afegir un nou Kind
-
Revisa el codi a continuació:
@namespace class SpriteKind: Quadrat = SpriteKind.create() quadrat = sprites.create(img(""" 1 1 1 1 1 1 1 1 1 """), SpriteKind.Quadrat) controller.moveSprite(quadrat, 100, 100) -
Compara el
SpriteKinden aquest fragment amb el de l’exemple #2a. En que es diferencien?
El
SpriteKindés una manera de classificar elsspritesen grups. Això permet que el codi siga més llegible, fàcil de mantenir i possibilita que elsspriteses comporten de manera diferent depenent del seukind(per exemple podem fer que elsspritesde tipusFoodpujen vida al jugador, mentre que elsspritesde tipusEnemyli resten vida).En aquest cas, el
SpriteKindQuadrates crea per a representar un quadrat. A continuació crearem nous tipus despritesper a representar altres formes.
Tasca #2: Afegir sprites
- Comença amb el codi de l’exemple #2b
- Afegeix dos nous
kindaSpriteKind:CercleiDiamant. - Crea dos nous sprites - un que sigui un
Cerclei un altre que siga unDiamant. Utilitza l’editor d’imatges per dibuixar imatges per a aquests sprites. - Repte: afegeix un animal (per exemple,
Gos) a l’enumeracióSpriteKindi crea unSpriteper a aquest animal.
Concepte: Propietats i funcions dels sprites
Els sprites tenen propietats i funcions que mantenen el seguiment dels diferents valors relacionats amb el sprite. Aquestes són les mateixes propietats que es van utilitzar en Blocs - x, vx, left, i així successivament.
Aquestes propietats i funcions es poden navegar fàcilment utilitzant la funció d’autocompletar.

Exemple #3: Utilitzar una propietat
-
Revisa el codi següent
@namespace class SpriteKind: Quadrat = SpriteKind.create() jugador = sprites.create(img(""" 1 1 1 1 1 1 1 1 1 """), SpriteKind.Quadrat) pausa(1000) jugador.x += 20 - Identifica quina propietat de l’
spritees modifica - Observa l’ús de
pauseper fer que la modificació ocórrega després d’1 segon
Tasca #3: Moviment repetitiu
- Comença amb el codi de l’exemple #3
- Utilitza un bucle
forper fer que elpausei la modificació de la propietat ocórreguen 5 vegades - En el bucle afegeix una altra línia per canviar la posició
ydelplayerper -10 en cada iteració - Abans del bucle, estableix la
vxdeljugadora -10
Avaluació
Crea un document i:
- Respon a les següents preguntes:
- Amb les teves pròpies paraules, explica per què dibuixar els teus propis
Spritespot ser important quan crees nous jocs. - Com permeten les propietats que interactues amb els
Sprites?
- Amb les teves pròpies paraules, explica per què dibuixar els teus propis
- Resol els següents exercicis curts i pega el codi en el document:
- Dibuixa un
Spritedel teu animal favorit i crea unSpriteper a aquest animal. - Fes que el
Spritedel teu animal favorit es pugui controlar amb les tecles de direcció.
- Dibuixa un
Puja el document a l’aula virtual (tasca 2.2.3).
