Connexion

Récupérer mon mot de passe

Qui est en ligne ?
Il y a en tout 1 utilisateur en ligne :: 0 Enregistré, 0 Invisible et 1 Invité

Aucun

Le record du nombre d'utilisateurs en ligne est de 21 le Jeu 17 Oct 2013, 13:40
Derniers sujets
Flux RSS



Flag Counter
Partenaires

[AutoIt] Pong

Voir le sujet précédent Voir le sujet suivant Aller en bas

[AutoIt] Pong

Message par Dylan Gadacha le Lun 22 Sep 2014, 11:06

Salut !

Voici un Pong où vous jouez tout seul contre le mur à l'aide de votre souris (si vous allez vers le haut la raquette monte et si vous allez vers le bas elle descent)

Passez par le code source si vous voulez modifier les paramètres, j'ai la flemme de faire un menu ou une configuration via un .INI.
Je le ferai plus tard.

Code:
#Include <GUIConstants.Au3>
#Include <GUIConstantsEx.Au3>
#Include <WindowsConstants.Au3>
#Include <WinAPI.au3>

HotKeySet("{ESC}", _Quitter)

_WinAPI_ShowCursor(False)

_Game()

Func _Game()
   Global $Width = @DesktopWidth
   Global $Height = @DesktopHeight
   Global $Form1 = GUICreate("AutoIt - Pong", $Width, $Height, 0, 0, $WS_Popup)
   GUISetBkColor("0x000000", $Form1)
   GUISetState(@SW_SHOW, $Form1)
   Global $RacketW = 15 ; // Largeur de la raquette //
   Global $RacketH = 80 ; // Hauteur de la raquette //
   Global $BallS = 15 ; // Dimension de la balle //
   Global $W = 15 ; Taille des murs //
   Global $Coordinates = MouseGetPos()
   Global $H = $Coordinates[1]
   Global $Speed = 10 ; // Vitesse //
   Global $X = $Width/2
   Global $Y = $Height/2
   Global $MoveX = "-3"
   Global $MoveY = "6"
   For $I = 0 To $Height Step $W*2
     GUICtrlCreateLabel("", ($Width-$W)/2, $I, $W, $W)
     GUICtrlSetBkColor(-1, "0xFFFFFF")
   Next
   GUICtrlCreateLabel("", $Width-$W, 0, $W, $Height)
   GUICtrlSetBkColor(-1, "0xFFFFFF")
   $Racket = GUICtrlCreateLabel("", $W, $H, $RacketW, $RacketH)
   GUICtrlSetBkColor($Racket, "0xFFFFFF")
   $Ball = GUICtrlCreateLabel("", ($X-($BallS/2)), ($Y-($BallS/2)), $BallS, $BallS)
   GUICtrlSetBkColor($Ball, "0xFFFFFF")

   While GUIGetMsg() <> $GUI_Event_Close
     $Coordinates = MouseGetPos()
     $H = $Coordinates[1]
     $X = $X+$MoveX
     $Y = $Y+$MoveY
     $Coordinates = MouseGetPos()
     If $H < $W Then $H = $W
     If $H > $Height-$RacketH-$W Then $H = $Height-$RacketH-$W

     ; // Si on est trop à droite et que le déplacement horizontal est positif //
     If $X > $Width-$W And $MoveX > 0 Then
       $MoveX = (-$MoveX) ; // Inverser la valeur //
     EndIf
     ; // Si on est trop en bas et que le déplacement vertical est positif //
     If $Y > $Height-$W And $MoveY > 0 Then
       $MoveY = (-$MoveY) ; // Inverser la valeur //
     EndIf
     ; // Si on est trop haut et le déplacement vertical est negatif //
     If $X < $W And $MoveX < 0 Then
       $MoveX = Abs($MoveX) ; // Rendre positive cette valeur //
     EndIf

     If $Y < $W And $MoveY < 0 Then
       $MoveY = Abs($MoveY) ; // Rendre positive cette valeur //
     EndIf

     If $X < $W+($RacketW+($BallS/2)) And $Y > $H And $Y < $H+$RacketH Then
       $MoveX = (-$MoveX) ; // Inverser la valeur //
     EndIf

     If $X < $W Then _GameOver()
     Sleep($Speed)
     While $H = $Coordinates[1]
       $Coordinates = MouseGetPos()
       $X = $X+$MoveX
       $Y = $Y+$MoveY

       ; // Si on est trop à droite et que le déplacement horizontal est positif //
       If $X > $Width-$W And $MoveX > 0 Then
         $MoveX = (-$MoveX) ; // Inverser la valeur //
       EndIf
       ; // Si on est trop en bas et que le déplacement vertical est positif //
       If $Y > $Height-$W And $MoveY > 0 Then
         $MoveY = (-$MoveY) ; // Inverser la valeur //
       EndIf
       ; // Si on est trop haut et le déplacement vertical est negatif //
       If $X < $W And $MoveX < 0 Then
         $MoveX = Abs($MoveX) ; // Rendre positive cette valeur //
       EndIf

       If $Y < $W And $MoveY < 0 Then
         $MoveY = Abs($MoveY) ; // Rendre positive cette valeur //
       EndIf

       If $X < $W+($RacketW+($BallS/2)) And $Y > $H And $Y < $H+$RacketH Then
         $MoveX = (-$MoveX) ; // Inverser la valeur //
       EndIf

       If $X < $W Then _GameOver()
       GUICtrlDelete($Ball)
       $Ball = GUICtrlCreateLabel("", ($X-($BallS/2)), ($Y-($BallS/2)), $BallS, $BallS)
       GUICtrlSetBkColor($Ball, "0xFFFFFF")
       Sleep($Speed)
     WEnd

     GUICtrlDelete($Racket)
     GUICtrlDelete($Ball)
     $Racket = GUICtrlCreateLabel("", $W, $H, $RacketW, $RacketH)
     GUICtrlSetBkColor($Racket, "0xFFFFFF")
     $Ball = GUICtrlCreateLabel("", ($X-($BallS/2)), ($Y-($BallS/2)), $BallS, $BallS)
     GUICtrlSetBkColor($Ball, "0xFFFFFF")
   WEnd
