#include <Misc.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>

HotKeySet("!x","_PointReplace")

#Region Konstant
$GUI_W = 250
$GUI_H = 250
$X = 125
$Y = 125
$SPEED = 5
$BACKJUMP = 25
$SCORE = 0
$X_POINT = Random(10,$GUI_W - 10)
$Y_POINT = Random(10,$GUI_H - 10)
$LIMIT_COUNTER = 0
$X2 = 50
$Y2 = 50
$SCORE2 = 0
#Endregion Konstant

$SLEEPDELAY = 10
$KOLLISIONMINUS_ENABLE = 1
$MINUS = 1
$BONUS_PROBABILITY = 5
$LIMIT = 10

GUICreate("Spiel",$GUI_W,$GUI_H)
$FISCH = GUICtrlCreateLabel("<°(((><",125,125)
$SCORE_OUTPUT = GUICtrlCreateLabel("Score: " & $SCORE,0,0,100,20)
$FISCH2 = GUICtrlCreateLabel("<°(((><",50,50)
$SCORE_OUTPUT2 = GUICtrlCreateLabel("Score: " & $SCORE,0,20,100,20)

$POINT = GUICtrlCreateLabel("o",$X_POINT,$Y_POINT)
$BONUS = GUICtrlCreateLabel("BONUS" & @CR & "+100",75,50,200,200)
GUICtrlSetFont($BONUS,25,400,0,"Comic Sans MS")
GUICtrlSetState($BONUS,$GUI_HIDE)
GUISetState()
GUICtrlSetColor($FISCH,0xFFFFFF)
;GUICtrlSetColor($POINT,0xFFFF00)
GUISetBkColor(0x0000FF)
_BKColor(-1,$POINT, 0xFFFF00)
_BKColor(-1,$SCORE_OUTPUT)
_BKColor(-1,$SCORE_OUTPUT2)
_BKColor(-1,$BONUS)
_BKColor(-1,$FISCH, 0xFFFFFF)
_BKColor(-1,$FISCH2,0x00FFFF)

While 1
	$msg = GUIGetMsg()
	IF $msg = $GUI_EVENT_CLOSE Then Exit
	IF _IsPressed("25") Then _LeftArrow()
	IF _IsPressed("26") Then _UpArrow()
	IF _IsPressed("27") Then _RightArrow()
	IF _IsPressed("28") Then _DownArrow()
	IF _IsPressed("41") Then _LeftA()
	IF _IsPressed("57") Then _UpW()
	IF _IsPressed("44") Then _RightD()
	IF _IsPressed("53") Then _DownS()		
	_IsPoint()
	_Kollision()	
	_Limit()
WEnd

Func _LeftArrow()
	GUICtrlSetData($FISCH,"<°(((><")
	$COUNTER = 0
	Do
	$X = $X - 1
	$Y = $Y	
	GUICtrlSetPos($FISCH,$X,$Y)
	$COUNTER = $COUNTER + 1
	Until $COUNTER == $SPEED
	Sleep($SLEEPDELAY)
EndFunc	

Func _UpArrow()
	$COUNTER = 0
	Do
	$X = $X 
	$Y = $Y - 1		
	GUICtrlSetPos($FISCH,$X,$Y)
	$COUNTER = $COUNTER + 1
	Until $COUNTER == $SPEED
	Sleep($SLEEPDELAY)
EndFunc	

Func _RightArrow()
	GUICtrlSetData($FISCH,"><)))°>")	
	$COUNTER = 0
	Do
	$X = $X + 1
	$Y = $Y		
	GUICtrlSetPos($FISCH,$X,$Y)
	$COUNTER = $COUNTER + 1
	Until $COUNTER == $SPEED
	Sleep($SLEEPDELAY)
EndFunc	

Func _DownArrow()
	$COUNTER = 0
	Do
	$X = $X
	$Y = $Y + 1		
	GUICtrlSetPos($FISCH,$X,$Y)
	$COUNTER = $COUNTER + 1
	Until $COUNTER == $SPEED
	Sleep($SLEEPDELAY)
EndFunc	

Func _Kollision();---------------------------------Kollision
	If $X = 0 Then _KollisionLeft()
	If $Y = 0 Then _KollisionUp()
	If $X = $GUI_W - 25 Then _KollisionRight()
	If $Y = $GUI_H - 15 Then _KollisionDown()	
	If $X2 = 0 Then _KollisionLeft_2()
	If $Y2 = 0 Then _KollisionUp_2()
	If $X2 = $GUI_W - 25 Then _KollisionRight_2()
	If $Y2 = $GUI_H - 15 Then _KollisionDown_2()	
