So...mein Spiel Pong
Was ist Pong (Wikipedia-Information)?
Das Spielprinzip von Pong ist simpel und ähnelt dem des Tischtennis: Ein Punkt („Ball“) bewegt sich auf dem Bildschirm hin und her. Jeder der beiden Spieler steuert einen senkrechten Strich („Schläger) nach oben und unten. Lässt man den „Ball“ am „Schläger“ vorbei, erhält der Gegner einen Punkt.
Feauters:
- Viele Einstellmöglichkeiten (z.B. Spielfeldgröße, Ballgröße, Geschwindigkeiten...)
- Objekte die das Spiel beeinflussen
- Die "Klassischen" Spielelemente sind gegeben
- Wird weiterentwickelt
- Hoher Suchtfaktor
Danke an
Spoiler anzeigen
Sprenger120 (Backpuffer-Problem gelöst)
PrideRage (Verbesserungsvorschlag)
stayawayknight (Training-Computergegner Geskriptet)
Bakku (Verbesserungsvorschlag)
Goldy (Bug gefunden)
Version 1.2
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Misc.au3>
#Include <GDIPlus.au3>
$dll = DllOpen("user32.dll")
_GDIPlus_Startup()
Global $Next = "True"
Global $GuiBreite = 900, $GuiHoehe = 550 ;GuiGröße
Global $BallBreite = 10, $BallHoehe = 10 ;Größe des Balles
Global $Schlaeger1Breite = 10, $Schlaeger1Hoehe = 150 ;Größe des Balles
Global $Schlaeger2Breite = 10, $Schlaeger2Hoehe = 150 ;Größe des Balles
Global $WPos = ($GuiBreite / 2) - ($BallBreite / 2), $HPos = ($GuiHoehe / 2) - ($BallHoehe / 2) ;Starposition für Ball
Global $WSchlaeger1pos = 10, $HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
Global $WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite, $HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
Global $back = "True", $Down = "True" ;Für das automatische zurückhüpfen des balles
Global $GeschRealBreite = 6, $GeschRealHoehe = 3
Global $GeschBreite = $GeschRealBreite, $GeschHoehe = $GeschRealHoehe;Wie weit/Schnell der Ball sich bewegt
Global $Team1 = 0, $Team2 = 0 ;Punkte der Teams
Global $LabelPunkte = $GuiHoehe - 20
Global $AbstandObjGui = 30, $GeschErhoehen = 0
Global $Schlaer1Gesch = 4, $Schlaer2Gesch = 4
Global $CPU_Spieler = "True"
Global $GuiCheck = "True"
Global $Gamestart = "True"
do
if $Gamestart = "False" Then
GUIDelete($MainGui)
$Gamestart = "True"
MsgBox(1,"Zahlenfehler","Bitte überprüfen sie Ihre Eingaben")
EndIf
$MainGui = GUICreate("Benutzereinstellungen",300,300)
$Button_Ok = GUICtrlCreateButton("OK",20,250,50,30)
$Button_Cancel = GUICtrlCreateButton("Cancel",90,250,50,30)
$Tab = GUICtrlCreateTab(10,10,280,280)
$Reiter1 = GUICtrlCreateTabItem("Spielmodi")
GUICtrlCreateLabel("Spielmodi wählen:",20,40,200,25)
GUICtrlCreateLabel("Spieler vs Spieler", 20,70,130,20)
$radio1 = GUICtrlCreateRadio("", 150, 70, 20, 20)
GUICtrlCreateLabel("Spieler vs Computer", 20,95,130,20)
$radio2 = GUICtrlCreateRadio("", 150, 95, 20, 20)
GUICtrlCreateLabel("Training vs Computer", 20,120,130,20)
$radio3 = GUICtrlCreateRadio("", 150, 120, 20, 20)
GUICtrlSetState($radio1, $GUI_CHECKED)
$Reiter2 = GUICtrlCreateTabItem("Größen")
GUICtrlCreateLabel("Ballgröße (2-100):",20,40,100,20)
$Input1 = GUICtrlCreateInput("10",120,40,40,20)
GUICtrlCreateLabel("Schläger1höhe:", 20,70,100,20)
$Input2 = GUICtrlCreateInput("150",120,70,40,20)
GUICtrlCreateLabel("Schläger2höhe:",20,95,100,20)
$Input3 = GUICtrlCreateInput("150",120,95,40,20)
GUICtrlCreateLabel("Spielfeld:",20,130,120,20)
GUICtrlCreateLabel("Breite:", 20,150,120,20)
$Input4 = GUICtrlCreateInput("900",120,150,40,20)
GUICtrlCreateLabel("Höhe:",20,175,120,20)
$Input5 = GUICtrlCreateInput("550",120,175,40,20)
$Reiter3 = GUICtrlCreateTabItem("Geschwindigkeiten")
GUICtrlCreateLabel("Ballgeschwindigkeit:",20,40,130,20)
$Input6 = GUICtrlCreateInput("6",150,40,40,20)
GUICtrlCreateLabel("Schläger1:", 20,70,130,20)
$Input7 = GUICtrlCreateInput("4",150,70,40,20)
GUICtrlCreateLabel("Schläger2:",20,95,130,20)
$Input8 = GUICtrlCreateInput("4",150,95,40,20)
GUICtrlCreateTabItem("")
GUISetState(@SW_Show)
While 1
$msg = GUIGetMsg(1)
Select
case $msg[0] = $Button_Ok
$BallBreite = GUICtrlRead($Input1)
$BallHoehe = GUICtrlRead($Input1)
if $BallHoehe > 100 then
$Gamestart = "False"
EndIf
if $BallHoehe < 2 then
$Gamestart = "False"
EndIf
$Schlaeger1Hoehe = GUICtrlRead($Input2)
$Schlaeger2Hoehe = GUICtrlRead($Input3)
$GuiBreite = GUICtrlRead($Input4)
$GuiHoehe = GUICtrlRead($Input5)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$GeschRealBreite = GUICtrlRead($Input6)
$GeschBreite = $GeschRealBreite
$Schlaer1Gesch = GUICtrlRead($Input7)
$Schlaer2Gesch = GUICtrlRead($Input8)
$Spielmodi1 = GUICtrlRead($radio1)
$Spielmodi2 = GUICtrlRead($radio2)
$Spielmodi3 = GUICtrlRead($radio3)
if $Spielmodi1 = 1 then
$CPU_Spieler = "False"
EndIf
if $Spielmodi2 = 1 then
$CPU_Spieler = "True"
EndIf
if $Spielmodi3 = 1 then
$CPU_Spieler = "Training"
EndIf
ExitLoop 1
case $msg[0] = $Button_Cancel
Exit
Case $msg[0] = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
until $Gamestart = "True"
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Shutdown_GDI") ;Führt die funktion aus, sobald das Prog beendet wird
$MainGUI = GUICreate("Game", $GuiBreite, $GuiHoehe) ;hauptfenster wird erzeugt
GUISetOnEvent(-3, "Shutdown_GDI")
GUISetState()
$Graphics = _GDIPlus_GraphicsCreateFromHWND($MainGUI) ;Grafische Oberfläche wird erzeugt
$Bitmap = _GDIPlus_BitmapCreateFromGraphics($GuiBreite, $GuiHoehe - $AbstandObjGui, $Graphics)
$Backbuffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
$ObjColor = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
msgbox(0x0,"NRunde startet gleich","3",1)
msgbox(0x0,"Runde startet gleich","2",1)
msgbox(0x0,"Runde startet gleich","1",1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
sleep(1000)
While Sleep(10)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
BallMoveW()
BallMoveH()
If _IsPressed("28", $dll) Then
$HSchlaeger1Pos = $HSchlaeger1Pos + $Schlaer1Gesch
EndIf
If _IsPressed("26", $dll) Then
$HSchlaeger1Pos = $HSchlaeger1Pos - $Schlaer1Gesch
EndIf
Select
case $CPU_Spieler = "False"
If _IsPressed("53", $dll) Then
$HSchlaeger2Pos = $HSchlaeger2Pos + $Schlaer2Gesch
EndIf
If _IsPressed("57", $dll) Then
$HSchlaeger2Pos = $HSchlaeger2Pos - $Schlaer2Gesch
EndIf
case $CPU_Spieler = "True"
CPU_Spieler()
case $CPU_Spieler = "Training"
$HSchlaeger2pos = $HPos - $Schlaeger2Hoehe / 2
$HSchlaeger1pos = $HPos - $Schlaeger1Hoehe / 2
EndSelect
PosTestBreite()
PosTestHoehe()
PosSchlHoehe()
WEnd
;Funktionen--------------------------------------------------------------------------------------
Func BallMoveH()
If $HPos >= ($GuiHoehe - $AbstandObjGui) - $BallHoehe Then
$Down = "False"
EndIf
If $HPos <= 0 Then
$Down = "True"
EndIf
If $Down = "False" Then
$HPos = $HPos - $GeschHoehe
EndIf
If $Down = "True" Then
$HPos = $HPos + $GeschHoehe
EndIf
EndFunc ;==>BallMoveH
Func BallMoveW()
If $WPos >= $GuiBreite - $BallBreite Then
$WPos = ($GuiBreite / 2) - ($BallBreite / 2)
$HPos = (($GuiHoehe - $AbstandObjGui) / 2) - ($BallHoehe / 2)
$GeschBreite = $GeschRealBreite
$GeschHoehe = $GeschRealHoehe
GUICtrlDelete($Label1)
$Team1 = $Team1 + 1
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
if $Team1 = 5 Then
MsgBox(0,"Gewonnen","Team1 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
if $Team2 = 5 Then
MsgBox(0,"Gewonnen","Team2 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
$WSchlaeger1pos = 10
$HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
msgbox(0x0,"Nächste Runde startet gleich","3",1)
msgbox(0x0,"Nächste Runde startet gleich","2",1)
msgbox(0x0,"Nächste Runde startet gleich","1",1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
sleep(1000)
EndIf
If $WPos <= 0 + ($Schlaeger1Breite - 1) Then
$WPos = ($GuiBreite / 2) - ($BallBreite / 2)
$HPos = (($GuiHoehe - $AbstandObjGui) / 2) - ($BallHoehe / 2)
$GeschBreite = $GeschRealBreite
$GeschHoehe = $GeschRealHoehe
GUICtrlDelete($Label2)
$Team2 = $Team2 + 1
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
if $Team1 = 5 Then
MsgBox(0,"Gewonnen","Team1 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
if $Team2 = 5 Then
MsgBox(0,"Gewonnen","Team2 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
$WSchlaeger1pos = 10
$HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
msgbox(0x0,"Nächste Runde startet gleich","3",1)
msgbox(0x0,"Nächste Runde startet gleich","2",1)
msgbox(0x0,"Nächste Runde startet gleich","1",1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
Sleep(1000)
EndIf
;Schläger 1
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos >= $HSchlaeger1Pos then
if $HPos <= $HSchlaeger1Pos + ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 5
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos >= $HSchlaeger1Pos + ($Schlaeger1Hoehe / 5) then
if $HPos <= $HSchlaeger1Pos + 2 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 4
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos >= $HSchlaeger1Pos + 2 * ($Schlaeger1Hoehe / 5) then
if $HPos <= $HSchlaeger1Pos + 3 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 3
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos >= $HSchlaeger1Pos + 3 * ($Schlaeger1Hoehe / 5) then
if $HPos <= $HSchlaeger1Pos + 4 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 4
$back = "False"
EndIf
EndIf
EndIf
;~
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos >= $HSchlaeger1Pos + 4 * ($Schlaeger1Hoehe / 5) then
if $HPos <= $HSchlaeger1Pos + 5 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 5
$back = "False"
EndIf
EndIf
EndIf
;Schläger 2
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos >= $HSchlaeger2Pos then
if $HPos <= $HSchlaeger2Pos + ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 5
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos >= $HSchlaeger2Pos + ($Schlaeger2Hoehe / 5) then
if $HPos <= $HSchlaeger2Pos + 2 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 4
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos >= $HSchlaeger2Pos + 2 * ($Schlaeger2Hoehe / 5) then
if $HPos <= $HSchlaeger2Pos + 3 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 3
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos >= $HSchlaeger2Pos + 3 * ($Schlaeger2Hoehe / 5) then
if $HPos <= $HSchlaeger2Pos + 4 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 4
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos >= $HSchlaeger2Pos + 4 * ($Schlaeger2Hoehe / 5) then
if $HPos <= $HSchlaeger2Pos + 5 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 5
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $back = "True" Then
$WPos = $WPos - $GeschBreite
EndIf
If $back = "False" Then
$WPos = $WPos + $GeschBreite
EndIf
EndFunc ;==>BallMoveW
Func CPU_Spieler()
if $HPos > $HSchlaeger2Pos + ($Schlaeger2Hoehe/ 2) Then
$HSchlaeger2Pos = $HSchlaeger2Pos + $Schlaer2Gesch
Else
$HSchlaeger2Pos = $HSchlaeger2Pos - $Schlaer2Gesch
EndIf
EndFunc ;==>CPU_Spieler
Func PosTestBreite()
If $WPos > $GuiBreite - $BallBreite Then
$WPos = $GuiBreite - $BallBreite
EndIf
If $WPos < 0 Then
$WPos = 0
EndIf
If $WPos <= $WSchlaeger1Pos Then
if $HPos >= $HSchlaeger1Pos then
if $HPos <= $HSchlaeger1Pos + $Schlaeger1Hoehe then
$WPos = $WSchlaeger1Pos + $Schlaeger1Breite
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2Pos + $Schlaeger2Breite Then
if $HPos >= $HSchlaeger2Pos then
if $HPos <= $HSchlaeger2Pos + $Schlaeger2Hoehe then
$WPos = $WSchlaeger2Pos - $Ballbreite
EndIf
EndIf
EndIf
EndFunc ;==>PosTestBreite
Func PosTestHoehe()
If $HPos > $GuiHoehe - $BallHoehe Then
$HPos = $GuiHoehe - $BallHoehe
EndIf
If $HPos < 0 Then
$HPos = 0
EndIf
EndFunc ;==>PosTestHoehe
Func PosSchlHoehe()
If $HSchlaeger1Pos < 0 Then
$HSchlaeger1Pos = 0
EndIf
If $HSchlaeger1Pos() > $GuiHoehe - $AbstandObjGui - $Schlaeger1Hoehe Then
$HSchlaeger1Pos = $GuiHoehe - $AbstandObjGui - $Schlaeger1Hoehe
EndIf
If $HSchlaeger2Pos < 0 Then
$HSchlaeger2Pos = 0
EndIf
If $HSchlaeger2Pos() > $GuiHoehe - $AbstandObjGui - $Schlaeger2Hoehe Then
$HSchlaeger2Pos = $GuiHoehe - $AbstandObjGui - $Schlaeger2Hoehe
EndIf
EndFunc ;==>PosTestHoehe
Func Shutdown_GDI()
_GDIPlus_GraphicsDispose($Graphics)
_GDIPlus_GraphicsDispose($Backbuffer)
_GDIPlus_BitmapDispose($Bitmap)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>Shutdown_GD
Alles anzeigen
Version 1.3
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Misc.au3>
#Include <GDIPlus.au3>
$dll = DllOpen("user32.dll")
_GDIPlus_Startup()
Global $MainGui = ""
Global $Next = "True"
Global $GuiBreite = 900, $GuiHoehe = 550 ;GuiGröße
Global $BallBreite = 10, $BallHoehe = 10 ;Größe des Balles
Global $Schlaeger1Breite = 10, $Schlaeger1Hoehe = 150 ;Größe des Balles
Global $Schlaeger2Breite = 10, $Schlaeger2Hoehe = 150 ;Größe des Balles
Global $WPos = ($GuiBreite / 2) - ($BallBreite / 2), $HPos = ($GuiHoehe / 2) - ($BallHoehe / 2) ;Starposition für Ball
Global $WSchlaeger1pos = 10, $HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
Global $WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite, $HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
Global $back = "True", $Down = "True" ;Für das automatische zurückhüpfen des balles
Global $GeschRealBreite = 6, $GeschRealHoehe = 3
Global $GeschBreite = $GeschRealBreite, $GeschHoehe = $GeschRealHoehe;Wie weit/Schnell der Ball sich bewegt
Global $Team1 = 0, $Team2 = 0 ;Punkte der Teams
Global $LabelPunkte = $GuiHoehe - 20
Global $AbstandObjGui = 30, $GeschErhoehen = 0
Global $Schlaer1Gesch = 4, $Schlaer2Gesch = 4
Global $CPU_Spieler = "True"
Global $GuiCheck = "True"
Global $Gamestart = "True"
Global $TasteSchlaegerHoch1 = "", $TasteSchlaegerRunter1 = ""
Global $TasteSchlaegerHoch2 = "", $TasteSchlaegerRunter2 = ""
Global $FontSize = "20"
Global $GeschLabel = ""
Dim $g = 5
do
if $Gamestart = "False" Then
GUIDelete($MainGui)
$Gamestart = "True"
MsgBox(1,"Zahlenfehler","Bitte überprüfen sie Ihre Eingaben")
EndIf
$MainGui = GUICreate("Benutzereinstellungen",400,300)
$Button_Ok = GUICtrlCreateButton("OK",20,250,50,30)
$Button_Cancel = GUICtrlCreateButton("Cancel",90,250,50,30)
$Tab = GUICtrlCreateTab(10,10,380,280)
$Reiter1 = GUICtrlCreateTabItem("Spielmodi")
GUICtrlCreateLabel("Spielmodi wählen:",20,40,200,25)
GUICtrlCreateLabel("Spieler vs Spieler", 20,70,130,20)
$radio1 = GUICtrlCreateRadio("", 150, 70, 20, 20)
GUICtrlCreateLabel("Spieler vs Computer", 20,95,130,20)
$radio2 = GUICtrlCreateRadio("", 150, 95, 20, 20)
GUICtrlCreateLabel("Training vs Computer", 20,120,130,20)
$radio3 = GUICtrlCreateRadio("", 150, 120, 20, 20)
GUICtrlSetState($radio1, $GUI_CHECKED)
$Reiter2 = GUICtrlCreateTabItem("Größen")
GUICtrlCreateLabel("Ballgröße (2-100):",20,40,110,20)
$Input1 = GUICtrlCreateInput("10",130,40,40,20)
GUICtrlCreateLabel("Schläger1höhe:", 20,70,100,20)
$Input2 = GUICtrlCreateInput("150",130,70,40,20)
GUICtrlCreateLabel("Schläger2höhe:",20,95,100,20)
$Input3 = GUICtrlCreateInput("150",130,95,40,20)
GUICtrlCreateLabel("Spielfeld:",20,130,120,20)
GUICtrlCreateLabel("Breite:", 20,150,120,20)
$Input4 = GUICtrlCreateInput("900",130,150,40,20)
GUICtrlCreateLabel("Höhe:",20,175,120,20)
$Input5 = GUICtrlCreateInput("550",130,175,40,20)
$Reiter3 = GUICtrlCreateTabItem("Geschwindigkeiten")
GUICtrlCreateLabel("Ballgeschwindigkeit:",20,40,130,20)
$Input6 = GUICtrlCreateInput("6",150,40,40,20)
GUICtrlCreateLabel("Schläger1:", 20,70,130,20)
$Input7 = GUICtrlCreateInput("4",150,70,40,20)
GUICtrlCreateLabel("Schläger2:",20,95,130,20)
$Input8 = GUICtrlCreateInput("4",150,95,40,20)
$Reiter4 = GUICtrlCreateTabItem("Tastenbelegung")
GUICtrlCreateLabel("Spieler 1:",20,40,130,20)
GUICtrlCreateLabel("Schlaeger hoch:",20,70,130,20)
$Input9 = GUICtrlCreateCombo("",150,70,120,20)
GUICtrlSetData ($Input9,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","W" )
GUICtrlCreateLabel("Schlaeger runter:",20,100,130,20)
$Input10 = GUICtrlCreateCombo("",150,100,120,20)
GUICtrlSetData ($Input10,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","S" )
GUICtrlCreateLabel("Spieler 2:",20,150,130,20)
GUICtrlCreateLabel("Schlaeger hoch:",20,180,130,20)
$Input11 = GUICtrlCreateCombo("",150,180,120,20)
GUICtrlSetData ($Input11,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","UP" )
GUICtrlCreateLabel("Schlaeger runter:",20,210,130,20)
$Input12 = GUICtrlCreateCombo("",150,210,120,20)
GUICtrlSetData ($Input12,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","DOWN" )
GUICtrlCreateTabItem("")
GUISetState(@SW_Show)
While 1
$msg = GUIGetMsg(1)
Select
case $msg[0] = $Button_Ok
$BallBreite = GUICtrlRead($Input1)
$BallHoehe = GUICtrlRead($Input1)
if $BallHoehe > 100 then
$Gamestart = "False"
EndIf
if $BallHoehe < 2 then
$Gamestart = "False"
EndIf
$Schlaeger1Hoehe = GUICtrlRead($Input2)
$Schlaeger2Hoehe = GUICtrlRead($Input3)
$GuiBreite = GUICtrlRead($Input4)
$GuiHoehe = GUICtrlRead($Input5)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$GeschRealBreite = GUICtrlRead($Input6)
$GeschBreite = $GeschRealBreite
$Schlaer1Gesch = GUICtrlRead($Input7)
$Schlaer2Gesch = GUICtrlRead($Input8)
$Spielmodi1 = GUICtrlRead($radio1)
$Spielmodi2 = GUICtrlRead($radio2)
$Spielmodi3 = GUICtrlRead($radio3)
$TasteSchlaegerHoch1 = GUICtrlRead($input9)
$TasteSchlaegerRunter1 = GUICtrlRead($input10)
$TasteSchlaegerHoch2 = GUICtrlRead($input11)
$TasteSchlaegerRunter2 = GUICtrlRead($input12)
$TasteSchlaegerHoch1 = Taste($TasteSchlaegerHoch1)
$TasteSchlaegerRunter1 = Taste($TasteSchlaegerRunter1)
$TasteSchlaegerHoch2 = Taste($TasteSchlaegerHoch2)
$TasteSchlaegerRunter2 = Taste($TasteSchlaegerRunter2)
if $Spielmodi1 = 1 then
$CPU_Spieler = "False"
EndIf
if $Spielmodi2 = 1 then
$CPU_Spieler = "True"
EndIf
if $Spielmodi3 = 1 then
$CPU_Spieler = "Training"
EndIf
ExitLoop 1
case $msg[0] = $Button_Cancel
Exit
Case $msg[0] = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
until $Gamestart = "True"
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Shutdown_GDI") ;Führt die funktion aus, sobald das Prog beendet wird
$MainGUI = GUICreate("Game", $GuiBreite, $GuiHoehe) ;hauptfenster wird erzeugt
GUISetOnEvent(-3, "Shutdown_GDI")
GUISetState()
$Graphics = _GDIPlus_GraphicsCreateFromHWND($MainGUI) ;Grafische Oberfläche wird erzeugt
$Bitmap = _GDIPlus_BitmapCreateFromGraphics($GuiBreite, $GuiHoehe - $AbstandObjGui, $Graphics)
$Backbuffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
$ObjColor = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
;~ msgbox(0x0,"NRunde startet gleich","3",1)
;~ msgbox(0x0,"Runde startet gleich","2",1)
;~ msgbox(0x0,"Runde startet gleich","1",1)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
GUICtrlDelete($GeschLabel)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
sleep(1000)
While Sleep(5)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
BallMoveW()
BallMoveH()
If _IsPressed($TasteSchlaegerRunter1, $dll) Then
$HSchlaeger1Pos = $HSchlaeger1Pos + $Schlaer1Gesch
EndIf
If _IsPressed($TasteSchlaegerHoch1, $dll) Then
$HSchlaeger1Pos = $HSchlaeger1Pos - $Schlaer1Gesch
EndIf
If _IsPressed("18", $dll) Then
Exit
EndIf
Select
case $CPU_Spieler = "False"
If _IsPressed($TasteSchlaegerRunter2, $dll) Then
$HSchlaeger2Pos = $HSchlaeger2Pos + $Schlaer2Gesch
EndIf
If _IsPressed($TasteSchlaegerHoch2, $dll) Then
$HSchlaeger2Pos = $HSchlaeger2Pos - $Schlaer2Gesch
EndIf
case $CPU_Spieler = "True"
CPU_Spieler()
case $CPU_Spieler = "Training"
$HSchlaeger2pos = $HPos - $Schlaeger2Hoehe / 2
$HSchlaeger1pos = $HPos - $Schlaeger1Hoehe / 2
EndSelect
PosTestBreite()
PosTestHoehe()
PosSchlHoehe()
if $g = 5 then
GUIctrlDelete ($GeschLabel)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
$g = -1
EndIf
$g = $g + 1
WEnd
;Funktionen--------------------------------------------------------------------------------------
Func BallMoveH()
If $HPos >= ($GuiHoehe - $AbstandObjGui) - $BallHoehe Then
$Down = "False"
EndIf
If $HPos <= 0 Then
$Down = "True"
EndIf
If $Down = "False" Then
$HPos = $HPos - $GeschHoehe
EndIf
If $Down = "True" Then
$HPos = $HPos + $GeschHoehe
EndIf
EndFunc ;==>BallMoveH
Func BallMoveW()
If $WPos >= $GuiBreite - $BallBreite Then
$WPos = ($GuiBreite / 2) - ($BallBreite / 2)
$HPos = (($GuiHoehe - $AbstandObjGui) / 2) - ($BallHoehe / 2)
$GeschBreite = $GeschRealBreite
$GeschHoehe = $GeschRealHoehe
GUICtrlDelete($Label1)
$Team1 = $Team1 + 1
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
if $Team1 = 5 Then
MsgBox(0,"Gewonnen","Team1 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
if $Team2 = 5 Then
MsgBox(0,"Gewonnen","Team2 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
$WSchlaeger1pos = 10
$HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
sleep(1000)
EndIf
If $WPos <= 0 + ($Schlaeger1Breite - 1) Then
$WPos = ($GuiBreite / 2) - ($BallBreite / 2)
$HPos = (($GuiHoehe - $AbstandObjGui) / 2) - ($BallHoehe / 2)
$GeschBreite = $GeschRealBreite
$GeschHoehe = $GeschRealHoehe
GUICtrlDelete($Label2)
$Team2 = $Team2 + 1
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
if $Team1 = 5 Then
MsgBox(0,"Gewonnen","Team1 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
if $Team2 = 5 Then
MsgBox(0,"Gewonnen","Team2 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
$WSchlaeger1pos = 10
$HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
Sleep(1000)
EndIf
;Schläger 1
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 5
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 2 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 4
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 2 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 3 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 3
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 3 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 4 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 4
$back = "False"
EndIf
EndIf
EndIf
;~
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 4 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 5 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 5
$back = "False"
EndIf
EndIf
EndIf
;Schläger 2
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 5
if $GeschErhoehen = 3 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 2 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 4
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 2 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 3 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 3
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 3 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 4 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 4
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 4 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 5 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 5
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $back = "True" Then
$WPos = $WPos - $GeschBreite
EndIf
If $back = "False" Then
$WPos = $WPos + $GeschBreite
EndIf
EndFunc ;==>BallMoveW
Func CPU_Spieler()
if $HPos > $HSchlaeger2Pos + ($Schlaeger2Hoehe/ 2) Then
$HSchlaeger2Pos = $HSchlaeger2Pos + $Schlaer2Gesch
Else
$HSchlaeger2Pos = $HSchlaeger2Pos - $Schlaer2Gesch
EndIf
EndFunc ;==>CPU_Spieler
Func PosTestBreite()
If $WPos > $GuiBreite - $BallBreite Then
$WPos = $GuiBreite - $BallBreite
EndIf
If $WPos < 0 Then
$WPos = 0
EndIf
If $WPos <= $WSchlaeger1Pos Then
if $HPos >= $HSchlaeger1Pos then
if $HPos <= $HSchlaeger1Pos + $Schlaeger1Hoehe then
$WPos = $WSchlaeger1Pos + $Schlaeger1Breite
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2Pos + $Schlaeger2Breite Then
if $HPos >= $HSchlaeger2Pos then
if $HPos <= $HSchlaeger2Pos + $Schlaeger2Hoehe then
$WPos = $WSchlaeger2Pos - $Ballbreite
EndIf
EndIf
EndIf
EndFunc ;==>PosTestBreite
Func PosTestHoehe()
If $HPos > $GuiHoehe - $BallHoehe Then
$HPos = $GuiHoehe - $BallHoehe
EndIf
If $HPos < 0 Then
$HPos = 0
EndIf
EndFunc ;==>PosTestHoehe
Func PosSchlHoehe()
If $HSchlaeger1Pos < 0 Then
$HSchlaeger1Pos = 0
EndIf
If $HSchlaeger1Pos() > $GuiHoehe - $AbstandObjGui - $Schlaeger1Hoehe Then
$HSchlaeger1Pos = $GuiHoehe - $AbstandObjGui - $Schlaeger1Hoehe
EndIf
If $HSchlaeger2Pos < 0 Then
$HSchlaeger2Pos = 0
EndIf
If $HSchlaeger2Pos() > $GuiHoehe - $AbstandObjGui - $Schlaeger2Hoehe Then
$HSchlaeger2Pos = $GuiHoehe - $AbstandObjGui - $Schlaeger2Hoehe
EndIf
EndFunc ;==>PosTestHoehe
Func Taste($Taste)
Select
Case $Taste = "UP"
Return "26"
Case $Taste = "DOWN"
Return "28"
Case $Taste = "LEFT"
Return "25"
Case $Taste = "RIGHT"
Return "27"
Case $Taste = "LEFT SHIFT"
Return "A0"
Case $Taste = "LEFT STRG"
Return "A2"
Case $Taste = "A"
Return "41"
Case $Taste = "B"
Return "42"
Case $Taste = "C"
Return "43"
Case $Taste = "D"
Return "44"
Case $Taste = "E"
Return "45"
Case $Taste = "F"
Return "46"
Case $Taste = "G"
Return "47"
Case $Taste = "H"
Return "48"
Case $Taste = "I"
Return "49"
Case $Taste = "J"
Return "4A"
Case $Taste = "K"
Return "4B"
Case $Taste = "L"
Return "4C"
Case $Taste = "M"
Return "4D"
Case $Taste = "N"
Return "4E"
Case $Taste = "O"
Return "4F"
Case $Taste = "P"
Return "50"
Case $Taste = "Q"
Return "51"
Case $Taste = "R"
Return "52"
Case $Taste = "S"
Return "53"
Case $Taste = "T"
Return "54"
Case $Taste = "U"
Return "55"
Case $Taste = "V"
Return "56"
Case $Taste = "W"
Return "57"
Case $Taste = "X"
Return "58"
Case $Taste = "Y"
Return "59"
Case $Taste = "Z"
Return "5A"
Case $Taste = "Z"
Return "5A"
Case $Taste = "NUM 0"
Return "60"
Case $Taste = "NUM 1"
Return "61"
Case $Taste = "NUM 2"
Return "62"
Case $Taste = "NUM 3"
Return "63"
Case $Taste = "NUM 4"
Return "64"
Case $Taste = "NUM 5"
Return "65"
Case $Taste = "NUM 6"
Return "66"
Case $Taste = "NUM 7"
Return "67"
Case $Taste = "NUM 8"
Return "68"
Case $Taste = "NUM 9"
Return "69"
EndSelect
EndFunc ;---->Taste
Func Shutdown_GDI()
_GDIPlus_GraphicsDispose($Graphics)
_GDIPlus_GraphicsDispose($Backbuffer)
_GDIPlus_BitmapDispose($Bitmap)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>Shutdown_GD
Alles anzeigen
Version 1.4
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Misc.au3>
#Include <GDIPlus.au3>
$dll = DllOpen("user32.dll")
_GDIPlus_Startup()
Global $MainGui = ""
Global $Next = "True"
Global $GuiBreite = 900, $GuiHoehe = 550 ;GuiGröße
Global $BallBreite = 10, $BallHoehe = 10 ;Größe des Balles
Global $Schlaeger1Breite = 10, $Schlaeger1Hoehe = 150 ;Größe des Balles
Global $Schlaeger2Breite = 10, $Schlaeger2Hoehe = 150 ;Größe des Balles
Global $Boni_Hoehe = 50, $Boni_Breite = 50
Global $WPos = ($GuiBreite / 2) - ($BallBreite / 2), $HPos = ($GuiHoehe / 2) - ($BallHoehe / 2) ;Starposition für Ball
Global $WSchlaeger1pos = 10, $HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
Global $WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite, $HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
Global $back = "True", $Down = "True" ;Für das automatische zurückhüpfen des balles
Global $GeschRealBreite = 6, $GeschRealHoehe = 3
Global $GeschBreite = $GeschRealBreite, $GeschHoehe = $GeschRealHoehe;Wie weit/Schnell der Ball sich bewegt
Global $Team1 = 0, $Team2 = 0 ;Punkte der Teams
Global $LabelPunkte = $GuiHoehe - 20
Global $AbstandObjGui = 30, $GeschErhoehen = 0
Global $Schlaer1Gesch = 4, $Schlaer2Gesch = 4
Global $CPU_Spieler = "True"
Global $GuiCheck = "True"
Global $Gamestart = "True"
Global $TasteSchlaegerHoch1 = "", $TasteSchlaegerRunter1 = ""
Global $TasteSchlaegerHoch2 = "", $TasteSchlaegerRunter2 = ""
Global $FontSize = "20"
Global $GeschLabel = ""
Global $SpeedBoni = "False"
Global $SlowBoni = "False"
Global $NoBoni = "True"
Global $Boni = 1
Global $SpeedPic = _GDIPlus_ImageLoadFromFile("Speed.gif")
Global $SlowPic = _GDIPlus_ImageLoadFromFile("Slow.gif")
Dim $g = 5
do
if $Gamestart = "False" Then
GUIDelete($MainGui)
$Gamestart = "True"
MsgBox(1,"Zahlenfehler","Bitte überprüfen sie Ihre Eingaben")
EndIf
$MainGui = GUICreate("Benutzereinstellungen",400,300)
$Button_Ok = GUICtrlCreateButton("OK",20,250,50,30)
$Button_Cancel = GUICtrlCreateButton("Cancel",90,250,50,30)
$Tab = GUICtrlCreateTab(10,10,380,280)
$Reiter1 = GUICtrlCreateTabItem("Spielmodi")
GUICtrlCreateLabel("Spielmodi wählen:",20,40,200,25)
GUICtrlCreateLabel("Spieler vs Spieler", 20,70,130,20)
$radio1 = GUICtrlCreateRadio("", 150, 70, 20, 20)
GUICtrlCreateLabel("Spieler vs Computer", 20,95,130,20)
$radio2 = GUICtrlCreateRadio("", 150, 95, 20, 20)
GUICtrlCreateLabel("Training vs Computer", 20,120,130,20)
$radio3 = GUICtrlCreateRadio("", 150, 120, 20, 20)
GUICtrlSetState($radio1, $GUI_CHECKED)
$Reiter2 = GUICtrlCreateTabItem("Größen")
GUICtrlCreateLabel("Ballgröße (2-100):",20,40,110,20)
$Input1 = GUICtrlCreateInput("10",130,40,40,20)
GUICtrlCreateLabel("Schläger1höhe:", 20,70,100,20)
$Input2 = GUICtrlCreateInput("150",130,70,40,20)
GUICtrlCreateLabel("Schläger2höhe:",20,95,100,20)
$Input3 = GUICtrlCreateInput("150",130,95,40,20)
GUICtrlCreateLabel("Spielfeld:",20,130,120,20)
GUICtrlCreateLabel("Breite:", 20,150,120,20)
$Input4 = GUICtrlCreateInput("900",130,150,40,20)
GUICtrlCreateLabel("Höhe:",20,175,120,20)
$Input5 = GUICtrlCreateInput("550",130,175,40,20)
$Reiter3 = GUICtrlCreateTabItem("Geschwindigkeiten")
GUICtrlCreateLabel("Ballgeschwindigkeit (1-30):",20,40,160,20)
$Input6 = GUICtrlCreateInput("6",190,40,40,20)
GUICtrlCreateLabel("Schläger1:", 20,70,130,20)
$Input7 = GUICtrlCreateInput("4",190,70,40,20)
GUICtrlCreateLabel("Schläger2:",20,95,130,20)
$Input8 = GUICtrlCreateInput("4",190,95,40,20)
$Reiter4 = GUICtrlCreateTabItem("Tastenbelegung")
GUICtrlCreateLabel("Spieler 1:",20,40,130,20)
GUICtrlCreateLabel("Schlaeger hoch:",20,70,130,20)
$Input9 = GUICtrlCreateCombo("",150,70,120,20)
GUICtrlSetData ($Input9,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","W" )
GUICtrlCreateLabel("Schlaeger runter:",20,100,130,20)
$Input10 = GUICtrlCreateCombo("",150,100,120,20)
GUICtrlSetData ($Input10,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","S" )
GUICtrlCreateLabel("Spieler 2:",20,150,130,20)
GUICtrlCreateLabel("Schlaeger hoch:",20,180,130,20)
$Input11 = GUICtrlCreateCombo("",150,180,120,20)
GUICtrlSetData ($Input11,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","UP" )
GUICtrlCreateLabel("Schlaeger runter:",20,210,130,20)
$Input12 = GUICtrlCreateCombo("",150,210,120,20)
GUICtrlSetData ($Input12,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","DOWN" )
GUICtrlCreateTabItem("")
GUISetState(@SW_Show)
While 1
$msg = GUIGetMsg(1)
Select
case $msg[0] = $Button_Ok
$BallBreite = GUICtrlRead($Input1)
$BallHoehe = GUICtrlRead($Input1)
if $BallHoehe > 100 then
$Gamestart = "False"
EndIf
if $BallHoehe < 2 then
$Gamestart = "False"
EndIf
$GeschRealBreite = GUICtrlRead($Input6)
$GeschRealBreite = GUICtrlRead($Input6)
if $GeschRealBreite > 30 then
$Gamestart = "False"
EndIf
if $GeschRealBreite < 1 then
$Gamestart = "False"
EndIf
$Schlaeger1Hoehe = GUICtrlRead($Input2)
$Schlaeger2Hoehe = GUICtrlRead($Input3)
$GuiBreite = GUICtrlRead($Input4)
$GuiHoehe = GUICtrlRead($Input5)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$GeschRealBreite = GUICtrlRead($Input6)
$GeschBreite = $GeschRealBreite
$Schlaer1Gesch = GUICtrlRead($Input7)
$Schlaer2Gesch = GUICtrlRead($Input8)
$Spielmodi1 = GUICtrlRead($radio1)
$Spielmodi2 = GUICtrlRead($radio2)
$Spielmodi3 = GUICtrlRead($radio3)
$TasteSchlaegerHoch1 = GUICtrlRead($input9)
$TasteSchlaegerRunter1 = GUICtrlRead($input10)
$TasteSchlaegerHoch2 = GUICtrlRead($input11)
$TasteSchlaegerRunter2 = GUICtrlRead($input12)
$TasteSchlaegerHoch1 = Taste($TasteSchlaegerHoch1)
$TasteSchlaegerRunter1 = Taste($TasteSchlaegerRunter1)
$TasteSchlaegerHoch2 = Taste($TasteSchlaegerHoch2)
$TasteSchlaegerRunter2 = Taste($TasteSchlaegerRunter2)
if $Spielmodi1 = 1 then
$CPU_Spieler = "False"
EndIf
if $Spielmodi2 = 1 then
$CPU_Spieler = "True"
EndIf
if $Spielmodi3 = 1 then
$CPU_Spieler = "Training"
EndIf
ExitLoop 1
case $msg[0] = $Button_Cancel
Exit
Case $msg[0] = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
until $Gamestart = "True"
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Shutdown_GDI") ;Führt die funktion aus, sobald das Prog beendet wird
$MainGUI = GUICreate("Game", $GuiBreite, $GuiHoehe) ;hauptfenster wird erzeugt
GUISetOnEvent(-3, "Shutdown_GDI")
GUISetState()
$Graphics = _GDIPlus_GraphicsCreateFromHWND($MainGUI) ;Grafische Oberfläche wird erzeugt
$Bitmap = _GDIPlus_BitmapCreateFromGraphics($GuiBreite, $GuiHoehe - $AbstandObjGui, $Graphics)
$Backbuffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
$ObjColor = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
GUICtrlDelete($GeschLabel)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
sleep(1000)
While Sleep(5)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
if $SpeedBoni = "True" Then
_GDIPlus_GraphicsDrawImageRect($Backbuffer, $SpeedPic, ($GuiBreite / 2) - ($Boni_Breite / 2), ($GuiHoehe / 2) - ($Boni_Hoehe / 2),$Boni_Hoehe,$Boni_Breite)
EndIf
if $SlowBoni = "True" Then
_GDIPlus_GraphicsDrawImageRect($Backbuffer, $SlowPic, ($GuiBreite / 2) - ($Boni_Breite / 2), ($GuiHoehe / 2) - ($Boni_Hoehe / 2),$Boni_Hoehe,$Boni_Breite)
EndIf
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
BallMoveW()
BallMoveH()
If _IsPressed($TasteSchlaegerRunter1, $dll) Then
$HSchlaeger1Pos = $HSchlaeger1Pos + $Schlaer1Gesch
EndIf
If _IsPressed($TasteSchlaegerHoch1, $dll) Then
$HSchlaeger1Pos = $HSchlaeger1Pos - $Schlaer1Gesch
EndIf
If _IsPressed("18", $dll) Then
Exit
EndIf
Select
case $CPU_Spieler = "False"
If _IsPressed($TasteSchlaegerRunter2, $dll) Then
$HSchlaeger2Pos = $HSchlaeger2Pos + $Schlaer2Gesch
EndIf
If _IsPressed($TasteSchlaegerHoch2, $dll) Then
$HSchlaeger2Pos = $HSchlaeger2Pos - $Schlaer2Gesch
EndIf
case $CPU_Spieler = "True"
CPU_Spieler()
case $CPU_Spieler = "Training"
$HSchlaeger2pos = $HPos - $Schlaeger2Hoehe / 2
$HSchlaeger1pos = $HPos - $Schlaeger1Hoehe / 2
EndSelect
PosTestBreite()
PosTestHoehe()
PosSchlHoehe()
if $g = 5 then
GUIctrlDelete ($GeschLabel)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
$g = -1
EndIf
$g = $g + 1
Boni()
if $GeschBreite > 30 Then
$GeschBreite = 30
EndIf
WEnd
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;Funktionen--------------------------------------------------------------------------------------
Func BallMoveH()
If $HPos >= ($GuiHoehe - $AbstandObjGui) - $BallHoehe Then
$Down = "False"
EndIf
If $HPos <= 0 Then
$Down = "True"
EndIf
If $Down = "False" Then
$HPos = $HPos - $GeschHoehe
EndIf
If $Down = "True" Then
$HPos = $HPos + $GeschHoehe
EndIf
EndFunc ;==>BallMoveH
Func BallMoveW()
If $WPos >= $GuiBreite - $BallBreite Then
$WPos = ($GuiBreite / 2) - ($BallBreite / 2)
$HPos = (($GuiHoehe - $AbstandObjGui) / 2) - ($BallHoehe / 2)
$GeschBreite = $GeschRealBreite
$GeschHoehe = $GeschRealHoehe
GUICtrlDelete($Label1)
$Team1 = $Team1 + 1
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
if $Team1 = 5 Then
MsgBox(0,"Gewonnen","Team1 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
if $Team2 = 5 Then
MsgBox(0,"Gewonnen","Team2 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
$WSchlaeger1pos = 10
$HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
sleep(1000)
EndIf
If $WPos <= 0 + ($Schlaeger1Breite - 1) Then
$WPos = ($GuiBreite / 2) - ($BallBreite / 2)
$HPos = (($GuiHoehe - $AbstandObjGui) / 2) - ($BallHoehe / 2)
$GeschBreite = $GeschRealBreite
$GeschHoehe = $GeschRealHoehe
GUICtrlDelete($Label2)
$Team2 = $Team2 + 1
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
if $Team1 = 5 Then
MsgBox(0,"Gewonnen","Team1 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
if $Team2 = 5 Then
MsgBox(0,"Gewonnen","Team2 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
$WSchlaeger1pos = 10
$HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
Sleep(1000)
EndIf
;Schläger 1
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 5
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 2 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 4
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 2 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 3 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 3
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 3 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 4 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 4
$back = "False"
EndIf
EndIf
EndIf
;~
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 4 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 5 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 5
$back = "False"
EndIf
EndIf
EndIf
;Schläger 2
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 5
if $GeschErhoehen = 3 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 2 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 4
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 2 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 3 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 3
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 3 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 4 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 4
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 4 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 5 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 5
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $back = "True" Then
$WPos = $WPos - $GeschBreite
EndIf
If $back = "False" Then
$WPos = $WPos + $GeschBreite
EndIf
EndFunc ;==>BallMoveW
Func CPU_Spieler()
if $HPos > $HSchlaeger2Pos + ($Schlaeger2Hoehe/ 2) Then
$HSchlaeger2Pos = $HSchlaeger2Pos + $Schlaer2Gesch
Else
$HSchlaeger2Pos = $HSchlaeger2Pos - $Schlaer2Gesch
EndIf
EndFunc ;==>CPU_Spieler
Func PosTestBreite()
If $WPos > $GuiBreite - $BallBreite Then
$WPos = $GuiBreite - $BallBreite
EndIf
If $WPos < 0 Then
$WPos = 0
EndIf
If $WPos <= $WSchlaeger1Pos Then
if $HPos >= $HSchlaeger1Pos then
if $HPos <= $HSchlaeger1Pos + $Schlaeger1Hoehe then
$WPos = $WSchlaeger1Pos + $Schlaeger1Breite
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2Pos + $Schlaeger2Breite Then
if $HPos >= $HSchlaeger2Pos then
if $HPos <= $HSchlaeger2Pos + $Schlaeger2Hoehe then
$WPos = $WSchlaeger2Pos - $Ballbreite
EndIf
EndIf
EndIf
EndFunc ;==>PosTestBreite
Func PosTestHoehe()
If $HPos > $GuiHoehe - $BallHoehe Then
$HPos = $GuiHoehe - $BallHoehe
EndIf
If $HPos < 0 Then
$HPos = 0
EndIf
EndFunc ;==>PosTestHoehe
Func PosSchlHoehe()
If $HSchlaeger1Pos < 0 Then
$HSchlaeger1Pos = 0
EndIf
If $HSchlaeger1Pos() > $GuiHoehe - $AbstandObjGui - $Schlaeger1Hoehe Then
$HSchlaeger1Pos = $GuiHoehe - $AbstandObjGui - $Schlaeger1Hoehe
EndIf
If $HSchlaeger2Pos < 0 Then
$HSchlaeger2Pos = 0
EndIf
If $HSchlaeger2Pos() > $GuiHoehe - $AbstandObjGui - $Schlaeger2Hoehe Then
$HSchlaeger2Pos = $GuiHoehe - $AbstandObjGui - $Schlaeger2Hoehe
EndIf
if $HPos >= ($GuiHoehe / 2) - $Boni_Hoehe - $BallHoehe Then
if $HPos <= ($GuiHoehe / 2) + $Boni_Hoehe Then
if $WPos >= ($GuiBreite / 2) - $Boni_Breite - $BallBreite Then
if $WPos <= ($GuiBreite / 2) + $Boni_Breite Then
if $SpeedBoni = "True" Then
$GeschBreite = $GeschBreite + 10
$GeschHoehe = $GeschHoehe + 5
$NoBoni = "True"
$SpeedBoni = "False"
EndIf
if $SlowBoni = "True" Then
$GeschBreite = $GeschBreite - 10
$GeschHoehe = $GeschHoehe - 5
$NoBoni = "True"
$SlowBoni = "False"
if $GeschBreite <= 5 Then
$GeschBreite = 5
EndIf
if $GeschHoehe <= 1 Then
$GeschHoehe = 1
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndFunc ;==>PosTestHoehe
Func Taste($Taste)
Select
Case $Taste = "UP"
Return "26"
Case $Taste = "DOWN"
Return "28"
Case $Taste = "LEFT"
Return "25"
Case $Taste = "RIGHT"
Return "27"
Case $Taste = "LEFT SHIFT"
Return "A0"
Case $Taste = "LEFT STRG"
Return "A2"
Case $Taste = "A"
Return "41"
Case $Taste = "B"
Return "42"
Case $Taste = "C"
Return "43"
Case $Taste = "D"
Return "44"
Case $Taste = "E"
Return "45"
Case $Taste = "F"
Return "46"
Case $Taste = "G"
Return "47"
Case $Taste = "H"
Return "48"
Case $Taste = "I"
Return "49"
Case $Taste = "J"
Return "4A"
Case $Taste = "K"
Return "4B"
Case $Taste = "L"
Return "4C"
Case $Taste = "M"
Return "4D"
Case $Taste = "N"
Return "4E"
Case $Taste = "O"
Return "4F"
Case $Taste = "P"
Return "50"
Case $Taste = "Q"
Return "51"
Case $Taste = "R"
Return "52"
Case $Taste = "S"
Return "53"
Case $Taste = "T"
Return "54"
Case $Taste = "U"
Return "55"
Case $Taste = "V"
Return "56"
Case $Taste = "W"
Return "57"
Case $Taste = "X"
Return "58"
Case $Taste = "Y"
Return "59"
Case $Taste = "Z"
Return "5A"
Case $Taste = "Z"
Return "5A"
Case $Taste = "NUM 0"
Return "60"
Case $Taste = "NUM 1"
Return "61"
Case $Taste = "NUM 2"
Return "62"
Case $Taste = "NUM 3"
Return "63"
Case $Taste = "NUM 4"
Return "64"
Case $Taste = "NUM 5"
Return "65"
Case $Taste = "NUM 6"
Return "66"
Case $Taste = "NUM 7"
Return "67"
Case $Taste = "NUM 8"
Return "68"
Case $Taste = "NUM 9"
Return "69"
EndSelect
EndFunc ;---->Taste
Func Boni()
$Boni = Random(1,2,1)
if Random(1,300,1) = 50 Then
$NoBoni = "False"
EndIf
If $NoBoni = "True" Then
Else
Select
Case $Boni = 1
$SpeedBoni = "True"
$NoBoni = "True"
Case $Boni = 2
$SlowBoni = "True"
$NoBoni = "True"
EndSelect
EndIf
EndFunc ;------>Boni
Func Shutdown_GDI()
_GDIPlus_GraphicsDispose($Graphics)
_GDIPlus_GraphicsDispose($Backbuffer)
_GDIPlus_BitmapDispose($Bitmap)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>Shutdown_GDI
Alles anzeigen
RAR muss heruntergeladen und entpackt werden (Siehe Angehngte Datei Version 1.4)
Version 1.4.1
Spoiler anzeigen
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include <StaticConstants.au3>
#include <Misc.au3>
#Include <GDIPlus.au3>
$dll = DllOpen("user32.dll")
_GDIPlus_Startup()
Global $MainGui = ""
Global $Next = "True"
Global $GuiBreite = 900, $GuiHoehe = 550 ;GuiGröße
Global $BallBreite = 10, $BallHoehe = 10 ;Größe des Balles
Global $Schlaeger1Breite = 10, $Schlaeger1Hoehe = 150 ;Größe des Balles
Global $Schlaeger2Breite = 10, $Schlaeger2Hoehe = 150 ;Größe des Balles
Global $Boni_Hoehe = 50, $Boni_Breite = 50
Global $WPos = ($GuiBreite / 2) - ($BallBreite / 2), $HPos = ($GuiHoehe / 2) - ($BallHoehe / 2) ;Starposition für Ball
Global $WSchlaeger1pos = 10, $HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
Global $WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite, $HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
Global $back = "True", $Down = "True" ;Für das automatische zurückhüpfen des balles
Global $GeschRealBreite = 6, $GeschRealHoehe = 3
Global $GeschBreite = $GeschRealBreite, $GeschHoehe = $GeschRealHoehe;Wie weit/Schnell der Ball sich bewegt
Global $Team1 = 0, $Team2 = 0 ;Punkte der Teams
Global $LabelPunkte = $GuiHoehe - 20
Global $AbstandObjGui = 30, $GeschErhoehen = 0
Global $Schlaer1Gesch = 4, $Schlaer2Gesch = 4
Global $CPU_Spieler = "True"
Global $GuiCheck = "True"
Global $Gamestart = "True"
Global $TasteSchlaegerHoch1 = "", $TasteSchlaegerRunter1 = ""
Global $TasteSchlaegerHoch2 = "", $TasteSchlaegerRunter2 = ""
Global $FontSize = "20"
Global $GeschLabel = ""
Global $SpeedBoni = "False"
Global $SlowBoni = "False"
Global $NoBoni = "True"
Global $Boni = 1
Global $SpeedPic = _GDIPlus_ImageLoadFromFile("Speed.gif")
Global $SlowPic = _GDIPlus_ImageLoadFromFile("Slow.gif")
Dim $g = 5
do
if $Gamestart = "False" Then
GUIDelete($MainGui)
$Gamestart = "True"
MsgBox(1,"Zahlenfehler","Bitte überprüfen sie Ihre Eingaben")
EndIf
$MainGui = GUICreate("Benutzereinstellungen",400,300)
$Button_Ok = GUICtrlCreateButton("OK",20,250,50,30)
$Button_Cancel = GUICtrlCreateButton("Cancel",90,250,50,30)
$Tab = GUICtrlCreateTab(10,10,380,280)
$Reiter1 = GUICtrlCreateTabItem("Spielmodi")
GUICtrlCreateLabel("Spielmodi wählen:",20,40,200,25)
GUICtrlCreateLabel("Spieler vs Spieler", 20,70,130,20)
$radio1 = GUICtrlCreateRadio("", 150, 70, 20, 20)
GUICtrlCreateLabel("Spieler vs Computer", 20,95,130,20)
$radio2 = GUICtrlCreateRadio("", 150, 95, 20, 20)
GUICtrlCreateLabel("Training vs Computer", 20,120,130,20)
$radio3 = GUICtrlCreateRadio("", 150, 120, 20, 20)
GUICtrlSetState($radio1, $GUI_CHECKED)
$Reiter2 = GUICtrlCreateTabItem("Größen")
GUICtrlCreateLabel("Ballgröße (2-100):",20,40,110,20)
$Input1 = GUICtrlCreateInput("10",130,40,40,20)
GUICtrlCreateLabel("Schläger1höhe:", 20,70,100,20)
$Input2 = GUICtrlCreateInput("150",130,70,40,20)
GUICtrlCreateLabel("Schläger2höhe:",20,95,100,20)
$Input3 = GUICtrlCreateInput("150",130,95,40,20)
GUICtrlCreateLabel("Spielfeld:",20,130,120,20)
GUICtrlCreateLabel("Breite:", 20,150,120,20)
$Input4 = GUICtrlCreateInput("900",130,150,40,20)
GUICtrlCreateLabel("Höhe:",20,175,120,20)
$Input5 = GUICtrlCreateInput("550",130,175,40,20)
$Reiter3 = GUICtrlCreateTabItem("Geschwindigkeiten")
GUICtrlCreateLabel("Ballgeschwindigkeit (1-30):",20,40,160,20)
$Input6 = GUICtrlCreateInput("6",190,40,40,20)
GUICtrlCreateLabel("Schläger1:", 20,70,130,20)
$Input7 = GUICtrlCreateInput("4",190,70,40,20)
GUICtrlCreateLabel("Schläger2:",20,95,130,20)
$Input8 = GUICtrlCreateInput("4",190,95,40,20)
$Reiter4 = GUICtrlCreateTabItem("Tastenbelegung")
GUICtrlCreateLabel("Spieler 1:",20,40,130,20)
GUICtrlCreateLabel("Schlaeger hoch:",20,70,130,20)
$Input9 = GUICtrlCreateCombo("",150,70,120,20)
GUICtrlSetData ($Input9,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","W" )
GUICtrlCreateLabel("Schlaeger runter:",20,100,130,20)
$Input10 = GUICtrlCreateCombo("",150,100,120,20)
GUICtrlSetData ($Input10,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","S" )
GUICtrlCreateLabel("Spieler 2:",20,150,130,20)
GUICtrlCreateLabel("Schlaeger hoch:",20,180,130,20)
$Input11 = GUICtrlCreateCombo("",150,180,120,20)
GUICtrlSetData ($Input11,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","UP" )
GUICtrlCreateLabel("Schlaeger runter:",20,210,130,20)
$Input12 = GUICtrlCreateCombo("",150,210,120,20)
GUICtrlSetData ($Input12,"UP|DOWN|LEFT|RIGHT|LEFT SHIFT|LEFT STRG|A|B|C|D|E|F|G|H|I|J|K|L|M|N|O|P|Q|R|S|T|U|V|W|X|Y|Z|NUM 0|NUM 1|NUM 2|NUM 3|NUM 4|NUM 5|NUM 6|NUM 7|NUM 8|NUM 9","DOWN" )
GUICtrlCreateTabItem("")
GUISetState(@SW_Show)
While 1
$msg = GUIGetMsg(1)
Select
case $msg[0] = $Button_Ok
$BallBreite = GUICtrlRead($Input1)
$BallHoehe = GUICtrlRead($Input1)
if $BallHoehe > 100 then
$Gamestart = "False"
EndIf
if $BallHoehe < 2 then
$Gamestart = "False"
EndIf
$GeschRealBreite = GUICtrlRead($Input6)
$GeschRealBreite = GUICtrlRead($Input6)
if $GeschRealBreite > 30 then
$Gamestart = "False"
EndIf
if $GeschRealBreite < 1 then
$Gamestart = "False"
EndIf
$Schlaeger1Hoehe = GUICtrlRead($Input2)
$Schlaeger2Hoehe = GUICtrlRead($Input3)
$GuiBreite = GUICtrlRead($Input4)
$GuiHoehe = GUICtrlRead($Input5)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$GeschRealBreite = GUICtrlRead($Input6)
$GeschBreite = $GeschRealBreite
$Schlaer1Gesch = GUICtrlRead($Input7)
$Schlaer2Gesch = GUICtrlRead($Input8)
$Spielmodi1 = GUICtrlRead($radio1)
$Spielmodi2 = GUICtrlRead($radio2)
$Spielmodi3 = GUICtrlRead($radio3)
$TasteSchlaegerHoch1 = GUICtrlRead($input9)
$TasteSchlaegerRunter1 = GUICtrlRead($input10)
$TasteSchlaegerHoch2 = GUICtrlRead($input11)
$TasteSchlaegerRunter2 = GUICtrlRead($input12)
$TasteSchlaegerHoch1 = Taste($TasteSchlaegerHoch1)
$TasteSchlaegerRunter1 = Taste($TasteSchlaegerRunter1)
$TasteSchlaegerHoch2 = Taste($TasteSchlaegerHoch2)
$TasteSchlaegerRunter2 = Taste($TasteSchlaegerRunter2)
if $Spielmodi1 = 1 then
$CPU_Spieler = "False"
EndIf
if $Spielmodi2 = 1 then
$CPU_Spieler = "True"
EndIf
if $Spielmodi3 = 1 then
$CPU_Spieler = "Training"
EndIf
ExitLoop 1
case $msg[0] = $Button_Cancel
Exit
Case $msg[0] = $GUI_EVENT_CLOSE
Exit
EndSelect
WEnd
until $Gamestart = "True"
Opt("GUIOnEventMode", 1)
OnAutoItExitRegister("Shutdown_GDI") ;Führt die funktion aus, sobald das Prog beendet wird
$MainGUI = GUICreate("Pong Version 1.4.1", $GuiBreite, $GuiHoehe) ;hauptfenster wird erzeugt
GUISetOnEvent(-3, "Shutdown_GDI")
GUISetState()
$Graphics = _GDIPlus_GraphicsCreateFromHWND($MainGUI) ;Grafische Oberfläche wird erzeugt
$Bitmap = _GDIPlus_BitmapCreateFromGraphics($GuiBreite, $GuiHoehe - $AbstandObjGui, $Graphics)
$Backbuffer = _GDIPlus_ImageGetGraphicsContext($Bitmap)
$hBrush = _GDIPlus_BrushCreateSolid(0xFF000000)
$ObjColor = _GDIPlus_BrushCreateSolid(0xFFFFFFFF)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
GUICtrlDelete($GeschLabel)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
sleep(1000)
While Sleep(5)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
if $SpeedBoni = "True" Then
_GDIPlus_GraphicsDrawImageRect($Backbuffer, $SpeedPic, ($GuiBreite / 2) - ($Boni_Breite / 2), ($GuiHoehe / 2) - ($Boni_Hoehe / 2),$Boni_Hoehe,$Boni_Breite)
EndIf
if $SlowBoni = "True" Then
_GDIPlus_GraphicsDrawImageRect($Backbuffer, $SlowPic, ($GuiBreite / 2) - ($Boni_Breite / 2), ($GuiHoehe / 2) - ($Boni_Hoehe / 2),$Boni_Hoehe,$Boni_Breite)
EndIf
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
BallMoveW()
BallMoveH()
If _IsPressed($TasteSchlaegerRunter1, $dll) Then
$HSchlaeger1Pos = $HSchlaeger1Pos + $Schlaer1Gesch
EndIf
If _IsPressed($TasteSchlaegerHoch1, $dll) Then
$HSchlaeger1Pos = $HSchlaeger1Pos - $Schlaer1Gesch
EndIf
If _IsPressed("18", $dll) Then
Exit
EndIf
Select
case $CPU_Spieler = "False"
If _IsPressed($TasteSchlaegerRunter2, $dll) Then
$HSchlaeger2Pos = $HSchlaeger2Pos + $Schlaer2Gesch
EndIf
If _IsPressed($TasteSchlaegerHoch2, $dll) Then
$HSchlaeger2Pos = $HSchlaeger2Pos - $Schlaer2Gesch
EndIf
case $CPU_Spieler = "True"
CPU_Spieler()
case $CPU_Spieler = "Training"
$HSchlaeger2pos = $HPos - $Schlaeger2Hoehe / 2
EndSelect
PosTestBreite()
PosTestHoehe()
PosSchlHoehe()
if $g = 5 then
GUIctrlDelete ($GeschLabel)
$GeschLabel = GUICtrlCreateLabel("Geschwindigkeit = " & $GeschBreite,$GuiBreite / 2,$LabelPunkte)
$g = -1
EndIf
$g = $g + 1
Boni()
if $GeschBreite > 30 Then
$GeschBreite = 30
EndIf
WEnd
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;-----------------------------------------
;Funktionen--------------------------------------------------------------------------------------
Func BallMoveH()
If $HPos >= ($GuiHoehe - $AbstandObjGui) - $BallHoehe Then
$Down = "False"
EndIf
If $HPos <= 0 Then
$Down = "True"
EndIf
If $Down = "False" Then
$HPos = $HPos - $GeschHoehe
EndIf
If $Down = "True" Then
$HPos = $HPos + $GeschHoehe
EndIf
EndFunc ;==>BallMoveH
Func BallMoveW()
If $WPos >= $GuiBreite - $BallBreite Then
$WPos = ($GuiBreite / 2) - ($BallBreite / 2)
$HPos = (($GuiHoehe - $AbstandObjGui) / 2) - ($BallHoehe / 2)
$GeschBreite = $GeschRealBreite
$GeschHoehe = $GeschRealHoehe
GUICtrlDelete($Label1)
$Team1 = $Team1 + 1
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
if $Team1 = 5 Then
MsgBox(0,"Gewonnen","Team1 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
if $Team2 = 5 Then
MsgBox(0,"Gewonnen","Team2 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
$WSchlaeger1pos = 10
$HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
sleep(1000)
EndIf
If $WPos <= 0 + ($Schlaeger1Breite - 1) Then
$WPos = ($GuiBreite / 2) - ($BallBreite / 2)
$HPos = (($GuiHoehe - $AbstandObjGui) / 2) - ($BallHoehe / 2)
$GeschBreite = $GeschRealBreite
$GeschHoehe = $GeschRealHoehe
GUICtrlDelete($Label2)
$Team2 = $Team2 + 1
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
if $Team1 = 5 Then
MsgBox(0,"Gewonnen","Team1 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
if $Team2 = 5 Then
MsgBox(0,"Gewonnen","Team2 hat gewonnen")
$Team1 = 0
$Team2 = 0
GUICtrlDelete($Label2)
GUICtrlDelete($Label1)
$Label2 = GUICtrlCreateLabel("Team2: " & $Team2,($GuiBreite - 90), $LabelPunkte)
$Label1 = GUICtrlCreateLabel("Team1: " & $Team1,(0 + 10), $LabelPunkte)
EndIf
$WSchlaeger1pos = 10
$HSchlaeger1pos = ($GuiHoehe / 2) - ($Schlaeger1Hoehe / 2)
$WSchlaeger2pos = ($GuiBreite - 10) - $Schlaeger2Breite
$HSchlaeger2pos = ($GuiHoehe / 2) - ($Schlaeger2Hoehe / 2)
$3 = GUICtrlCreateLabel("3",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($3,0x000000)
GUICtrlSetColor ($3,0xFFFFFF)
GUICtrlSetFont ($3,$Fontsize)
sleep(1000)
GUICtrlDelete($3)
$2 = GUICtrlCreateLabel("2",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($2,0x000000)
GUICtrlSetColor ($2,0xFFFFFF)
GUICtrlSetFont ($2,$Fontsize)
sleep(1000)
GUICtrlDelete($2)
$1 = GUICtrlCreateLabel("1",$GuiBreite / 2, $GuiHoehe / 2,50,50)
GUICtrlSetBkColor($1,0x000000)
GUICtrlSetColor ($1,0xFFFFFF)
GUICtrlSetFont ($1,$Fontsize)
sleep(1000)
GUICtrlDelete($1)
_GDIPlus_GraphicsFillRect($Backbuffer, 0, 0, $GuiBreite, $GuiHoehe - $AbstandObjGui, $hBrush)
_GDIPlus_GraphicsFillEllipse($Backbuffer, $WPos, $HPos, $BallBreite, $BallHoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger2Pos, $HSchlaeger2Pos, $Schlaeger2Breite, $Schlaeger2Hoehe,$ObjColor)
_GDIPlus_GraphicsFillRect($Backbuffer, $WSchlaeger1Pos, $HSchlaeger1Pos, $Schlaeger1Breite, $Schlaeger1Hoehe,$ObjColor)
_GDIPlus_GraphicsDrawImage($Graphics, $Bitmap, 0, 0)
Sleep(1000)
EndIf
;Schläger 1
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 5
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 2 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 4
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 2 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 3 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 3
$back = "False"
EndIf
EndIf
EndIf
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 3 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 4 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 4
$back = "False"
EndIf
EndIf
EndIf
;~
If $WPos <= 10 + $Schlaeger1Breite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger1Pos + 4 * ($Schlaeger1Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger1Pos + 5 * ($Schlaeger1Hoehe / 5) then
$GeschHoehe = 5
$back = "False"
EndIf
EndIf
EndIf
;Schläger 2
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 5
if $GeschErhoehen = 3 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 2 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 4
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 2 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 3 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 3
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 3 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 4 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 4
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2pos - $BallBreite Then
if $HPos + ($Ballhoehe / 2) >= $HSchlaeger2Pos + 4 * ($Schlaeger2Hoehe / 5) then
if $HPos + ($Ballhoehe / 2) <= $HSchlaeger2Pos + 5 * ($Schlaeger2Hoehe / 5) then
$GeschHoehe = 5
if $GeschErhoehen = 2 then
$GeschBreite = $GeschBreite + 2
$GeschErhoehen = 0
EndIf
$GeschErhoehen = $GeschErhoehen + 1
$back = "True"
EndIf
EndIf
EndIf
If $back = "True" Then
$WPos = $WPos - $GeschBreite
EndIf
If $back = "False" Then
$WPos = $WPos + $GeschBreite
EndIf
EndFunc ;==>BallMoveW
Func CPU_Spieler()
if $HPos > $HSchlaeger2Pos + ($Schlaeger2Hoehe/ 2) Then
$HSchlaeger2Pos = $HSchlaeger2Pos + $Schlaer2Gesch
Else
$HSchlaeger2Pos = $HSchlaeger2Pos - $Schlaer2Gesch
EndIf
EndFunc ;==>CPU_Spieler
Func PosTestBreite()
If $WPos > $GuiBreite - $BallBreite Then
$WPos = $GuiBreite - $BallBreite
EndIf
If $WPos < 0 Then
$WPos = 0
EndIf
If $WPos <= $WSchlaeger1Pos Then
if $HPos >= $HSchlaeger1Pos then
if $HPos <= $HSchlaeger1Pos + $Schlaeger1Hoehe then
$WPos = $WSchlaeger1Pos + $Schlaeger1Breite
EndIf
EndIf
EndIf
If $WPos >= $WSchlaeger2Pos + $Schlaeger2Breite Then
if $HPos >= $HSchlaeger2Pos then
if $HPos <= $HSchlaeger2Pos + $Schlaeger2Hoehe then
$WPos = $WSchlaeger2Pos - $Ballbreite
EndIf
EndIf
EndIf
EndFunc ;==>PosTestBreite
Func PosTestHoehe()
If $HPos > $GuiHoehe - $BallHoehe Then
$HPos = $GuiHoehe - $BallHoehe
EndIf
If $HPos < 0 Then
$HPos = 0
EndIf
EndFunc ;==>PosTestHoehe
Func PosSchlHoehe()
If $HSchlaeger1Pos < 0 Then
$HSchlaeger1Pos = 0
EndIf
If $HSchlaeger1Pos() > $GuiHoehe - $AbstandObjGui - $Schlaeger1Hoehe Then
$HSchlaeger1Pos = $GuiHoehe - $AbstandObjGui - $Schlaeger1Hoehe
EndIf
If $HSchlaeger2Pos < 0 Then
$HSchlaeger2Pos = 0
EndIf
If $HSchlaeger2Pos() > $GuiHoehe - $AbstandObjGui - $Schlaeger2Hoehe Then
$HSchlaeger2Pos = $GuiHoehe - $AbstandObjGui - $Schlaeger2Hoehe
EndIf
if $HPos >= ($GuiHoehe / 2) - $Boni_Hoehe - $BallHoehe Then
if $HPos <= ($GuiHoehe / 2) + $Boni_Hoehe Then
if $WPos >= ($GuiBreite / 2) - $Boni_Breite - $BallBreite Then
if $WPos <= ($GuiBreite / 2) + $Boni_Breite Then
if $SpeedBoni = "True" Then
$GeschBreite = $GeschBreite + 10
$GeschHoehe = $GeschHoehe + 5
$NoBoni = "True"
$SpeedBoni = "False"
EndIf
if $SlowBoni = "True" Then
$GeschBreite = $GeschBreite - 10
$GeschHoehe = $GeschHoehe - 5
$NoBoni = "True"
$SlowBoni = "False"
if $GeschBreite <= 5 Then
$GeschBreite = 5
EndIf
if $GeschHoehe <= 1 Then
$GeschHoehe = 1
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndFunc ;==>PosTestHoehe
Func Taste($Taste)
Select
Case $Taste = "UP"
Return "26"
Case $Taste = "DOWN"
Return "28"
Case $Taste = "LEFT"
Return "25"
Case $Taste = "RIGHT"
Return "27"
Case $Taste = "LEFT SHIFT"
Return "A0"
Case $Taste = "LEFT STRG"
Return "A2"
Case $Taste = "A"
Return "41"
Case $Taste = "B"
Return "42"
Case $Taste = "C"
Return "43"
Case $Taste = "D"
Return "44"
Case $Taste = "E"
Return "45"
Case $Taste = "F"
Return "46"
Case $Taste = "G"
Return "47"
Case $Taste = "H"
Return "48"
Case $Taste = "I"
Return "49"
Case $Taste = "J"
Return "4A"
Case $Taste = "K"
Return "4B"
Case $Taste = "L"
Return "4C"
Case $Taste = "M"
Return "4D"
Case $Taste = "N"
Return "4E"
Case $Taste = "O"
Return "4F"
Case $Taste = "P"
Return "50"
Case $Taste = "Q"
Return "51"
Case $Taste = "R"
Return "52"
Case $Taste = "S"
Return "53"
Case $Taste = "T"
Return "54"
Case $Taste = "U"
Return "55"
Case $Taste = "V"
Return "56"
Case $Taste = "W"
Return "57"
Case $Taste = "X"
Return "58"
Case $Taste = "Y"
Return "59"
Case $Taste = "Z"
Return "5A"
Case $Taste = "Z"
Return "5A"
Case $Taste = "NUM 0"
Return "60"
Case $Taste = "NUM 1"
Return "61"
Case $Taste = "NUM 2"
Return "62"
Case $Taste = "NUM 3"
Return "63"
Case $Taste = "NUM 4"
Return "64"
Case $Taste = "NUM 5"
Return "65"
Case $Taste = "NUM 6"
Return "66"
Case $Taste = "NUM 7"
Return "67"
Case $Taste = "NUM 8"
Return "68"
Case $Taste = "NUM 9"
Return "69"
EndSelect
EndFunc ;---->Taste
Func Boni()
if Random(1,300,1) = 50 Then
$NoBoni = "False"
EndIf
If $NoBoni = "True" Then
Else
if $SpeedBoni = "True" or $SlowBoni = "True" then
else
$Boni = Random(1,2,1)
Select
Case $Boni = 1
$SpeedBoni = "True"
$NoBoni = "True"
Case $Boni = 2
$SlowBoni = "True"
$NoBoni = "True"
EndSelect
EndIf
EndIf
EndFunc ;------>Boni
Func Shutdown_GDI()
_GDIPlus_GraphicsDispose($Graphics)
_GDIPlus_GraphicsDispose($Backbuffer)
_GDIPlus_BitmapDispose($Bitmap)
_GDIPlus_BrushDispose($hBrush)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>Shutdown_GDI
Alles anzeigen
RAR muss heruntergeladen und entpackt werden (Siehe Angehngte Datei Version 1.4.1)
Tipps, Verbesserungsvorschläge oder ähnliches wäre gut, also wer hier noch ein paar ideen hätte
ToDo:
Tastenbelegung frei wählbar- Mehr Einstellmöglichkeiten (z.B. frei Einstellbare Farben)
- Bonusobjekte im Spiel (z.B. Schläger wird kleiner oder größer...)
- Falls fehler festgestell werden, diese beheben