Informations sur: PING PONG V2

Publié par sasuke83 le 20/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
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
DECLARE SUB graph ()


Xdepart = 200               ''
Ydepart = 200                ''' Defini les positions de depart des cercles
Xdepart2 = 300              '''
Ydepart2 = 150              ''
                            
largeurecran = 640          '   Defini la Largeur de l'ecran
hauteurecran = 460          '   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               '





DIM touche AS STRING        '''' Declarer 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 = 50              '''''' coordon‚es palier 1
Y2 = 250            '''''
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 = 610            ''''
PX2 = 620           '''''
PY1 = 50              '''''' coordon‚es palier 2
PY2 = 250             ''''
'---------------------




CALL graph                        ' affiche la SUB 'graph', ici le tableau
SLEEP
CLS

SCREEN 12

LINE (0, 0)-(largeurecran, hauteurecran), 15, BF
LINE (10, 10)-(largeurecran - 10, hauteurecran - 10), 6, BF



 '----------*** BOUCLE GENERALE ***---------------

DO



LINE (X1, Y1)-(X2, Y2), 12, BF      '''''' palier 1
LINE (PX1, PY1)-(PX2, PY2), 9, BF   '''''' palier 2


'----------------CERCLES--------------------------

  CIRCLE (Xold, Yold), rayon, 6                         ' Faire un cercle noir en position initiale
  PAINT (Xold, Yold), 6                                 ' 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 - 25) OR (Ycercle <= 25) THEN   ' definir la limite Y   * (si Ycercle touche le HAUT le BAS de la bande blanche)
   pasY = -pasY                                               ' faire un rebond       * (Alors faire un -pas)
  END IF                                                      '                       * (Fin Si)


' *** 2eme cercle


  CIRCLE (Xold2, Yold2), rayon2, 6                               '
  PAINT (Xold2, Yold2), 6                                        ''
                                                                 '''
  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 - 25) OR (Ycercle2 <= 25) 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
         IF (Y1 > 15) THEN

           LINE (X1, Y1)-(X2, Y2), 6, 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
         END IF


          CASE CHR$(81)                         'bas 'valeur touche bas
          IF (Y2 <= hauteurecran - 20) THEN
              LINE (X1, Y1)-(X2, Y2), 6, BF                '''
              Y1 = Y1 + pas                                '''' Meme principe
              Y2 = Y2 + pas                                '''
              LINE (X1, Y1)-(X2, Y2), 12, BF               ''
          END IF


  ' *** Touches Joueur 2

         CASE CHR$(0) + "H"                                ' valeur touche gauche
         IF (PY1 > 15) THEN
             LINE (PX1, PY1)-(PX2, PY2), 6, 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             '''
         END IF                                                  ''


          CASE CHR$(0) + "P"                'droite      ' valeur touche droite
          IF (PY2 <= hauteurecran - 20) THEN
             LINE (PX1, PY1)-(PX2, PY2), 6, BF             ''
             PY1 = PY1 + pas                               '''
             PY2 = PY2 + pas                               '''' Meme principe
             LINE (PX1, PY1)-(PX2, PY2), 9, BF             '''
          END IF


   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 *************'                '

                                                                           ' 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         ' '''

     
     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

   
   pasX = -pasX                                                                       ' Faire un rebond (-pas)
   END IF                                                                             ' Fin Si
                                                                                      '
   IF ((PX1 - Xcercle2) <= rayon) AND (Ycercle2 > PY1) AND (Ycercle2 < PY2) THEN      '''

   
   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


'-----------******** SUB du tableau d'intro ********---------------



SCREEN 9   'pour pouvoir changer la couleur de fond


'------------------Le cadre---------------------------------------

LINE (30, 30)-(600, 307), 15, BF    'grand cadre bleu fonce
LINE (37, 37)-(593, 300), 6, BF     'cadre bleu clair par dessus

LINE (30, 90)-(600, 93), 15, BF     'barre horizontale
LINE (308, 90)-(310, 307), 15, BF   'barre verticale


'-----------------Joueur 1--------------------------------------
COLOR 6, 6
LOCATE 5, 35
PRINT "PING-PONG"

LOCATE 8, 8
COLOR 6
PRINT "Joueur 1"

LOCATE 12, 7
COLOR 8
PRINT "Bouger le palier:"
PRINT ""
PRINT ""


COLOR 5
LOCATE 15, 7
PRINT "HAUT = A"
LOCATE 16, 7
PRINT "BAS  = Q"

'------------------------------------------------------------
'--------------JOUEUR 2--------------------------------------

LOCATE 8, 45
COLOR 6
PRINT "Joueur 2"

LOCATE 12, 42
COLOR 8
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,046 s - Crédits - Stats
1 connecté