Xdepart = 100 ''
Ydepart = 50 ''' Defini les positions de depart des cercles
Xdepart2 = 310 '''
Ydepart2 = 130 ''
largeurecran = 640 ' Defini la Largeur de l'ecran
hauteurecran = 450 ' Defini la Hauteur de l'ecran
pasX = 2 ''
pasX2 = 1 ''' Defini la valeur des pas des cercles
pasY = 2 '''
pasY2 = 1 ''
Ycercle = Ydepart ''
Xcercle = Xdepart '''
Ycercle2 = Ydepart2 '''' Defini les coordon‚es des cercles. (auquel s'ajouterons les pas)
Xcercle2 = Xdepart2 ''''
rayon = 13 ''' Defini la taille du Rayon des cercles
rayon2 = 13 ''
compteur1 = 0 ' Initialise les compteurs
compteur2 = 0 '
SCREEN 12 ' On va travailler dans un ecran de taille "12"
DIM touche AS STRING '''' Declerer la chaine touche
'---------------------
DIM X1 AS INTEGER '''''
DIM X2 AS INTEGER '''''' declaration des variables palier 1
DIM Y1 AS INTEGER '''''
DIM Y2 AS INTEGER '''
'---------------------
X1 = 20 ''''
X2 = 30 '''''
Y1 = 20 '''''' coordon‚es palier 1
Y2 = 200 '''''
pas = 20 '''' defini le pas pour le palier (reutilise pour le palier 2)
'---------------------
'---------------------
DIM PX1 AS INTEGER '''''
DIM PX2 AS INTEGER '''''' declaration des variables palier 2
DIM PY1 AS INTEGER '''''
DIM PY2 AS INTEGER '''
'---------------------
PX1 = 620 ''''
PX2 = 630 '''''
PY1 = 20 '''''' coordon‚es palier 2
PY2 = 200 ''''
'---------------------
LINE (X1, Y1)-(X2, Y2), 12, BF '''''' palier 1
LINE (PX1, PY1)-(PX2, PY2), 9, BF '''''' palier 2
'----------*** BOUCLE GENERALE ***---------------
DO
'----------------CERCLES--------------------------
CIRCLE (Xold, Yold), rayon, 0 ' Faire un cercle noir en position initiale
PAINT (Xold, Yold), 0 ' paindre l'interieur en noir
CIRCLE (Xcercle, Ycercle), rayon, 3 ' Faire un cercle de couleur
PAINT (Xcercle, Ycercle), 3 ' peindre l'interieur en bleue
Xold = Xcercle ' le X du rond noir a la meme coordon‚e que celui de couleur (au prochain tour, le noir serra donc a la position initiale, celle avant le pas)
Xcercle = Xcercle + pasX ' On fait faire un pas a celui de couleur
'
Yold = Ycercle '''Pareil pour la coordonn‚e Y
Ycercle = Ycercle + pasY ''
IF (Ycercle >= hauteurecran) OR (Ycercle <= 0) THEN ' definir la limite Y * (si Ycercle touche le HAUT le BAS de l'ecran)
pasY = -pasY ' faire un rebond * (Alors faire un -pas)
END IF ' * (Fin Si)
' *** 2eme cercle
CIRCLE (Xold2, Yold2), rayon2, 0 '
PAINT (Xold2, Yold2), 0 ''
'''
CIRCLE (Xcercle2, Ycercle2), rayon2, 12 ''''
PAINT (Xcercle2, Ycercle2), 12 '''''
''''''
Xold2 = Xcercle2 '''''''
Xcercle2 = Xcercle2 + pasX2 ''''''''
'''''''''
''''''''''' identique au Cercle 1, avec les coordon‚es pour cercle 2
Yold2 = Ycercle2 '''''''''
Ycercle2 = Ycercle2 + pasY2 ''''''''
'''''''
''''''
IF (Ycercle2 >= hauteurecran) OR (Ycercle2 <= 0) THEN '''''
pasY2 = -pasY2 ''''
END IF '''
'----------------REBOND CERCLE-----------------------------
IF ((rayon + rayon2) ^ 2) >= ((Ycercle2 - Ycercle) ^ 2) + ((Xcercle2 - Xcercle) ^ 2) THEN ''
pasY2 = -pasY2 '''
pasX2 = -pasX2 ''''
pasY = -pasY ''''' Theoreme de pythagore, pour la colision entre les 2 boules
pasX = -pasX '''' (Beaucoup plus facile a comprendre sur un schema)
END IF '''
''
FOR tempo = 1 TO 80000 '*** pour ralentir les boules
NEXT
'--------------------TOUCHES Paliers --------------------------------------------------
touche = INKEY$ 'commande pour les touche
SELECT CASE touche
'*** Touches Joueur 1
CASE CHR$(65) 'valeur touche haut
LINE (X1, Y1)-(X2, Y2), 0, BF 'dessine un Palier noir (En position initiale)
Y1 = Y1 - pas 'faire le pas (Y1)
Y2 = Y2 - pas 'faire le pas (Y2)
LINE (X1, Y1)-(X2, Y2), 12, BF 'faire le nouveau Palier
CASE CHR$(81) 'bas 'valeur touche bas
LINE (X1, Y1)-(X2, Y2), 0, BF '''
Y1 = Y1 + pas '''' Meme principe
Y2 = Y2 + pas '''
LINE (X1, Y1)-(X2, Y2), 12, BF ''
' *** Touches Joueur 2
CASE CHR$(0) + "H" 'gauche ' valeur touche gauche
LINE (PX1, PY1)-(PX2, PY2), 0, BF ''
PY1 = PY1 - pas '''
PY2 = PY2 - pas '''' Meme principe (Avec la 2eme line (palier), et ces points respectifs
LINE (PX1, PY1)-(PX2, PY2), 9, BF '''
''
CASE CHR$(0) + "P" 'droite ' valeur touche droite
LINE (PX1, PY1)-(PX2, PY2), 0, BF ''
PY1 = PY1 + pas '''
PY2 = PY2 + pas '''' Meme principe
LINE (PX1, PY1)-(PX2, PY2), 9, BF '''
END SELECT
'--------------REBOND PALIER----------------------------------------
IF ((Xcercle - X2) <= rayon) AND (Ycercle > Y1) AND (Ycercle < Y2) THEN ' Si la distance entre le centre du cercle (Xcercle) et la barre (X1) est <= au rayon
'********* SUR LA BARRE *************' '
SOUND 440, 1 ' Joue un son '
pasX = -pasX ' Rebondir (-pas), sur la barre donc.
END IF ' Fin Si
'
'
IF ((Xcercle2 - X2) <= rayon) AND (Ycercle2 > Y1) AND (Ycercle2 < Y2) THEN ' '''
SOUND 440, 1
pasX2 = -pasX2 ' '''' Meme principe pour le cercle 2
END IF ' '''
'
' Pour palier 2
IF ((PX1 - Xcercle) <= rayon) AND (Ycercle > PY1) AND (Ycercle < PY2) THEN ' Si Px1 - Xcercle <= rayon alors, (si <, ca traverserais la barre
SOUND 440, 1
pasX = -pasX ' Faire un rebond (-pas)
END IF ' Fin Si
'
IF ((PX1 - Xcercle2) <= rayon) AND (Ycercle2 > PY1) AND (Ycercle2 < PY2) THEN '''
SOUND 440, 1
pasX2 = -pasX2 '''' Meme principe pour le cercle 2
END IF '''
'--------------------------- Compteur ------------------------
IF ((Xcercle - X2) <= rayon) AND (Ycercle > Y1) AND (Ycercle < Y2) THEN ' Si la distance entre le centre du cercle (Xcercle) et la barre (X1) est <= au rayon
'********* SUR LA BARRE *************'
compteur1 = compteur1 + 1
END IF
IF ((Xcercle2 - X2) <= rayon) AND (Ycercle2 > Y1) AND (Ycercle2 < Y2) THEN ' '''
compteur1 = compteur1 + 1
END IF
IF ((PX1 - Xcercle) <= rayon) AND (Ycercle > PY1) AND (Ycercle < PY2) THEN
compteur2 = compteur2 + 1
END IF
IF ((PX1 - Xcercle2) <= rayon) AND (Ycercle2 > PY1) AND (Ycercle2 < PY2) THEN
compteur2 = compteur2 + 1
END IF
'--------------FIN BOUCLE------------------------------------------------
LOOP UNTIL (Xcercle <= 0) OR (Xcercle2 <= 0) OR (Xcercle >= largeurecran) OR (Xcercle2 >= largeurecran) 'La boucle stopera si un des 2 cercles sort a gauche ou a droite.
'-------------PERDU------------------------------------------------------
CLS
IF (Xcercle <= 0) OR (Xcercle2 <= 0) THEN ' Si le cercle 1 ou 2 depassent a gauche
COLOR 12 '
LOCATE 8, 30 ' En position 12, 22
PRINT "PLAYER 2 WIN !" ' Afficher "Le joueur 2 a gagne"
'
ELSE '
' SINON
COLOR 12
LOCATE 8, 30 '
PRINT "PLAYER 1 WIN !" ' En position 12, 22
' Afficher "Le joueur 1 a gagne
END IF '
' Fin Si
'
COLOR 5
LOCATE 18, 9
PRINT "Joueur1 score:"; compteur1
LOCATE 18, 50
PRINT "Joueur 2 score:"; compteur2
SUB graph
LINE (30, 30)-(600, 407), 1, BF 'grand cadre bleu fonce
LINE (37, 37)-(593, 400), 9, BF 'cadre bleu clair par dessus
LINE (30, 90)-(600, 93), 1, BF 'barre horizontale
LINE (308, 90)-(310, 407), 1, BF 'barre verticale
'-----------------Joueur 1------------------
COLOR 12
LOCATE 5, 35
PRINT "PING-PONG"
LOCATE 8, 16
COLOR 6
PRINT "Joueur 1"
LOCATE 12, 7
COLOR 3
PRINT "Bouger le palier:"
PRINT ""
PRINT ""
COLOR 5
LOCATE 15, 7
PRINT "HAUT = A"
LOCATE 16, 7
PRINT "BAS = Q"
'------------------------------------------------------------
'--------------JOUEUR 2--------------------------------------
LOCATE 8, 53
COLOR 6
PRINT "Joueur 2"
LOCATE 12, 42
COLOR 3
PRINT "Bouger le palier:"
PRINT ""
PRINT ""
COLOR 5
LOCATE 15, 42
PRINT "HAUT = Fleche HAUT"
LOCATE 16, 42
PRINT "BAS = Fleche BAS"
END SUB