Halli, hallo, hallöchen!
Heut hab ich mich mal wieder mit Gdi+ befasst. Dabei ist, wie ich finde, ein ganz nettes Spiel rausgekommen.
Es geht darum, Rechenaufgaben zu lösen und dann mit Geschick&Schnelligkeit die Bälle korrekt zu platzieren.
#include <GdiPlus.au3>
#include <GuiConstants.au3>
#include <Misc.au3>
#include <StaticConstants.au3>
Global $xb = 225
global $game=false
global $punkte=0
local $brush[3]
OnAutoItExitRegister("_EXIT")
$Gui = GUICreate("-Calculate-", 500, 750)
guictrlcreatepic(@scriptdir&"\pic.jpg", 0, 702, 500, 50)
guisetbkcolor(0x0020A1)
$label= guictrlcreatelabel("",20, 702, 300, 20)
guictrlsetbkcolor(-1 , $GUI_BKCOLOR_TRANSPARENT)
guictrlsetcolor(-1, 0xFFFFFF)
guictrlsetfont(-1, 10)
$label2=guictrlcreatelabel("Deine Position"&$xb, 20, 722, 160)
guictrlsetbkcolor(-1 , $GUI_BKCOLOR_TRANSPARENT)
guictrlsetcolor(-1, 0xFFFFFF)
guictrlsetfont(-1, 10)
$label3= guictrlcreatelabel("Deine Punktzahl:"&$punkte, 220, 722,300, 20)
guictrlsetbkcolor(-1 , $GUI_BKCOLOR_TRANSPARENT)
guictrlsetcolor(-1, 0xFFFFFF)
guictrlsetfont(-1, 10)
$random= random(1,2, 1)
If $random= 1 and $game=false then
$random2= random(0, 225,1)
$random3= random(0, 225, 1)
guictrlsetdata($label, "Zielposition:"& $random2 &"+"& $random3)
$goal= $random2+$random3
elseif $random= 2 and $game=false then
do
$random2= random(0, 450,1)
$random3= random(0, 450, 1)
until ($random2-$random3)>0
guictrlsetdata($label,"Zielposition:"& $random2&"-"&$random3)
$goal= $random2-$random3
endif
_GDIPlus_Startup()
$graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
$bitmap = _GDIPlus_BitmapCreateFromGraphics(500, 700, $graphic)
$buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)
$brush[1] = _GDIPlus_BrushCreateSolid(0xFF60CC3F)
$brush[0] = _GDIPlus_BrushCreateSolid(0xFF000000)
$brush[2] = _GDIPlus_BrushCreateSolid(0xFF6677FF)
GUISetState(@SW_SHOW)
[/autoit][autoit][/autoit][autoit]While not winexists("Calculate", "calculate")
[/autoit][autoit][/autoit][autoit]$msg = GUIGetMsg()
switch $msg
Case $GUI_EVENT_CLOSE
Exit
endswitch
$random= random(1,2, 1)
If $random= 1 and $game=true then
$random2= random(0, 225,1)
$random3= random(0, 225, 1)
guictrlsetdata($label, "Zielposition:"&$random2 &"+"& $random3)
$goal= $random2+$random3
elseif $random= 2 and $game=True then
do
$random2= random(0, 450,1)
$random3= random(0, 450, 1)
until ($random2-$random3)>0
guictrlsetdata($label, "Zielposition:"&$random2&"-"&$random3)
$goal= $random2-$random3
endif
for $i= 1 to 700 step 1.7
If $random=1 then
$sleep= 20
else
$sleep=32
endif
If _ispressed(44) and $xb<=448 then $xb+=2
If _ispressed(41) and $xb>=2 then $xb-=2
If _ispressed(53) then $sleep=0
_GDIPlus_GraphicsFillRect($buffer, 0, 0, 500, 700, $brush[0])
_GDIPlus_GraphicsFillEllipse($buffer, $xb, $i, 50, 50, $brush[$random])
_GDIPlus_GraphicsDrawImageRect($graphic, $bitmap, 0, 0, 500, 700)
guictrlsetdata($label2, "Deine X-Position:"&$xb)
sleep($sleep)
next
$game=true
$i=700
If $i= 700 and $xb<$goal-10 or $xb>$goal+10 then
$msgbox= Msgbox(4, "Loser!", "Möchtest du deine lächerlichen " &$punkte& "in die Highscore eintragen?")
If $msgbox= 6 then
$name= Inputbox("Dein Name", "Wie ist denn dein Name?", "Horst")
If $name<> "" then Iniwrite(@Scriptdir&"\score.ini", "namen", $name, $punkte)
_exit()
else
[/autoit][autoit][/autoit][autoit]_exit()
[/autoit][autoit][/autoit][autoit]endif
else
If $random=1 then
$punkte+=50
elseif $random=2 Then
$punkte+=70
EndIf
guictrlsetdata($label3, "Deine Punktzahl:"& $punkte)
endif
WEnd
Func _EXIT()
_GDIPlus_GraphicsDispose($graphic)
_GDIPlus_GraphicsDispose($buffer)
_GDIPlus_BitmapDispose($bitmap)
_GDIPlus_Shutdown()
exit
EndFunc ;==>_EXIT
Bei der Geschwindigkeit der Bälle weiß ich nicht genau, ob sie zu schnell oder zu langsam ist. Zusätzlich is ne Toleranz von 10 Punkten eingebaut.
Wie man im Hauptmenü sehen kann, wird es in späteren Versionen Möglichkeiten geben, die Geschwindigkeit selbst zu regulieren.
Im Anhang befinden sich die exe's und alle erforderlichen Dateien.
Einfach auf Game starten klicken
So, dann viel Spaß beim Testen,
Gruß, Billie
Edit1: Kleiner Fehler bemerkt, verbesserte Version wird gleich hochgeladen...... Dauert noch länger.... Hauptmenü wird also erst morgen hinzugefügt
Edit2: kleines Hauptmenü + Highscoreanzeige reingebaut. Toleranz auf 5 vermindert. Optionen werden folgen!