Klar
Einfach ganz normal mit GUIGetMsg
Oder mit _GUICtrlButton_SetImage
Edit: zu späääät ![]()
Klar
Einfach ganz normal mit GUIGetMsg
Oder mit _GUICtrlButton_SetImage
Edit: zu späääät ![]()
Da ich ein völliger Apple-Hasser bin
Ich auch...
Deswgen: Sch***e (wird übrigens mit ß geschrieben http://de.wiktionary.org/wiki/Schei%C3%9Fe) bis nutzlos
Das klappt übrigens nur ab Vista.
XP hat noch kein Fenster mit dem Namen "Desktop" und die Betriebssysteme davor schon mal recht nicht ![]()
Schau dir mal UEZ's Rotating Letters (oder so) an
Das machen Desktop Suchprogramme normalerweise ![]()
Ich galub nicht.
Aber du könntest den Beamer als 2. Bildschirm benutzen, und alles, was gezeigt werden soll da rein ziehen...
Ich auch...
Ist wirklich ein interessantes Thema ![]()
Kein gutes beispiel...
Da hätte man auch $test=$test+1 machen können
Ich find das hier besser:
$test=InputBox("Formel","Gib bitte eine Rechnung ein:")
$test = Execute($test)
MsgBox(0,"",$test)
Wenn du jetzt z.B. 4*5/10 eingibst kommt 2 raus ![]()
Edit: Oder noch besser:
[autoit]$test=InputBox("Befehl","Gib bitte einen AutoIt Befehl ein:")
Execute($test)
Gib mal Msgbox(0,"","") oder so ein, und schau, was passiert ![]()
Ich auch auf jeden Fall!
Ich hab auch eins angefangen, aber das verstaubt gerade nur...
Im Team macht das bestimmt viel mehr Spaß ![]()
P.S.: Mein Spezialgebiet ist PHP+MySQL(und noch lieber MySQLi)
Vielen Dank!
Jetzt gibts endlich ne Version ohne Archiv ![]()
Update: Steine bewegen sich nun!
Was für ein Zufall, da bin ich gerde bei!
Merke gerde, dass ich das vergessen hab in den Changelog zu schreiben...
Lol, "Spielsteingrafikqualität" ![]()
Danke für den Tipp Name ![]()
So, jetzt bin ich mal mit ne'm GDI+ Spiel dran ![]()
Ist ein ganz normales Mühlespiel für 2 Personen, was (wie ich finde) ganz nett geworden ist
Es gibt außerdem noch einen kleinen Entwicklermodus. Ich hab den einfach mal drinnen gelassen...
- 26.6.2010: Release
- 26.6.2010: Spielsteingrafikqualität erhöht -> Danke Name22
- 27.6.2010: Steine bewegen sich grafisch
- 27.6.2010: Gibt nun eine Version mit gezeichnetem Spielbrett
- Spielbrett mit GDI+ <-- Siehe Edit- Steine bewegen sich grafisch
- Startmenü
- Computergegner ![]()
Kritik ist (wie immer) erwünscht!
P.S.: Mit ESC kann man markierte Steine wieder abwählen
Edit: Dank yxyx gibts jetzt ne Version, die das Mühlefeld selber zeichnet:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=windmill.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Cartan12
Script Function:
Ein einfaches Mühlespiel in GDI+
#ce ----------------------------------------------------------------------------
;include
#include <GDIP.au3>
#include <GDIPlus.au3>
#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <WinAPI.au3>
#include <WindowsConstants.au3>
HotKeySet("{ESC}", "_abwaelen")
Global $debug = 0 ;Entwickler Modus ![]()
Global $Geschwindigkeit = 1.5 ;Hier könnt ihr die Geschwindegkeit der Steine einstellen
Global $hotkey = 1
Global $x = 18, $y = 18, $heigh = 650, $widht = 600, $ausgewaehlt = False, $bk, $player = 0, $anderer_player = 1, $muehle = 0, $feld_alt = 0, $verschiebt = 0, $stein_verschiebt
Global $steine[2] = [9,9], $steine_spielfeld[2] = [0, 0], $steine_vorhanden[2] = [1, 1]
Global $fields[24], $field_ausgewaehlt[24], $muehle_feld_aktiv[16]
For $i = 0 To 15
$muehle_feld_aktiv[$i] = 0
Next
For $i = 0 To 23
$fields[$i] = 0
$field_ausgewaehlt[$i] = 0
Next
Global $fieldpos[24][2] = [[6, 6],[270, 6],[538, 6], _;0,1,2
[104, 104],[270, 104],[438, 104], _;3,4,5
[202, 202],[270, 202],[340, 202], _;6,7,8
[6, 270],[104, 270],[202, 270],[340, 270],[438, 270],[538, 270], _;9,10,11,12,13,14
[202, 340],[270, 340],[340, 340], _;15,16,17
[104, 438],[270, 438],[438, 438], _;18,19,20
[6, 538],[270, 538],[538, 538]];21,22,23
Global $muehle_feld[16][3] = [[0, 1, 2],[3, 4, 5],[6, 7, 8],[9, 10, 11],[12, 13, 14],[15, 16, 17],[18, 19, 20],[21, 22, 23], _
[0, 9, 21],[3, 10, 18],[6, 11, 15],[1, 4, 7],[16, 19, 22],[8, 12, 17],[5, 13, 20],[2, 14, 23]]
Global $zugmoeglichkeiten[32][2] = [[0, 1],[1, 2], _
[3, 4],[4, 5], _
[6, 7],[7, 8], _
[9, 10],[10, 11],[12, 13],[13, 14], _
[15, 16],[16, 17], _
[18, 19],[19, 20], _
[21, 22],[22, 23], _
[0, 9],[9, 21], _
[3, 10],[10, 18], _
[6, 11],[11, 15], _
[1, 4],[4, 7],[16, 19],[19, 22], _
[8, 12],[12, 17],[5, 13],[13, 20], _
[2, 14],[14, 23]]
Global $imgpfad = @ScriptDir & "\Pic\"
_GDIPlus_Startup()
$bk = _GDIPlus_ImageLoadFromFile($imgpfad & "muehle.png")
[/autoit] [autoit][/autoit] [autoit]OnAutoItExitRegister("_exit")
Opt("MouseCoordMode", 0)
Opt("GUIOnEventMode", 1)
$GUI = GUICreate("Mühle", $widht, $heigh)
;~ WinSetTrans($GUI,"",90)
GUISetBkColor(0xFFFFFF)
GUISetOnEvent($GUI_EVENT_CLOSE, "_exit")
GUIRegisterMsg($WM_PAINT, "WM_PAINT")
$graphic = _GDIPlus_GraphicsCreateFromHWND($GUI)
$bitmap = _GDIPlus_BitmapCreateFromGraphics($widht, $heigh, $graphic)
$backbuffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
_GDIPlus_GraphicsSetSmoothingMode($backbuffer, 2)
$brush_red = _GDIPlus_BrushCreateSolid(0xFFFF0000)
$brush_blue = _GDIPlus_BrushCreateSolid(0xFF0000FF)
$brush_bk = _GDIPlus_BrushCreateSolid(0xFF35C3C8)
$pen_muehle = _GDIPlus_PenCreate(0xFF000000,7)
GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
Sleep(10)
If WinActive($GUI) Then
If Not $hotkey Then HotKeySet("{ESC}", "_abwaelen")
If _IsPressed(01) Then
While _IsPressed(01)
Sleep(10)
WEnd
_checkMouseclick()
EndIf
Else
HotKeySet("{ESC}")
$hotkey = 0
EndIf
If $debug Then
$pos = GUIGetCursorInfo($GUI)
ToolTip($pos[0] & " " & $pos[1],0,0)
EndIf
WEnd
Func _checkMouseclick()
Local $pos = GUIGetCursorInfo($GUI), $temp = 0
If Not $muehle Then
For $i = 0 To 23
Local $temp_X = $fieldpos[$i][0] + 55, $temp_Y = $fieldpos[$i][1] + 55
If $pos[0] > $fieldpos[$i][0] And $pos[1] > $fieldpos[$i][1] And $pos[0] < $temp_X And $pos[1] < $temp_Y And $fields[$i] = 0 And $steine_vorhanden[$player] = 1 Then
$fields[$i] = $player + 1
$steine[$player] -= 1
$steine_spielfeld[$player] += 1
If $steine[$player] = 0 Then $steine_vorhanden[$player] = 0
If Not _checkMuehle() Then _changePlayer()
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_INTERNALPAINT)
ElseIf $pos[0] > $fieldpos[$i][0] And $pos[1] > $fieldpos[$i][1] And $pos[0] < $temp_X And $pos[1] < $temp_Y And $fields[$i] = $player + 1 And $steine_vorhanden[$player] = 0 And $ausgewaehlt = 0 Then
$field_ausgewaehlt[$i] = 1
$feld_alt = $i
$ausgewaehlt = 1
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_INTERNALPAINT)
ElseIf $pos[0] > $fieldpos[$i][0] And $pos[1] > $fieldpos[$i][1] And $pos[0] < $temp_X And $pos[1] < $temp_Y And $fields[$i] = 0 And $steine_vorhanden[$player] = 0 And $ausgewaehlt = 1 Then
If $steine_spielfeld[$player] = 3 Then
$fields[$feld_alt] = 0
$fields[$i] = $player + 1
$field_ausgewaehlt[$feld_alt] = 0
$ausgewaehlt = 0
If Not _checkMuehle() Then _changePlayer()
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_INTERNALPAINT)
Return
EndIf
For $k = 0 To 31
If $zugmoeglichkeiten[$k][0] == $feld_alt Or $zugmoeglichkeiten[$k][1] == $feld_alt Then
If $zugmoeglichkeiten[$k][0] == $i Or $zugmoeglichkeiten[$k][1] == $i Then
$l = 0
$fields[$feld_alt] = 0
$field_ausgewaehlt[$feld_alt] = 0
$ausgewaehlt = 0
If $fieldpos[$feld_alt][0] = $fieldpos[$i][0] Then
If $feld_alt>$i Then
Do
$temp = WM_PAINT_special($l,$feld_alt,$i,$player,0)
$l += $Geschwindigkeit
Until $temp <= $fieldpos[$i][1]
Else
Do
$temp = WM_PAINT_special($l,$feld_alt,$i,$player,0)
$l += $Geschwindigkeit
Until $temp >= $fieldpos[$i][1]
EndIf
ElseIf $fieldpos[$feld_alt][1] = $fieldpos[$i][1] Then
If $feld_alt>$i Then
Do
$temp = WM_PAINT_special($l,$feld_alt,$i,$player,1)
$l += $Geschwindigkeit
Until $temp <= $fieldpos[$i][0]
Else
Do
$temp = WM_PAINT_special($l,$feld_alt,$i,$player,1)
$l += $Geschwindigkeit
Until $temp >= $fieldpos[$i][0]
EndIf
EndIf
$fields[$i] = $player + 1
If Not _checkMuehle() Then _changePlayer()
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_INTERNALPAINT)
EndIf
EndIf
Next
EndIf
Next
ElseIf $muehle Then
For $i = 0 To 23
Local $temp_X = $fieldpos[$i][0] + 55, $temp_Y = $fieldpos[$i][1] + 55
If $pos[0] > $fieldpos[$i][0] And $pos[1] > $fieldpos[$i][1] And $pos[0] < $temp_X And $pos[1] < $temp_Y And $fields[$i] = $anderer_player + 1 Then
For $k = 0 To 15
If Not $muehle_feld_aktiv[$k] Then ContinueLoop
For $j = 0 To 2
If $i = $muehle_feld[$k][$j] Then
Return
EndIf
Next
Next
If $steine_spielfeld[$anderer_player] <= 3 And Not $steine_vorhanden[$anderer_player] Then
MsgBox(0, "Gewonnen!", "Spieler " & $player + 1 & " hat gewonnen!")
Exit
EndIf
$fields[$i] = 0
$steine_spielfeld[$anderer_player] -= 1
$muehle = 0
_changePlayer()
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_INTERNALPAINT)
EndIf
Next
EndIf
EndFunc ;==>_checkMouseclick
Func _abwaelen()
$field_ausgewaehlt[$feld_alt] = 0
$ausgewaehlt = 0
_WinAPI_RedrawWindow($GUI, 0, 0, $RDW_INTERNALPAINT)
EndFunc ;==>_abwaelen
Func _checkMuehle()
Local $temp[3]
For $i = 0 To 15
If $muehle_feld_aktiv[$i] Then
For $j = 0 To 2
$temp[$j] = $fields[$muehle_feld[$i][$j]]
Next
If $temp[0] > 0 And $temp[1] > 0 And $temp[2] > 0 Then
If $temp[0] = 1 And $temp[1] = 1 And $temp[2] = 1 Then
ContinueLoop
ElseIf $temp[0] = 2 And $temp[1] = 2 And $temp[2] = 2 Then
ContinueLoop
EndIf
Else
$muehle_feld_aktiv[$i] = 0
EndIf
EndIf
For $j = 0 To 2
$temp[$j] = $fields[$muehle_feld[$i][$j]]
Next
If $temp[0] > 0 And $temp[1] > 0 And $temp[2] > 0 Then
If $temp[0] = 1 And $temp[1] = 1 And $temp[2] = 1 Then
$muehle_feld_aktiv[$i] = 1
$muehle = 1
Return 1
ElseIf $temp[0] = 2 And $temp[1] = 2 And $temp[2] = 2 Then
$muehle_feld_aktiv[$i] = 1
$muehle = 1
Return 1
EndIf
ElseIf $temp[0] = 0 And $temp[1] = 0 And $temp[2] = 0 Then
$muehle_feld_aktiv[$i] = 0
EndIf
Next
$muehle = 0
Return 0
EndFunc ;==>_checkMuehle
Func _changePlayer()
If $player = 0 Then
$player = 1
$anderer_player = 0
ElseIf $player = 1 Then
$player = 0
$anderer_player = 1
EndIf
EndFunc ;==>_changePlayer
Func _exit()
_GDIPlus_ImageDispose($bk)
_GDIPlus_GraphicsDispose($graphic)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_BrushDispose($brush_red)
_GDIPlus_BrushDispose($brush_blue)
_GDIPlus_BrushDispose($brush_bk)
_GDIPlus_PenDispose($pen_muehle)
_GDIPlus_Shutdown()
Exit
EndFunc ;==>_exit
Func WM_PAINT()
_GDIPlus_GraphicsClear($backbuffer, 0xFFFFFFFF)
;~ _GDIPlus_GraphicsDrawImageRect($backbuffer,$bk,15,15,$widht-30,$heigh-80)
_drawMuehle()
If $debug Then
For $i = 0 To 23
_GDIPlus_GraphicsDrawString($backbuffer, $i, $fieldpos[$i][0], $fieldpos[$i][1])
Next
EndIf
For $i = 0 To 23
If $field_ausgewaehlt[$i] Then
_GDIPlus_GraphicsFillRect($backbuffer, $fieldpos[$i][0], $fieldpos[$i][1], 55, 55, $brush_bk)
EndIf
Next
For $i = 0 To 23
If $fields[$i] = 1 Then
_GDIPlus_GraphicsFillRoundRect($backbuffer, $fieldpos[$i][0], $fieldpos[$i][1], 55, 55, 55, $brush_blue)
ElseIf $fields[$i] = 2 Then
_GDIPlus_GraphicsFillRoundRect($backbuffer, $fieldpos[$i][0], $fieldpos[$i][1], 55, 55, 55, $brush_red)
EndIf
Next
_GDIPlus_GraphicsDrawString($backbuffer, "Spieler " & $player + 1 & " ist am Zug!", 50, $heigh - 40)
If $muehle Then _GDIPlus_GraphicsDrawString($backbuffer, "Bitte einen Stein zum rausschmeißen aussuchen!", 50, $heigh - 20)
If $steine_vorhanden[$player] Then _GDIPlus_GraphicsDrawString($backbuffer, "Der Spieler hat noch " & $steine[$player] & " Spielsteine übrig!", 200, $heigh - 40)
If Not $steine_vorhanden[$player] And Not $ausgewaehlt And Not $muehle Then _GDIPlus_GraphicsDrawString($backbuffer, "Bitte einen Spielstein zum verschieben auswählen!", 200, $heigh - 40)
_GDIPlus_GraphicsDrawImageRect($graphic, $bitmap, 0, 0, $widht, $heigh)
EndFunc ;==>WM_PAINT
Func WM_PAINT_special($il,$sfeld_alt,$ii,$iplayer,$imodus)
_GDIPlus_GraphicsClear($backbuffer, 0xFFFFFFFF)
;~ _GDIPlus_GraphicsDrawImageRect($backbuffer,$bk,15,15,$widht-30,$heigh-80)
_drawMuehle()
For $i = 0 To 23
If $fields[$i] = 1 Then
_GDIPlus_GraphicsFillRoundRect($backbuffer, $fieldpos[$i][0], $fieldpos[$i][1], 55, 55, 55, $brush_blue)
ElseIf $fields[$i] = 2 Then
_GDIPlus_GraphicsFillRoundRect($backbuffer, $fieldpos[$i][0], $fieldpos[$i][1], 55, 55, 55, $brush_red)
EndIf
Next
If Not $imodus Then
Local $temp = $fieldpos[$sfeld_alt][1] + $il
If $sfeld_alt>$ii Then $temp = $fieldpos[$sfeld_alt][1] - $il
If Not $iplayer Then
_GDIPlus_GraphicsFillRoundRect($backbuffer, $fieldpos[$sfeld_alt][0], $temp, 55, 55, 55, $brush_blue)
Else
_GDIPlus_GraphicsFillRoundRect($backbuffer, $fieldpos[$sfeld_alt][0], $temp, 55, 55, 55, $brush_red)
EndIf
Else
Local $temp = $fieldpos[$sfeld_alt][0] + $il
If $sfeld_alt>$ii Then $temp = $fieldpos[$sfeld_alt][0] - $il
If Not $player Then
_GDIPlus_GraphicsFillRoundRect($backbuffer, $temp, $fieldpos[$sfeld_alt][1], 55, 55, 55, $brush_blue)
Else
_GDIPlus_GraphicsFillRoundRect($backbuffer, $temp, $fieldpos[$sfeld_alt][1], 55, 55, 55, $brush_red)
EndIf
EndIf
_GDIPlus_GraphicsDrawString($backbuffer, "Spieler " & $player + 1 & " ist am Zug!", 50, $heigh - 40)
If $muehle Then _GDIPlus_GraphicsDrawString($backbuffer, "Bitte einen Stein zum rausschmeißen aussuchen!", 50, $heigh - 20)
If $steine_vorhanden[$player] Then _GDIPlus_GraphicsDrawString($backbuffer, "Der Spieler hat noch " & $steine[$player] & " Spielsteine übrig!", 200, $heigh - 40)
If Not $steine_vorhanden[$player] And Not $ausgewaehlt And Not $muehle Then _GDIPlus_GraphicsDrawString($backbuffer, "Bitte einen Spielstein zum verschieben auswählen!", 200, $heigh - 40)
_GDIPlus_GraphicsDrawImageRect($graphic, $bitmap, 0, 0, $widht, $heigh)
Return $temp
EndFunc ;==>WM_PAINT
Func _drawMuehle()
_GDIPlus_GraphicsDrawLine($backbuffer,33,28,34,568,$pen_muehle);links außen
_GDIPlus_GraphicsDrawLine($backbuffer,31,566,569,566,$pen_muehle) ;unten außen
_GDIPlus_GraphicsDrawLine($backbuffer,566,568,566,28,$pen_muehle) ;rechts außen
_GDIPlus_GraphicsDrawLine($backbuffer,30,30,569,30,$pen_muehle) ; oben außen
_GDIPlus_GraphicsDrawLine($backbuffer,132,129,132,471,$pen_muehle) ;links mitte
_GDIPlus_GraphicsDrawLine($backbuffer,129,468,471,468,$pen_muehle);unten mitte
_GDIPlus_GraphicsDrawLine($backbuffer,468,471,468,129,$pen_muehle);rechts mitte
_GDIPlus_GraphicsDrawLine($backbuffer,129,132,471,132,$pen_muehle);links mitte
_GDIPlus_GraphicsDrawLine($backbuffer,232,229,232,367,$pen_muehle);links innen
_GDIPlus_GraphicsDrawLine($backbuffer,229,364,367,364,$pen_muehle);unten innen
_GDIPlus_GraphicsDrawLine($backbuffer,364,367,364,229,$pen_muehle);rechts innen
_GDIPlus_GraphicsDrawLine($backbuffer,367,232,229,232,$pen_muehle);oben innen
_GDIPlus_GraphicsDrawLine($backbuffer,32,296,232,296,$pen_muehle)
_GDIPlus_GraphicsDrawLine($backbuffer,296,568,296,364,$pen_muehle)
_GDIPlus_GraphicsDrawLine($backbuffer,568,296,364,296,$pen_muehle)
_GDIPlus_GraphicsDrawLine($backbuffer,296,32,296,232,$pen_muehle)
EndFunc
Func _GDIPlus_GraphicsFillRoundRect($gra, $x, $y, $w, $h, $r = 30, $brush = 0)
;by TheShadowAE
Local $path = _GDIPlus_PathCreate(1)
_GDIPlus_PathAddPie($path, $x, $y, $r, $r, 180, 90)
_GDIPlus_PathAddPie($path, $x + $w - $r, $y, $r, $r, 270, 90)
_GDIPlus_PathAddPie($path, $x + $w - $r, $y + $h - $r, $r, $r, 0, 90)
_GDIPlus_PathAddPie($path, $x, $y + $h - $r, $r, $r, 90, 90)
_GDIPlus_PathAddRectangle($path, $x, $y + $r / 2, $w, $h - $r)
_GDIPlus_PathAddRectangle($path, $x + $r / 2, $y, $w - $r, $h)
_GDIPlus_PathCloseFigure($path)
_GDIPlus_GraphicsFillPath($gra, $path, $brush)
_GDIPlus_PathDispose($path)
EndFunc ;==>_GDIPlus_GraphicsFillRoundRect
Außerdem kann man duch ändern der Variable $Geschwindigkeit das Tempo der Spielsteine festlegen
Kannste die Sachen mit den Pfeiltasten markieren?
Wenn ja kannste die auch mit der Leertaste aktivieren, bzw. deaktivieren
Versuch das mal mit controlsend und sag dann, obs geklappt hat...
Herzlich Willkommen ![]()
Mir wär, um ehrlich zu sein, auch lieber, dass meine Mutter nicht weiß, dass ich hochbegabt bin...
Sie rastet bei jeder schlechten Note aus und sagt mir, dass ich das doch viel besser können müsse ![]()
Außerdem fällt meine Begabung eher auf den mathematisch/informatischen Bereich
Ich hab mal "Nein" für BugFix hinzugefügt ![]()
Ich wollt nur wissen, wie viele hier "gleichbegabt" sind (oder sich dafür halten ^^)
Aber ich glaub nicht, dass 80% lügen...
Wie viel ist überhaupt ein 153 IQ?