EndFunc		
		
		
Func _KollisionLeft()
	$X = $X + $BACKJUMP
	$Y = $Y
	GUICtrlSetPos($FISCH,$X,$Y)
	_KollisionMinus(1)
EndFunc	

Func _KollisionUp()
	$X = $X
	$Y = $Y + $BACKJUMP
	GUICtrlSetPos($FISCH,$X,$Y)
	_KollisionMinus(1)	
EndFunc	

Func _KollisionRight()
	$X = $X - $BACKJUMP
	$Y = $Y
	GUICtrlSetPos($FISCH,$X,$Y)
	_KollisionMinus(1)	
EndFunc	

Func _KollisionDown()
	$X = $X
	$Y = $Y - $BACKJUMP
	GUICtrlSetPos($FISCH,$X,$Y)
	_KollisionMinus(1)	
EndFunc	

Func _IsPoint()
	If $X >= $X_POINT - 30 And $X <= $X_POINT + 5 And $Y >= $Y_POINT - 10 And $Y <= $Y_POINT + 5 Then _Point()
	If $X2 >= $X_POINT - 30 And $X2 <= $X_POINT + 5 And $Y2 >= $Y_POINT - 10 And $Y2 <= $Y_POINT + 5 Then _Point_2()		
EndFunc

Func _Point()
	$SCORE = $SCORE + 10
	GUICtrlSetData($SCORE_OUTPUT,"Score: " & $SCORE)
	$X_POINT = Random(10,$GUI_W - 10)
	$Y_POINT = Random(10,$GUI_H - 10)
	GUICtrlSetPos($POINT,$X_POINT,$Y_POINT)
	If Random(0,$BONUS_PROBABILITY,1) = Random(0,$BONUS_PROBABILITY,1) Then
		GUICtrlSetState($BONUS,$GUI_SHOW)
		GUISetBkColor(0xFF0000)
		Sleep(1000)
		GUISetBkColor(0x0000FF)
		Sleep(1000)
		GUISetBkColor(0xFF0000)
		Sleep(1000)
		GUISetBkColor(0x0000FF)
		GUICtrlSetState($BONUS,$GUI_HIDE)
		$SCORE = $SCORE + 100
		GUICtrlSetData($SCORE_OUTPUT,"Score: " & $SCORE)
	EndIf	
	$LIMIT_COUNTER = $LIMIT_COUNTER + 1
EndFunc	



























