FireFox Posted January 7, 2009 Share Posted January 7, 2009 (edited) Topic now to post #5 or go down Cheers, FireFox. Edited January 9, 2009 by FireFox Link to comment Share on other sites More sharing options...
FireFox Posted January 7, 2009 Author Share Posted January 7, 2009 (edited) Updated script ! I think its the Execute line that doesnt seem to be correct for calculate contact because sometimes it works, sometimes not ! $contact = Execute($yball - $p_1p);calculate contact MsgBox(64, '$contact p_1', $contact) $contact = Execute($yball - $p_2p);calculate contact MsgBox(64, '$contact p_2', $contact) Cheers, FireFox. Edited January 7, 2009 by FireFox Link to comment Share on other sites More sharing options...
Zinthose Posted January 7, 2009 Share Posted January 7, 2009 I agree, the "Execute" function expects a string.. EX: $contact = Execute("$yball - $p_1p") --- TTFN Link to comment Share on other sites More sharing options...
FireFox Posted January 7, 2009 Author Share Posted January 7, 2009 @Zinthose I dont know why the author done that ... thanks for your reply Cheers, FireFox. Link to comment Share on other sites More sharing options...
FireFox Posted January 8, 2009 Author Share Posted January 8, 2009 (edited) Fixed bug with contact line and now game works fine but... the window and graphics flash and the game is more slow than before ....If someone have better idea for non flashing graphics and for seeing ball moving without see these "shallow", I would appreciate it ! Hotkeys :ESC = ExitZ = up p1S = down p1Space = release ball p1Up arrow = up p2Down arrow = down p2Left arrow = release ball p2This is my update code :expandcollapse popup#include <GuiConstantsEx.au3> #include <WindowsConstants.au3> #include <IsPressed_UDF.au3> #include <GDIPlus.au3> Local $p_1p = 40, $p_2p = 40, $direction = True, $boundaries = True, $xball = 1, $yball = 1, $gf = 2, $win = 1 Dim $points[2] = [0, 0] Opt("GuiOnEventMode", 1) #Region GUI $GUI = GUICreate("GDI+", 700, 500, -1, -1, $WS_POPUP + $WS_BORDER) GUISetBkColor(0x000000, $GUI) GUISetState(@SW_SHOW, $GUI) $p_1 = GUICtrlCreateGraphic(0, 0, 700, 500) ;draw p_1 GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFFFF, 0xFFFFFF) GUICtrlSetGraphic(-1, $GUI_GR_RECT, 15, 216, 10, 60) ;~ GUICtrlSetGraphic(-1, $GUI_GR_REFRESH) GUICtrlSetGraphic(-1, $GUI_GR_MOVE) GUICtrlSetPos($p_1, 10, $p_1p) ;place p_1 $p_2 = GUICtrlCreateGraphic(0, 0, 700, 500) ;draw p_2 GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFFFF, 0xFFFFFF) GUICtrlSetGraphic(-1, $GUI_GR_RECT, 500, 216, 10, 60) ;~ GUICtrlSetGraphic(-1, $GUI_GR_REFRESH) GUICtrlSetGraphic(-1, $GUI_GR_MOVE) GUICtrlSetPos($p_2, 165, $p_2p) ;place p_2 $ball = GUICtrlCreateGraphic(0, 0, 700, 500) ;draw ball GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFFFF, 0xFFFFFF) GUICtrlSetGraphic(-1, $GUI_GR_RECT, 300, 100, 15, 15) GUICtrlSetGraphic(-1, $GUI_GR_REFRESH) ;~ GUICtrlSetGraphic(-1, $GUI_GR_CLOSE) GUICtrlSetGraphic(-1, $GUI_GR_MOVE) ;scores _Graphicdraw(300, 5, 5, 40) ;draw right line _Graphicdraw(390, 5, 5, 40) ;draw left line _Graphicdraw(300, 45, 95, 5) ;draw bottom line $p_1s = GUICtrlCreateLabel("0",310,7,35,35) GUICtrlSetColor($p_1s,0xFFFFFF) GUICtrlSetFont($p_1s,20,400,0,'Comic Sans MS') $p_2s = GUICtrlCreateLabel("0",355,7,35,35) GUICtrlSetColor($p_2s,0xFFFFFF) GUICtrlSetFont($p_2s,20,400,0,'Comic Sans MS') ;outline _Graphicdraw(345, 0, 5, 500) ;draw center line _Graphicdraw(0, 0, 5, 500) ;draw left line _Graphicdraw(0, 0, 700, 5) ;draw top line _Graphicdraw(695, 0, 5, 500) ;draw right line _Graphicdraw(0, 495, 700, 5) ;draw bottom line #EndRegion GUI HotKeySet("{ESC}", "_Exit") Func _Graphicdraw($left, $top, $width, $height) GUICtrlCreateGraphic(0, 0, 700, 500) GUICtrlSetGraphic(-1, $GUI_GR_COLOR, 0xFFFFFF, 0xFFFFFF) GUICtrlSetGraphic(-1, $GUI_GR_RECT, $left, $top, $width, $height) ;~ GUICtrlSetGraphic(-1, $GUI_GR_REFRESH) GUICtrlSetGraphic(-1, $GUI_GR_MOVE) EndFunc ;==>_Graphicdraw Func _Exit() Exit EndFunc ;==>_Exit While 1 Sleep(40) If ($direction) Then ;move ball to right $xball += $gf * 2 GUICtrlSetPos($ball, $xball, $yball) GUICtrlSetGraphic($ball, $GUI_GR_REFRESH) Else $xball -= $gf * 2 ;move ball to left GUICtrlSetPos($ball, $xball, $yball) GUICtrlSetGraphic($ball, $GUI_GR_REFRESH) EndIf If ($boundaries) Then ;move ball to top $yball += $gf * 3 GUICtrlSetPos($ball, $xball, $yball) GUICtrlSetGraphic($ball, $GUI_GR_REFRESH) Else $yball -= $gf * 3 ;move ball to bottom GUICtrlSetPos($ball, $xball, $yball) GUICtrlSetGraphic($ball, $GUI_GR_REFRESH) EndIf If ($yball > 350) Then $boundaries = False ;the ball hit the bottom If ($yball < -70) Then $boundaries = True ;the ball hit the top If (($xball >= 350) And ($direction)) Then ;the ball is in the line of right player $contact = $yball - $p_2p ;calculate contact ConsoleWrite('$contact p_2 >> $yball : ' & $yball & ' // $p_2p : ' & $p_2p & ' // $contact : ' & $contact & @CRLF) If (($contact > 88) And ($contact < 180)) Then ;check if there is contact $direction = False ;move the ball to left Else ;no contact, right player lost $points[1] += 1 ;+1 pt for player 2 GUICtrlSetData($p_2s,$points[1]) ;update score $gf = 0 ;stop ball move $xball = 345 ;replace xball $yball = 130 ;replace yball $direction = False ;move the ball to left $win = 3 ;active restart ball ConsoleWrite('win p_2 >> $points[0] : ' & $points[0] & ' // $points[1] : ' & $points[1] & @CRLF) EndIf EndIf If (($xball <= -268) And (Not ($direction))) Then ;the ball is in the line of left player $contact = $yball - $p_1p ;calculate contact ConsoleWrite('$contact p_1 >> $yball : ' & $yball & ' // $p_1p : ' & $p_1p & ' // $contact : ' & $contact & @CRLF) If (($contact > 100) And ($contact < 180)) Then ;check if there is contact $direction = True ;move the ball to right Else $points[0] += 1 ;+1 pt for player 1 GUICtrlSetData($p_1s,$points[0]) ;update score $gf = 0 ;stop ball move $xball = -258 ;replace xball $yball = 130 ;replace yball $direction = True ;move the ball to right $win = 2 ;active restart ball ConsoleWrite('win p_1 >> $points[0] : ' & $points[0] & ' // $points[1] : ' & $points[1] & @CRLF) EndIf EndIf ;Keys for move players If _IsAndKeyPressed("26|5A") Then If $p_2p >= -190 Then $p_2p -= 10 GUICtrlSetPos($p_2, 165, $p_2p) EndIf If $p_1p >= -190 Then $p_1p -= 10 GUICtrlSetPos($p_1, 10, $p_1p) EndIf ElseIf _IsAndKeyPressed("26|53") Then If $p_2p >= -190 Then $p_2p -= 10 GUICtrlSetPos($p_2, 165, $p_2p) EndIf If $p_1p <= 200 Then $p_1p += 10 GUICtrlSetPos($p_1, 10, $p_1p) EndIf ElseIf _IsAndKeyPressed("28|5A") Then If $p_2p <= 200 Then $p_2p += 10 GUICtrlSetPos($p_2, 165, $p_2p) EndIf If $p_1p >= -190 Then $p_1p -= 10 GUICtrlSetPos($p_1, 10, $p_1p) EndIf ElseIf _IsAndKeyPressed("28|53") Then If $p_2p <= 200 Then $p_2p += 10 GUICtrlSetPos($p_2, 165, $p_2p) EndIf If $p_1p <= 200 Then $p_1p += 10 GUICtrlSetPos($p_1, 10, $p_1p) EndIf ElseIf (_IsPressed("26") And $p_2p >= -190) Then $p_2p -= 10 GUICtrlSetPos($p_2, 165, $p_2p) ElseIf (_IsPressed("28") And $p_2p <= 200) Then $p_2p += 10 GUICtrlSetPos($p_2, 165, $p_2p) ElseIf (_IsPressed("5A") And $p_1p >= -190) Then $p_1p -= 10 GUICtrlSetPos($p_1, 10, $p_1p) ElseIf (_IsPressed("53") And $p_1p <= 200) Then $p_1p += 10 GUICtrlSetPos($p_1, 10, $p_1p) ElseIf (_IsPressed("25") And $win = 3) Then $win = 1 $gf = 2 ElseIf (_IsPressed("20") And $win = 2) Then $win = 1 $gf = 2 EndIf WEnd Func _OnAutoItExit() Exit EndFunc ;==>_OnAutoItExitCheers, FireFox. Edited January 8, 2009 by FireFox Link to comment Share on other sites More sharing options...
CoolPenguin Posted January 9, 2009 Share Posted January 9, 2009 If you have trouble with flicker, try looking into the ProSpeed dll. Link to comment Share on other sites More sharing options...
FireFox Posted January 9, 2009 Author Share Posted January 9, 2009 @CoolPenguin Thanks, I will take a look What I need is more stability about ctrl refreshing ... Cheers, FireFox. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now