Un pong tout bete

Contenu du snippet

Hé bien je suis certain que ce n'est pas le premier sur ce site ;-)
Néanmoin la plupart de ceux que j'ai vu utilisais des controle comme des label ou images :O
Celui ci est tout bete , et tien dans une seule sub, il utilise aucun control (sauf la form biensur)

Donc vous n'avez qu'a copîer-coller le code et faire F5 :P

Il gère les resize de form
Pour les control c'est :
A et Z pour le joueur 1 et FLECHE HAUT et FLECHE BAS pour le joueur 2.

Il y a aussi un limitateur de frame parce que sur ma machine du moin j'approchais du million de frame par secondes sans limite et en mode compilé :-/.

Source / Exemple :


Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

Sub pong()
Dim Raq1 As Integer: Raq1 = Height / 2 - 1000
Dim Raq2 As Integer: Raq2 = Height / 2 - 1000
Dim BalleX As Integer: BalleX = 1000
Dim BalleY As Integer: BalleY = 1000
Dim BalleXP As Integer: BalleXP = 75
Dim BalleYP As Integer: BalleYP = 75
Dim PointJ1 As Integer, PointJ2 As Integer
Dim FPS, temp, F
    AutoRedraw = True
    ForeColor = RGB(255, 255, 255)
    BackColor = RGB(0, 0, 0)
Do
    DrawWidth = (Height / 740)
    FPS = FPS + 1
    If GetAsyncKeyState(65) < 0 Then If Raq1 - (Height / 32) > 100 Then Raq1 = Raq1 - (Height / 32) '65
    If GetAsyncKeyState(90) < 0 Then If Raq1 + (Height / 32) < Height - ((Height / 4) + 500) Then Raq1 = Raq1 + (Height / 32) '90
    If GetAsyncKeyState(38) < 0 Then If Raq2 - (Height / 32) > 100 Then Raq2 = Raq2 - (Height / 32) '38
    If GetAsyncKeyState(40) < 0 Then If Raq2 + (Height / 32) < Height - ((Height / 4) + 500) Then Raq2 = Raq2 + (Height / 32)  '40
    Cls
    CurrentX = Width - 800: Print Format(F, "00") & " FPS":: If temp <= Timer Then temp = Timer + 1: F = FPS: FPS = 0
    PSet (BalleX, BalleY) 'On dessine la balle
    Line (100, Raq1)-(100, Raq1 + (Height / 4)) 'La raquete gauche
    Line (Width - 300, Raq2)-(Width - 300, Raq2 + (Height / 4)) 'La raquette droite
    CurrentX = (Width / 2) - TextWidth("XX a XX")
    CurrentY = 20
    Print Format(PointJ1, "00") & " à " & Format(PointJ2, "00") 'Affiche le score
    If BalleY >= Height - 500 Then BalleYP = -75
    If BalleY <= 100 Then BalleYP = 75
    If (BalleX > Width - 400) And (BalleY >= Raq2) And (BalleY <= Raq2 + (Height / 4)) Then BalleXP = -75
    If (BalleX <= 200 And BalleY > 0) And (BalleY >= Raq1) And (BalleY <= Raq1 + (Height / 4)) Then BalleXP = 75
    If BalleX < 0 Then PointJ2 = PointJ2 + 1: BalleX = Width / 2: BalleXP = 75
    If BalleX > Width Then PointJ1 = PointJ1 + 1: BalleX = Width / 2: BalleXP = -75
    BalleX = BalleX + BalleXP
    BalleY = BalleY + BalleYP
    i = Timer + 0.03
    While Timer < i
        DoEvents
    Wend
    DoEvents
Loop
End Sub

Private Sub Form_Load()
Show
Call pong
End Sub

Private Sub Form_Unload(Cancel As Integer)
End
End Sub

Conclusion :


C'est vraiment très basique comme code , mais bon j'avais jamais codé de pong depuis que je programme :)

Théoriquement il devrait pas y avoir de bugs , malgré le fait que je ne l'aille pas soumis a un test rigoureux...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.