;28-11-2004, version 1.0
;////////////////////////////////////////////////////////////////////////
;nom de l'application
AppTitle "collision bloc 1"
;////////////////////////////////////////////////////////////////////////
;variable du mode graphique
Const Resolution00%=640;X
Const Resolution01%=480;Y
Const Resolution02%=16;profondeur des couleurs
Const Resolution03%=2;mode graphique
;////////////////////////////////////////////////////////////////////////
;initialisation du mode graphique
Graphics Resolution00,Resolution01,Resolution02,Resolution03
.VarCollision
;////////////////////////////////////////////////////////////////////////
;variable, collisions
;image 0, dimension
Const C00%=128;taille, X
Const C01%=128;taille, Y
;image 0, dimension collision [0]
Const C02%=64;taille, X
Const C03%=64;taille, Y
Const C04%=((C00-C02)/2);espace, X
Const C05%=((C01-C03)/2);espace, Y
;image 1, dimension
Const C10%=64;taille, X
Const C11%=64;taille, Y
.VarJoueur
;////////////////////////////////////////////////////////////////////////
;variable, joueur
J00#=100.0;position, X
J01#=100.0;position, Y
J02#=J00;position, X tampon
J03#=J01;position, Y tampon
.VarDecor
;////////////////////////////////////////////////////////////////////////
;variable, decor
D00%=288;position, X
D01%=208;position, Y
;*****************
;* boucle du jeu *
;*****************
;////////////////////////////////////////////////////////////////////////
;initialise le tampon secondaire
SetBuffer BackBuffer()
;////////////////////////////////////////////////////////////////////////
;tant que "echappe" n'a pas ete presse
While Not KeyDown(1)
;////////////////////////////////////////////////////////////////////////
;efface le tampon secondaire
Cls
.L00
;////////////////////////////////////////////////////////////////////////
;collision
If RectsOverlap (Floor#(J00+C04),Floor#(J01+C05),C02,C03,D00,D01,C10,C11)
Text 0,00,"Collision !!!"
;haut
If Floor#((J03+C05)+C03)<=D01
;mise a jour
J01=Floor#((D01-C05)-C03)
;saute au pointeur
Goto P_Collision00
EndIf
;bas
If Floor#(J03+C05)>=(D01+C11)
;mise a jour
J01=Floor#((D01+C11)-C05)
;saute au pointeur
Goto P_Collision00
EndIf
;gauche
If Floor#(J02+C04+C02)<=D00
;mise a jour
J00=Floor#((D00-C04)-C02)
;saute au pointeur
Goto P_Collision00
EndIf
;droite
If Floor#(J02+C04)>=(D00+C10)
;mise a jour
J00=Floor#((D00+C10)-C04)
;saute au pointeur
Goto P_Collision00
EndIf
EndIf
;pointeur
.P_Collision00
.L01
;////////////////////////////////////////////////////////////////////////
;dessin
Color 0,255,255
Rect Floor#(J00+C04),Floor#(J01+C05),C02,C03,1
;dessin
Color 0,0,255
Rect D00,D01,C10,C11,1
.L02
;////////////////////////////////////////////////////////////////////////
;texte
Text 0,10,"J02 "+J02
Text 0,20,"D00 "+D00
.L03
;////////////////////////////////////////////////////////////////////////
;mise a jour
J02=J00;position, X tampon
J03=J01;position, Y tampon
;////////////////////////////////////////////////////////////////////////
;basculement des tampons
Flip
;////////////////////////////////////////////////////////////////////////
;haut
If KeyDown(200)
J01=(J01-4.0);position, Y
EndIf
;bas
If KeyDown(208)
J01=(J01+4.0);position, Y
EndIf
;gauche
If KeyDown(203)
J00=(J00-4.0);position, X
EndIf
;droite
If KeyDown(205)
J00=(J00+4.0);position, X
EndIf
;////////////////////////////////////////////////////////////////////////
;fin de la boucle
Wend
;////////////////////////////////////////////////////////////////////////
;fin du programme
End
>the first square (player) has a second square inside for the collision.