EndFunc

Func _GameOver()
   GUIDelete($Form1)
   $Form2 = GUICreate("", $Width, $Height, 0, 0, $WS_POPUP)
   GUISetState(@SW_SHOW, $Form2)
   GUICtrlCreateLabel("VOUS AVEZ PERDU !", 0, ($Height-100)/2, $Width, 100, $SS_CENTER)
   GUICtrlSetFont(-1, 40, 0, 0, "Fixedsys")
   GUISetBkColor("0x000000", $Form2)
   GUICtrlSetColor(-1, "0xFFFFFF")
   Sleep(3000)
   GUIDelete($Form2)
   Sleep(100)
   _Game()
EndFunc

Func _Quitter()
   Exit
EndFunc

ECHAP pour quitter.
Le jeu recommence tout seul au bout de 3 secondes.

Dylan.

_________________
[Vous devez être inscrit et connecté pour voir cette image]
avatar
Dylan Gadacha
EQUIPE BBAT
EQUIPE BBAT

Mensagens : 106
Data de inscrição : 24/10/2013
Idade : 18

Revenir en haut Aller en bas

Re: [AutoIt] Pong

Message par Dylan Gadacha le Mar 23 Sep 2014, 03:09

Version Transparente:

[Vous devez être inscrit et connecté pour voir cette image]

Code:
#Include <GUIConstants.Au3>
#Include <GUIConstantsEx.Au3>
#Include <WindowsConstants.Au3>
#Include <WinAPI.au3>

HotKeySet("{ESC}", _Quitter)

_WinAPI_ShowCursor(False)

_Game()

