Hab den Code für dem Abprallen im Inet gefunden, aber ich muss noch hinbekommen das wenn der ball auf die linke seite des Spielers fliegt, auch nach links geneigt wieder abprallt.
Der gegner ist auch noch nicht der Schlechteste.(Musste schlechteste schreiben da er bis jetzt unschlagbar ist :D)
Code:
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <ImageSearch.au3>
HotKeySet("{F2}","Neustart")
HotKeySet("{esc}","ENDE")
HotKeySet("{Left}","SpielerNachLinks")
HotKeySet("{Right}","SpielerNachRechts")
#region Constants
; Diese Werte kann man aus dem Bild direkt auslesen
; Sagen wir also dein Bild Ball.bmp ist 22 Pixel hoch und 30 breit
; Dann musst du auch dementsprechend das machen:
; $Width_Ball=30
; $High_Ball=22
Const $Width_Spieler=121
Const $Width_Ball=22
Const $Width_Gegner=121
Const $High_Spieler=23
Const $High_Ball=22
Const $High_Gegner=23
#endregion Constants
$down=1
$Verloren = 600
$Width = 436
$Height = 638
$X_Ball = 206
$Y_Ball = 308
$X_Spieler = 160
$Y_Spieler = 592
$X_Gegner = 160
$Y_Gegner = 16
$X_SF = 0
$Y_SF = 0
$left = 214
$top = 80
$ballleft = 408
$balltop = 664
$x = Random(1,3)
$y = Random(1,3)
$Time = TimerInit()
#Region ### START Koda GUI section ### Form=C:\Users\Jan\Desktop\Pong\Daten\Spielfeld GUI.kxf
$PongGui = GUICreate("Pong By WiiZocker", $Width, $Height, $left, $top)
$Ball = GUICtrlCreatePic("Daten\Ball.bmp", $X_Ball, $Y_Ball, 22, 22, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Spieler = GUICtrlCreatePic("Daten\Spieler.bmp", $X_Spieler, $Y_Spieler, 121, 23, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Gegner = GUICtrlCreatePic("Daten\Gegner.bmp", $X_Gegner, $Y_Gegner, 121, 23, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_ONTOP))
$Spielfeld = GUICtrlCreatePic("Daten\Spielfeld.bmp", $X_SF, $Y_SF, 435, 637, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS,$GUI_DISABLE))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
$Abprallen = GUICtrlSetPos($ball, $X_Ball + $x, $Y_Ball + $y)
MsgBox(0,"Spielstart","Mit einem Klick auf OK startet das Spiel.")
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
Start()
sleep(20)
Gegner()
WEnd
Func SpielerNachLinks()
If $X_Spieler > 15 Then
$X_Spieler = $X_Spieler - 7
GUICtrlSetPos($Spieler,$X_Spieler,$Y_Spieler)
EndIf
EndFunc
Func SpielerNachRechts()
If $X_Spieler < 295 Then
$X_Spieler = $X_Spieler + 7
GUICtrlSetPos($Spieler,$X_Spieler,$Y_Spieler)
EndIf
EndFunc
Func GegnerSteuern()
If $X_Gegner > 15 Or $X_Gegner < 295 Then ;Hier sollte er nicht durch die Mauer gehen. Wie kann ich das Ändern?
$X_Gegner = $X_Ball
$X_Gegner = $X_Gegner - 7
GUICtrlSetPos($Gegner,$X_Gegner,$Y_Gegner)
EndIf
EndFunc
Func BallBewegen()
if $down=1 Then
$Y_Ball = $Y_Ball + 12
else
$Y_Ball = $Y_Ball - 12
EndIf
If $Y_Ball >= $Verloren Then
MsgBox(0,"Verloren","Du hast Verloren")
Exit
EndIf
if $X_Ball < 19 Then $x = $x * -1
if $X_Ball > 416 - 12 Then $x = $x * -1
if $Y_Ball < 19 then $y = $y * -1
if $Y_Ball > 757 - 24 Then $y = $y * -1
$X_Ball = $X_Ball + $x
$Y_Ball = $Y_Ball + $y
$BallPosition = GUICtrlSetPos($Ball,$X_Ball,$Y_Ball)
;Eine Abprall funktion für die Linke und rechte seite des Spielers/Gegners
EndFunc
Func Collision($x1,$y1,$width1,$high1,$x2,$y2,$width2,$high2)
$hpos1=$y1+$high1
$wpos1=$x1+$width1
$hpos2=$y2+$high2
$wpos2=$x2+$width2
if (($hpos1>=$y2 and $y1<$y2) or ($hpos2>=$y1 and $y1>$y2)) Then
if (($wpos1>=$x2 and $x1<$x2) or ($wpos2>=$x1 and $x1>$x2)) then
return true
else
return false
endif
else
return false
endif
EndFunc
Func Start()
BallBewegen()
if Collision($X_Spieler,$Y_Spieler,$Width_Spieler,$High_Spieler,$X_Ball,$Y_Ball,$Width_Ball,$High_Ball)==true Then
$down=0
EndIf
if Collision($X_Ball,$Y_Ball,$Width_Ball,$High_Ball,$X_Gegner,$Y_Gegner,$Width_Gegner,$High_Gegner)==true Then
$down=1
EndIf
EndFunc
Func Neustart()
$X_Ball = 206
$Y_Ball = 308
$X_Spieler = 160
$Y_Spieler = 592
$X_Gegner = 160
$Y_Gegner = 16
$X_SF = 0
$Y_SF = 0
MsgBox(0,"Spielstart","Mit einem Klick auf OK startet das Spiel.")
EndFunc
Func ENDE()
Exit
EndFunc
Func Aktuell()
GUICtrlSetPos($Gegner,$X_Gegner,$Y_Gegner)
EndFunc
Func Gegner()
GegnerSteuern()
EndFunc