Download pdf - Pong

Transcript
Page 1: Pong

Examen de TP d'assembleur 68K

Durée : 45 minutes

Licence d'informatique 3ème année 2003-2004

Module 6

Pong

Note : Ne sont autorisés que les polycopiés sur le processeur 68K et sur lesentrées/sorties parallèles.

Principe du jeu :

Le jeu est constitué d'un terrain découpé en deux parties égales séparé par unfilet, de deux joueurs chacun muni d'une raquette et affecté à un camp et d'une balle.Le but du jeu est de rattraper la balle chaque fois qu'elle se trouve dans sa moitié deterrain. Le premier joueur qui laisse sortir la balle de son camp sans la rattraper àperdu.

Le terrain de jeu est représenté par les huit diodes du port de sortie (CB7, CB6,CB5 et CB4 pour le camp du joueur 1 et CB3, CB2, CB1 et CB0 pour le camp dujoueur 2). Lorsqu'une diode est allumée, cela signifie que la balle se trouve à cetendroit. Chaque joueur possède un bouton lui permettant d'utiliser sa raquette (IA1pour le joueur 1, IB1 pour le joueur 2).

Questions :

1. Initialiser correctement le port d'entrée/sortie parallèle pour que les deux boutonsIA1 et IB1 soient gérés par test d'état. L'initialisation devra également allumer ladiode 4 ou 3 (au choix) du port de sortie et initialiser la direction de la balle quisera rangée dans D0 (0 dans le cas ou la balle va vers la droite et 1 vers la gauche).

2. Ecrire deux sous programmes qui permettent de décaler d'une position les diodesdu port de sortie respectivement vers la droite et vers la gauche (on utilisera desinstructions de décalage et non de rotation). Pour ces fonctions, on ajoutera aprèsle décalage un appel à la fonction de temporisation logicielle fournie en annexe.Tester ces sous programmes.

3. Ecrire un programme principal qui représentera un tour de jeu (boucle) qui :

• Teste si la balle est sortie du terrain ou pas et quitte le programme enconséquence.

• Choisit la fonction de la question 1 à activer (décalage à droite ou décalage àgauche) en fonction de la direction courante de la balle (rangée dans D0).

• Teste si le bouton IA1 est appuyé auquel cas la nouvelle direction de la ballesera vers la droite (D0 prend la valeur 1). Respectivement si IB1 est appuyé lanouvelle direction de la balle sera vers la gauche (D0 prend la valeur 0).

Question supplémentaire :Prendre en compte le filet en modifiant le code appelé lors de l'appui sur IA1 et IB1.

Page 2: Pong

Annexe :

attente move.l D0,-(A7)move.w #$FFFF,D0

bclatt tst.w D0beq finattsub.w #1,D0bra bclatt

finatt move.l (A7)+,D0rts


Recommended