c jeux et simple mais il y a des methode mathematique pour compris c jeux
je dépose mon programme qui est un jeu de tennis en 2D
Source / Exemple :
ds le module
Public DX As Integer, DX1 As Integer, DH As Integer, DV As Integer, _
DS As Integer, Dyg As Integer, Dyd As Integer, size_x As Integer, _
size_y As Integer, YVirtuelle As Integer, YVrai As Integer, Ymax As Integer, _
Xmax As Integer, VS As Integer, VN As Integer, YDebut As Integer
Public Perdu As Boolean
Public Bool1 As Boolean
Public Bool2 As Boolean
Public Lance As Boolean
Public Tennis As TTennis
Public Raquet1 As TRaquette
Public Raquet2 As TRaquette
'Public VS As Integer
'Public VN As Integer
'Public YDebut As Integer
'Public DX As Integer, DX1 As Integer, DH As Integer, DV As Integer
'Public DS As Integer, Dyg As Integer, Dyd As Integer
Enum EDirection
AUCUN = 0
NORD = 1
SUD = 2
EST = 3
OUEST = 4
End Enum
Public Type TRaquette
RDirection As EDirection
XR As Integer
YR As Integer
RDirectV As EDirection
RDirectH As EDirection
n As Integer
Touche As Integer
End Type
Public Type TTennis
XT As Integer
YT As Integer
TDirection As Integer
Mvt2 As Boolean
Mvt1 As Boolean
TDirectV As EDirection
TDirectH As EDirection
PremiFois As Boolean
End Type
ds FORM:
Private Sub CmdOK_Click()
debut_jeu
Timer2.Enabled = True
Terrain.SetFocus
Lance = False
End Sub
Private Sub CmdQuitter_Click()
End
End Sub
Private Sub Form_Load()
debut_jeu
End Sub
Private Sub Terrain_KeyDown(KeyCode As Integer, Shift As Integer)
Raquet1.Touche = KeyCode
If Perdu = False Then
Select Case Raquet1.Touche
Case vbKeyUp
Timer1.Enabled = True
Raquet1.RDirection = NORD
ProCRaquet1
Case vbKeyDown
Timer1.Enabled = True
Raquet1.RDirection = SUD
ProCRaquet1
Case vbKeyRight
If Lance = False Then
Timer2.Enabled = True
Tennis.TDirectH = EST
Tennis.TDirectV = Raquet1.RDirection
Bool1 = True
Bool2 = True
Lance = True
End If
Case vbKeyLeft
Raquet1.RDirection = AUCUN
Timer1.Enabled = False
Case Else
End Select
End If
End Sub
Private Sub Timer2_Timer()
If Bool1 = True Then
If Tennis.XT = DX Then
YDebut = Tennis.YT
Tennis.PremiFois = True
End If
ProcPositionY
ProcPositionX
If Tennis.PremiFois = True Then
Equation
Tennis.PremiFois = False
End If
c = size_y * 18
If YVrai <= size_y * 18 And YVrai >= size_y / 2 Then
Raquet2.n = YVrai
End If
If Raquet2.YR > Raquet2.n Then
Raquet2.RDirectV = NORD
Else
Raquet2.RDirectV = SUD
End If
'**************************************************************************************
If Tennis.XT = DX Or Tennis.XT = size_x * 27 Or _
Tennis.YT = 0 Or Tennis.YT = size_y * 18 Then
Beep
End If
'**************************************************************************************
If Tennis.XT < size_x * 1.5 Or Tennis.XT > DX1 Then
Timer1.Enabled = False
Timer2.Enabled = False
ImgMessage.Visible = True
CmdOK.Visible = True
CmdQuitter.Visible = True
Bool1 = False
Perdu = True
Raquet1.Touche = 0
End If
End If
End Sub
Private Sub ProcPositionX()
DX = 2 * size_x
DX1 = size_x * 25.5
Dyg = Raquet1.YR - 3 * size_y / 4
Dyg1 = Raquet2.YR - 3 * size_y / 4
Dyd = Raquet1.YR + 3 * size_y - size_y / 4
Dyd1 = Raquet2.YR + 3 * size_y - size_y / 4
DV = Tennis.YT - Raquet1.YR
DH = Tennis.XT - Raquet1.XR
DS = Sqr(DH ^ 2 + DV ^ 2)
'**************************************************************************************
If (Tennis.YT < DX1 Or (Tennis.YT < Dyg1 Or Tennis.YT > Dyd1)) And Tennis.TDirectH = EST Then
Tennis.XT = Tennis.XT + size_x / 2
Tennis.TDirectH = EST
If Tennis.XT = DX1 And (Tennis.YT >= Dyg1 And Tennis.YT <= Dyd1) Then
Tennis.TDirectH = OUEST
End If
ProcTunis
Else
Tennis.TDirectH = OUEST
End If
'**************************************************************************************
If (Tennis.XT > DX Or (Tennis.YT < Dyg Or Tennis.YT > Dyd)) And Tennis.TDirectH = OUEST Then
Tennis.XT = Tennis.XT - size_x / 2
Tennis.TDirectH = OUEST
If Tennis.XT = DX And (Tennis.YT >= Dyg And Tennis.YT <= Dyd) Then
Tennis.TDirectH = EST
End If
ProcTunis
Else
Tennis.TDirectH = EST
End If
End Sub
Private Sub ProcPositionY()
DX = 2 * size_x
Dyg = Raquet1.YR - 3 * size_y / 4
Dyd = Raquet1.YR + 3 * size_y - size_y / 4
DV = Tennis.YT - Raquet1.YR
DH = Tennis.XT - Raquet1.XR
DS = Sqr(DH ^ 2 + DV ^ 2)
'**************************************************************************************
If Tennis.YT > 0 And Tennis.TDirectV = NORD And Perdu = False Then
Tennis.YT = Tennis.YT - size_y / 2
Tennis.TDirectV = NORD
ProcTunis
Else
Tennis.TDirectV = SUD
End If
'**************************************************************************************
If Tennis.YT < size_y * 18 And Tennis.TDirectV = SUD And Perdu = False Then
Tennis.YT = Tennis.YT + size_y / 2
Tennis.TDirectV = SUD
If Tennis.YT = size_y * 18 Then
Tennis.TDirectV = NORD
End If
ProcTunis
Else
Tennis.TDirectV = NORD
End If
End Sub
Private Sub ProcTunis()
CTunis.Left = Tennis.XT
CTunis.Top = Tennis.YT
End Sub
Private Sub ProcChoc()
' DX = 2 * size_x
' Dyg = Raquet.YR - size_y
' Dyd = Raquet.YR + 3 * size_y
' DV = Tennis.YT - Raquet.YR
' DH = Tennis.XT - Raquet.XR
' DS = Sqr(DH ^ 2 + DV ^ 2)
' EAC1 = Sqr(Raquet.YR ^ 2)
' EAC2 = Sqr(Tennis.XT ^ 2 + Tennis.YT ^ 2)
' VRC1 = EAC1 - (EAC1 / 2) + EAC2 * 1.4
' VRC2 = EAC2 - (EAC1 / 4) + (EAC2 / 2)
' Select Case Tennis.TDirection
' Case SUD:
' Case NORD:
' Case AUCUN:
' ' DirectH = EST
' End Select
End Sub
Private Sub Equation()
Xmax = size_x * 26
Ymax = size_y * 18
DX = 2 * size_x
If Tennis.TDirectV = NORD Then
YVirtuelle = (DX - Xmax) + YDebut
If Abs(YVirtuelle) <= Ymax Then
YVrai = Abs(YVirtuelle)
End If
If Abs(YVirtuelle) > Ymax Then
YVrai = Abs(Abs(YVirtuelle) - 2 * Ymax)
End If
End If
'----------------------------------------
If Tennis.TDirectV = SUD Then
YVirtuelle = (Xmax - DX) + YDebut
If Abs(YVirtuelle) > 2 * Ymax Then
YVrai = Abs(YVirtuelle) - 2 * Ymax
End If
If Ymax < Abs(YVirtuelle) <= 2 * Ymax Then
YVrai = Abs(Abs(YVirtuelle) - 2 * Ymax)
End If
End If
End Sub
Private Sub ProCRaquet1()
Select Case Raquet1.RDirection
Case SUD:
If Raquet1.YR <= size_y * 15.5 Then
Raquet1.YR = Raquet1.YR + size_y / 2
If Bool1 = False Then
Tennis.YT = Tennis.YT + size_y / 2
End If
Else
End If
Case NORD:
If Raquet1.YR >= size_y / 2 Then
Raquet1.YR = Raquet1.YR - size_y / 2
If Bool2 = False Then
Tennis.YT = Tennis.YT - size_y / 2
End If
Else
End If
End Select
End Sub
Private Sub ProCRaquet2()
If Raquet2.YR >= size_y / 2 And Raquet2.RDirectV = NORD Then
If Raquet2.YR > Raquet2.n Then
Raquet2.YR = Raquet2.YR - size_y / 2
Raquet2.RDirectV = NORD
End If
CRaquet(1).Top = Raquet2.YR
Else
Raquet2.RDirectV = SUD
End If
'**************************************************************************************
If Raquet2.YR <= size_y * 15.5 And Raquet2.RDirectV = SUD Then
If Raquet2.YR < Raquet2.n Then
Raquet2.YR = Raquet2.YR + size_y / 2
Raquet2.RDirectV = SUD
End If
If Raquet2.YR = size_y * 18 Then
Raquet2.RDirectV = NORD
End If
CRaquet(1).Top = Raquet2.YR
Else
Raquet2.RDirectV = NORD
End If
End Sub
Private Sub Timer1_Timer()
ProCRaquet1
If Bool1 = True Then
Timer3.Enabled = True
Else
Timer3.Enabled = False
End If
CRaquet(0).Top = Raquet1.YR
ProcTunis
End Sub
Private Sub debut_jeu()
Const MAX_X = 28
Const MAX_Y = 19
YDebut = 0
size_x = Terrain.ScaleWidth / MAX_X
size_y = Terrain.ScaleHeight / MAX_Y
DX = 2 * size_x
DX1 = size_x * 25.5
Dyg = Raquet1.YR - size_y
Dyg1 = Raquet2.YR - size_y
Dyd = Raquet1.YR + 3 * size_y
Dyd1 = Raquet2.YR + 3 * size_y
DV = Tennis.YT - Raquet1.YR
DH = Tennis.XT - Raquet1.XR
DS = Sqr(DH ^ 2 + DV ^ 2)
VS = size_y / 2
VN = size_y / 2
CTunis.Width = size_x
CTunis.Height = size_y
CRaquet(0).Left = size_x
CRaquet(0).Top = size_y * 9
CRaquet(1).Left = size_x * 26
CRaquet(1).Top = size_y * 9
Terrain.ScaleMode = vbPixels
Terrain.AutoRedraw = True
Raquet1.XR = size_x
Raquet1.YR = size_y * 9
Raquet2.XR = size_x * 26
Raquet2.YR = size_y * 9
CTunis.Left = size_x * 2
CTunis.Top = size_y * 9 + Int(size_y * 3 / 2)
Tennis.XT = size_x * 2
Tennis.YT = size_y * 9 + Int(size_y * 3 / 2)
Timer1.Enabled = False
Timer2.Enabled = False
ImgMessage.Visible = False
CmdOK.Visible = False
CmdQuitter.Visible = False
Perdu = False
Bool1 = False
Bool2 = False
End Sub
Private Sub Timer3_Timer()
ProCRaquet2
End Sub
Conclusion :
je dépose mon programme qui est un jeu de tennis en 2D Merci
Pour plus d'infos n'hésitez pas à m'écrire à mejrhit@hotmail.com !!
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.