Func _Game()
   Global $Width = @DesktopWidth
   Global $Height = @DesktopHeight
   Global $RacketW = 10 ; // Largeur de la raquette //
   Global $RacketH = 60 ; // Hauteur de la raquette //
   Global $BallS = 10 ; // Dimension de la balle //
   Global $W = 10 ; Taille des murs //
   Global $Coordinates = MouseGetPos()
   Global $H = $Coordinates[1]
   Global $Speed = 10 ; // Vitesse //
   Global $X = $Width/2
   Global $Y = $Height/2
   Global $MoveX = "-3"
   Global $MoveY = "6"

   For $I = 0 To $Height Step $W*2
     Assign("Form_" & $I, GUICreate("", $W, $W, ($Width-$W)/2, $I, BitOR($WS_POPUP, $DS_MODALFRAME), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST)), 2)
     GUISetBkColor("0x000000", Eval("Form_" & $I))
     GUISetState(@SW_SHOW, Eval("Form_" & $I))
   Next

   Global $Wall = GUICreate("", $W, $Height, $Width-$W, 0, BitOR($WS_POPUP, $DS_MODALFRAME), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
   GUISetBkColor("0x000000", $Wall)
   GUISetState(@SW_SHOW, $Wall)

   Global $Racket = GUICreate("", $RacketW, $RacketH, $W, $H, BitOR($WS_POPUP, $DS_MODALFRAME), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
   GUISetBkColor("0x000000", $Racket)
   GUISetState(@SW_SHOW, $Racket)

   Global $Ball = GUICreate("", $BallS, $BallS, ($X-($BallS/2)), ($Y-($BallS/2)), BitOR($WS_POPUP, $DS_MODALFRAME), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
   GUISetBkColor("0x000000", $Ball)
   GUISetState(@SW_SHOW, $Ball)

   While GUIGetMsg() <> $GUI_Event_Close
     $Coordinates = MouseGetPos()
     $H = $Coordinates[1]
     $X = $X+$MoveX
     $Y = $Y+$MoveY
     $Coordinates = MouseGetPos()
     If $H < $W Then $H = $W
     If $H > $Height-$RacketH-$W Then $H = $Height-$RacketH-$W

     ; // Si on est trop à droite et que le déplacement horizontal est positif //
     If $X > $Width-$W And $MoveX > 0 Then
       $MoveX = (-$MoveX) ; // Inverser la valeur //
     EndIf
     ; // Si on est trop en bas et que le déplacement vertical est positif //
     If $Y > $Height-$W And $MoveY > 0 Then
       $MoveY = (-$MoveY) ; // Inverser la valeur //
     EndIf
     ; // Si on est trop haut et le déplacement vertical est negatif //
     If $X < $W And $MoveX < 0 Then
       $MoveX = Abs($MoveX) ; // Rendre positive cette valeur //
     EndIf

     If $Y < $W And $MoveY < 0 Then
       $MoveY = Abs($MoveY) ; // Rendre positive cette valeur //
     EndIf

     If $X < $W+($RacketW+($BallS/2)) And $Y > $H And $Y < $H+$RacketH Then
       $MoveX = (-$MoveX) ; // Inverser la valeur //
     EndIf

     If $X < $W Then _GameOver()
     Sleep($Speed)
     While $H = $Coordinates[1]
       $Coordinates = MouseGetPos()
       $X = $X+$MoveX
       $Y = $Y+$MoveY

       ; // Si on est trop à droite et que le déplacement horizontal est positif //
       If $X > $Width-$W And $MoveX > 0 Then
         $MoveX = (-$MoveX) ; // Inverser la valeur //
       EndIf
       ; // Si on est trop en bas et que le déplacement vertical est positif //
       If $Y > $Height-$W And $MoveY > 0 Then
         $MoveY = (-$MoveY) ; // Inverser la valeur //
       EndIf
       ; // Si on est trop haut et le déplacement vertical est negatif //
       If $X < $W And $MoveX < 0 Then
         $MoveX = Abs($MoveX) ; // Rendre positive cette valeur //
       EndIf

       If $Y < $W And $MoveY < 0 Then
         $MoveY = Abs($MoveY) ; // Rendre positive cette valeur //
       EndIf

       If $X < $W+($RacketW+($BallS/2)) And $Y > $H And $Y < $H+$RacketH Then
         $MoveX = (-$MoveX) ; // Inverser la valeur //
       EndIf

       If $X < $W Then _GameOver()

       GUIDelete($Ball)
       $Ball = GUICreate("", $BallS, $BallS, ($X-($BallS/2)), ($Y-($BallS/2)), BitOR($WS_POPUP, $DS_MODALFRAME), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
       GUISetBkColor("0x000000", $Ball)
       GUISetState(@SW_SHOW, $Ball)

       Sleep($Speed)
     WEnd

     GUIDelete($Racket)
     GUIDelete($Ball)

     $Racket = GUICreate("", $RacketW, $RacketH, $W, $H, BitOR($WS_POPUP, $DS_MODALFRAME), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
     GUISetBkColor("0x000000", $Racket)
     GUISetState(@SW_SHOW, $Racket)

     $Ball = GUICreate("", $BallS, $BallS, ($X-($BallS/2)), ($Y-($BallS/2)), BitOR($WS_POPUP, $DS_MODALFRAME), BitOR($WS_EX_TOOLWINDOW, $WS_EX_TOPMOST))
     GUISetBkColor("0x000000", $Ball)
     GUISetState(@SW_SHOW, $Ball)
   WEnd
EndFunc

Func _GameOver()
   GUIDelete($Racket)
   GUIDelete($Ball)
   For $I = 0 To $Height Step $W*2
     GUIDelete(Eval("Form_" & $I))
   Next
   GUIDelete($Wall)
   _Game()
EndFunc

Func _Quitter()
   Exit
EndFunc

_________________
[Vous devez être inscrit et connecté pour voir cette image]
avatar
Dylan Gadacha
EQUIPE BBAT
EQUIPE BBAT

Mensagens : 106
Data de inscrição : 24/10/2013
Idade : 18

Revenir en haut Aller en bas

Re: [AutoIt] Pong

Message par Sachadee le Mar 23 Sep 2014, 10:26

Excellent Dylan, Bravo !

Tu començes à devenir bon en math....

_________________
@SachaDee
avatar
Sachadee
Admin
Admin

Mensagens : 591
Data de inscrição : 04/06/2013

http://bbat.forumeiro.com

Revenir en haut Aller en bas

Re: [AutoIt] Pong

Message par Dylan Gadacha le Mar 23 Sep 2014, 12:09

Oh, je dois t'avouer que j'avais les formules sous les yeux

(Ou du moins, le cahier des charges) :

Nous voulons que si la balle touche le bord droit, elle rebondisse. Pour ça, nous allons décréter que si x (l'abscisse de la balle, l'axe horizontal) est supérieur à la largeur de la fenêtre et que le déplacement est positif, c'est à dire de la gauche vers la droite, deplacementX est inversé.

Nous voulons que si la balle touche le bas de la fenêtre, elle rebondisse. Pour ça, nous allons décréter que si y (l'ordonnée de la balle, l'axe vertical) est supérieur à la hauteur de la fenêtre et que le déplacement est positif, c'est à dire du haut vers le bas, deplacementY est inversé.

Nous voulons que si la balle touche le haut de la fenêtre, elle rebondisse. Pour ça, nous allons décréter que si y (l'ordonnée de la balle, l'axe vertical) est inférieur à la hauteur de la fenêtre et que le déplacement est négatif, c'est à dire du bas vers le haut, deplacementY est positif.

Nous voulons que si la balle touche le plateau, elle rebondisse. Pour cela, nous allons poser comme condition que si x est inférieur à largeur du plateau + la moitié de celle de la balle, que y est supérieur à h et que y est inférieur à h+hauteur du plateau, deplacementX est inversé.

_________________
[Vous devez être inscrit et connecté pour voir cette image]
avatar
Dylan Gadacha
EQUIPE BBAT
EQUIPE BBAT

Mensagens : 106
Data de inscrição : 24/10/2013
Idade : 18

Revenir en haut Aller en bas

Re: [AutoIt] Pong

Message par Sachadee le Mar 23 Sep 2014, 15:14

Wink

_________________
@SachaDee
avatar
Sachadee
Admin
Admin

Mensagens : 591
Data de inscrição : 04/06/2013

http://bbat.forumeiro.com

Revenir en haut Aller en bas

Re: [AutoIt] Pong

Message par Contenu sponsorisé


Contenu sponsorisé


Revenir en haut Aller en bas

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

 
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum