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