Ich habe erstmal die "Engine" (ist ja nicht wirklich viel) geschrieben und das in eine Funktion gepackt bzw. auf die Allgemeinheit ausgeweitet.Quote:
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)
Das sind die 2 sachen die ich noch ändern muss.
Und wie ändere ich das, dass der gegner nicht durch die Wand geht?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
MfG Jan
Danach habe ich die "KI" gebastelt.
Ich habe also so getan als wäre die KI ein menschlicher Spieler und eben alle Regeln/Befehle für mich auch für den Gegner gemacht.