Skip to content
Snippets Groups Projects
Commit c4829e57 authored by FERGUI SAMY's avatar FERGUI SAMY
Browse files

Realisation de Corps de serpent et conditions d'arret de jeux

parent 2360b31f
Branches
No related merge requests found
......@@ -440,7 +440,7 @@ jal updateGameStatus
jal conditionFinJeu
bnez $v0 gameOver
jal printGame
li $a0 200 #500
li $a0 500 #500
jal sleepMillisec
j mainloop
......@@ -491,13 +491,16 @@ majDirection:
# En haut, ... en bas, ... à gauche, ... à droite, ... ces soirées là ...
lw $s5 snakePosX #pour ne pas ecraser les anciennes cordonnées de la tete !
lw $s6 snakePosY
lw $t4 snakeDir
case:
beq $v0 0 haut
beq $v0 1 droit
beq $v0 2 bas
beq $v0 3 gauche
beq $v0 4 default
beq $a0 0 haut
beq $a0 1 droit
beq $a0 2 bas
beq $a0 3 gauche
beq $a0 4 default
haut:
beq $t4 2 default
......@@ -524,10 +527,10 @@ sub $t0 $t0 1
sw $t0 snakePosY($s0)
j fin
default:
lw $v0 snakeDir
lw $a0 snakeDir
j case
fin:
sw $v0 snakeDir
sw $a0 snakeDir
jr $ra
############################### updateGameStatus ###############################
......@@ -541,10 +544,9 @@ jr $ra
updateGameStatus:
# jal hiddenCheatFunctionDoingEverythingTheProjectDemandsWithoutHavingToWorkOnIt
sw $ra ($sp)
lw $t0 candy
#position de la tete
lw $t1 snakePosX($0)
......@@ -553,19 +555,14 @@ lw $t2 snakePosY($0)
bne $t0 $t1 finu
lw $t0 candy + 4
bne $t0 $t2 finu
#nouveau bonbon
jal newRandomObjectPosition
sw $v0 candy
sw $v1 candy + 4
lw $t0 tailleSnake
add $t0 $t0 1
sw $t0 tailleSnake
#lw $a1 snakePosX
#sw $a1 lastSnakePiece
#sw $a2 lastSnakePiece + 4
#nouveau obstacle
jal newRandomObjectPosition
lw $t3 numObstacles
add $t3 $t3 1
......@@ -576,6 +573,44 @@ sw $v0 obstaclesPosX($t3)
sw $v1 obstaclesPosY($t3)
finu:
#decalage
move $t1 $s5 #$t0 contient la taille de serpent - 1
move $t2 $s6
lw $t0 tailleSnake
sub $t0 $t0 1
li $t3 1
decal: bgt $t3 $t0 erase
mul $t3 $t3 4
lw $t4 snakePosX($t3) #position X de debut de corps (tete non incluse)
lw $t5 snakePosY($t3) #position Y de debut de corps (tete non incluse)
#move $t6 $t4
#move $t7 $t5
sw $t1 snakePosX($t3)
sw $t2 snakePosY($t3)
move $t1 $t4
move $t2 $t5
div $t3 $t3 4
add $t3 $t3 1
j decal
#mettre a jour lastsnakepiece
erase:
#jal eraseLastSnakePiece
#lw $t0 tailleSnake
#sub $t0 $t0 1
#mul $t0 $t0 4
#lw $t1 snakePosX($t0) #$t0 contient la taille de serpent - 1
#lw $t2 snakePosY($t0)
#sw $t1 lastSnakePiece
#sw $t2 lastSnakePiece + 4
lw $ra ($sp)
jr $ra
......@@ -587,7 +622,7 @@ jr $ra
conditionFinJeu:
li $t0 0 #simple initialisation
li $t0 1 #simple initialisation
#la tete de serpent ne doit pas depasser la bordure de la grille
li $t3 16
......@@ -598,9 +633,20 @@ beq $t1 $t3 finf
beq $t2 $t3 finf
beq $t1 $t4 finf
beq $t2 $t4 finf
#la tete de serpent touche une partie de corps
lw $t5 tailleSnake
loopc: bge $t0 $t5 obstacle
mul $t0 $t0 4
lw $t3 snakePosX($t0)
lw $t4 snakePosY($t0)
div $t0 $t0 4
add $t0 $t0 1
bne $t3 $t1 loopc
bne $t4 $t2 loopc
j finf
#la tete de serpent ne doit pas rentrer en contacte avec un obstacle
obstacle:
li $t0 0 #simple initialisation
lw $t3 numObstacles
li $s4 0
loopf:
......
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment