Informations sur: ping-pong

Publié par sasuke83 le 19/12/2006

Description

ping-pong

Code source (langage non précisé)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
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

v6 © Computaid SPRL 2005-2008 - Tous droits réservés - Hébergé par eTigris - Page générée en 0,064 s - Crédits - Stats
1 connecté