Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Pong
1. 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 les
entrées/sorties parallèles.
Principe du jeu :
Le jeu est constitué d'un terrain découpé en deux parties égales séparé par un
filet, 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é de
terrain. 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 du
joueur 2). Lorsqu'une diode est allumée, cela signifie que la balle se trouve à cet
endroit. Chaque joueur possède un bouton lui permettant d'utiliser sa raquette (IA1
pour le joueur 1, IB1 pour le joueur 2).
Questions :
1. Initialiser correctement le port d'entrée/sortie parallèle pour que les deux boutons
IA1 et IB1 soient gérés par test d'état. L'initialisation devra également allumer la
diode 4 ou 3 (au choix) du port de sortie et initialiser la direction de la balle qui
sera 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 diodes
du port de sortie respectivement vers la droite et vers la gauche (on utilisera des
instructions de décalage et non de rotation). Pour ces fonctions, on ajoutera après
le 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 en
consé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 balle
sera vers la droite (D0 prend la valeur 1). Respectivement si IB1 est appuyé la
nouvelle 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.