;===========================================================================
; Function      : _BKColor( backgroundcolor, controlID, textcolor )
; Description   : Sets the background color of a control. (Transparent Label)
;               : Sets the text color of a control.
; Author        : Thunder-man (Frank Michalski)
; Date          : 19. September 2007
; Version       : V 1.20
; Example  :     _BKColor()                                :Transparent
;                _BKColor( -1, $MyLabel)                   :Transparent
;                _BKColor(0x00ff00)                        :Color Green
;                _BKColor(0x00ff00, $MyLabel)              :Color Green
;                _BKColor( -1, $MyLabel, 0x00ff00)    :Text Color Green
;===========================================================================
Func _BKColor($BackColor_ = "", $GuiID_ = -1, $Textcolor_ = 0x000000)
    If $BackColor_ = "" or $BackColor_ = -1 Then
    GUICtrlSetBkColor($GuiID_, $GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor($GuiID_, $Textcolor_)
Else
    GUICtrlSetBkColor($GuiID_, $BackColor_)
    GUICtrlSetColor($GuiID_, $Textcolor_)
EndIf
EndFunc   ;==>_BKColor
;=======================================================================

















;neutral
Func _KollisionMinus($PLAYER)
If $KOLLISIONMINUS_ENABLE = 1 Then
	If $PLAYER = 1 Then
		$SCORE = $SCORE - $MINUS
		GUICtrlSetData($SCORE_OUTPUT,"Score: " & $SCORE)
	EndIf	
	If $PLAYER = 2 Then
		$SCORE2 = $SCORE2 - $MINUS
		GUICtrlSetData($SCORE_OUTPUT2,"Score: " & $SCORE2)
	EndIf		
EndIf
EndFunc


Func _Limit()
	If $LIMIT <> 0 Then 
		If $LIMIT_COUNTER = $LIMIT Then
			If $SCORE > $SCORE2 Then 
				MsgBox(0,"Fisch","Spieler 1 gewinnt!" & @CR & @CR & "Punkte Spieler 1: " & $SCORE & @CR & "Punkte Spieler 2: " & $SCORE2) 
				Exit
				EndIf
			If $SCORE < $SCORE2 Then 
				MsgBox(0,"Fisch","Spieler 2 gewinnt!" & @CR & @CR & "Punkte Spieler 1: " & $SCORE & @CR & "Punkte Spieler 2: " & $SCORE2)	
				Exit
				EndIf
			If $SCORE = $SCORE2 Then 
				MsgBox(0,"Fisch","Unentschieden! Der Zufall entscheidet..." & @CR & @CR & "Punkte Spieler 1: " & $SCORE & @CR & "Punkte Spieler 2: " & $SCORE2 & @CR & @CR & "Es gewinnt Spieler " & Random(1,2,1) & "!")
				Exit
			EndIf	
		EndIf
	EndIf
EndFunc	

Func _PointReplace()
	$X_POINT = Random(10,$GUI_W - 10)
	$Y_POINT = Random(10,$GUI_H - 10)
	GUICtrlSetPos($POINT,$X_POINT,$Y_POINT)
EndFunc	










;---------------------------- 2player
Func _LeftA()
	GUICtrlSetData($FISCH2,"<°(((><")	
	$COUNTER2 = 0
	Do
	$X2 = $X2 - 1
	$Y2 = $Y2	
	GUICtrlSetPos($FISCH2,$X2,$Y2)
	$COUNTER2 = $COUNTER2 + 1
	Until $COUNTER2 == $SPEED
	Sleep($SLEEPDELAY)
EndFunc	

Func _UpW()
	$COUNTER2 = 0
	Do
	$X2 = $X2 
	$Y2 = $Y2 - 1		
	GUICtrlSetPos($FISCH2,$X2,$Y2)
	$COUNTER2 = $COUNTER2 + 1
	Until $COUNTER2 == $SPEED
	Sleep($SLEEPDELAY)
EndFunc	

Func _RightD()
	GUICtrlSetData($FISCH2,"><)))°>")	
	$COUNTER2 = 0
	Do
	$X2 = $X2 + 1
	$Y2 = $Y2		
	GUICtrlSetPos($FISCH2,$X2,$Y2)
	$COUNTER2 = $COUNTER2 + 1
	Until $COUNTER2 == $SPEED
	Sleep($SLEEPDELAY)
EndFunc	

Func _DownS()
	$COUNTER2 = 0
	Do
	$X2 = $X2
	$Y2 = $Y2 + 1		
	GUICtrlSetPos($FISCH2,$X2,$Y2)
	$COUNTER2 = $COUNTER2 + 1
	Until $COUNTER2 == $SPEED
	Sleep($SLEEPDELAY)
EndFunc	

Func _KollisionLeft_2()
	$X2 = $X2 + $BACKJUMP
	$Y2 = $Y2
	GUICtrlSetPos($FISCH2,$X2,$Y2)
	_KollisionMinus(2)	
EndFunc	

Func _KollisionUp_2()
	$X2 = $X2
	$Y2 = $Y2 + $BACKJUMP
	GUICtrlSetPos($FISCH2,$X2,$Y2)
	_KollisionMinus(2)		
EndFunc	

Func _KollisionRight_2()
	$X2 = $X2 - $BACKJUMP
	$Y2 = $Y2
	GUICtrlSetPos($FISCH2,$X2,$Y2)
	_KollisionMinus(2)		
EndFunc	

Func _KollisionDown_2()
	$X2 = $X2
	$Y2 = $Y2 - $BACKJUMP
	GUICtrlSetPos($FISCH2,$X2,$Y2)
	_KollisionMinus(2)		
EndFunc	

Func _Point_2()
	$SCORE2 = $SCORE2 + 10
	GUICtrlSetData($SCORE_OUTPUT2,"Score: " & $SCORE2)
	$X_POINT = Random(10,$GUI_W - 10)
	$Y_POINT = Random(10,$GUI_H - 10)
	GUICtrlSetPos($POINT,$X_POINT,$Y_POINT)
	If Random(0,$BONUS_PROBABILITY,1) = Random(0,$BONUS_PROBABILITY,1) Then
		GUICtrlSetState($BONUS,$GUI_SHOW)
		GUISetBkColor(0xFF0000)
		Sleep(1000)
		GUISetBkColor(0x0000FF)
		Sleep(1000)
		GUISetBkColor(0xFF0000)
		Sleep(1000)
		GUISetBkColor(0x0000FF)
		GUICtrlSetState($BONUS,$GUI_HIDE)
		$SCORE2 = $SCORE2 + 100
		GUICtrlSetData($SCORE_OUTPUT2,"Score: " & $SCORE2)
	EndIf	
	$LIMIT_COUNTER = $LIMIT_COUNTER + 1
EndFunc	