Calculate! Ein rasantes Mathe-Spiel(Mathe&Geschick&Schnelligkeit)

  • 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.

    [autoit]

    #include <GdiPlus.au3>
    #include <GuiConstants.au3>
    #include <Misc.au3>
    #include <StaticConstants.au3>

    [/autoit][autoit][/autoit][autoit]

    Global $xb = 225
    global $game=false
    global $punkte=0
    local $brush[3]

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit]

    endif
    _GDIPlus_Startup()
    $graphic = _GDIPlus_GraphicsCreateFromHWND($Gui)
    $bitmap = _GDIPlus_BitmapCreateFromGraphics(500, 700, $graphic)
    $buffer = _GDIPlus_ImageGetGraphicsContext($bitmap)

    [/autoit][autoit][/autoit][autoit]

    $brush[1] = _GDIPlus_BrushCreateSolid(0xFF60CC3F)
    $brush[0] = _GDIPlus_BrushCreateSolid(0xFF000000)
    $brush[2] = _GDIPlus_BrushCreateSolid(0xFF6677FF)

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit]

    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()

    [/autoit][autoit][/autoit][autoit]

    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

    [/autoit][autoit][/autoit][autoit]

    guictrlsetdata($label3, "Deine Punktzahl:"& $punkte)
    endif
    WEnd
    Func _EXIT()
    _GDIPlus_GraphicsDispose($graphic)
    _GDIPlus_GraphicsDispose($buffer)
    _GDIPlus_BitmapDispose($bitmap)
    _GDIPlus_Shutdown()
    exit
    EndFunc ;==>_EXIT

    [/autoit]


    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!

  • Das Spiel is cool :thumbup:

    Aber die Toleranz von 10 is zu gross, ich hab das gar nicht ausgerechnet. Ich hab blos geschätzt...

    Und einmal hat das Ergebnis im X mehr gegeben Als ich fahren konnte 8|

  • vielleicht kannst du ja noch einen HotKey oder soetwas für das Anzeigen der Highscoreliste einbauen


    Die Highscore kann im Hauptmenü angeschaut werden. Ich lad's gleich hoch

    Aber die Toleranz von 10 is zu gross,


    Dann eher Toleranz von 5?

    [align=center]Meine Werke mit der Irrlicht Engine
    AutoIt Picture Viewer Dreidimensionaler Bildbetrachter
    Mr Bubble 3D Neue Interpretation des Flashklassikers Bubble trouble