One thing I can imagine going wrong is the printing itself.
Have you tried using print instead of love.graphics.print?
Because the way you are currently printing is not quite compliant with how you ought to draw content and I can imagine weird behavior arising from there.
Try printing key and scancode (the second parameter of keyreleased) and check your console if anything is showing up.
Usually you're meant to only draw within love.draw. To guarantee that you have a consistent gamestate before you draw it. This is enforced by clearing and recentering the canvas before love.draw is called, presenting the finished image afterwards and clearing again the next frame.
Events (such as keypressed or update) are handled before draw. This may just be weird / inconsistent behavior or a bug that anything shows up at all and not the other way around.
Also. In case something else went wrong. You can just try out this code:
Code: Select all
function love.keypressed(key)
if key == "escape" then
love.event.quit()
end
end
This worked on windows 7, love 0.10.2
---
Ich kann mir vorstellen, dass das ausgeben selbst das Problem ist.
Hast du mal probiert print() anstatt love.graphics.print zu benutzen?
So wie du gerade versuchst dir etwas auszugeben ist nicht, wie es vorhergesehen ist und ich kann mir vorstellen, dass es dadurch zu den komischen Ergebnissen kommt.
Versuch einfach mal den key und den scancode (den zweiten Parameter den keyreleased bekommt) und schau in der Konsole nach ob etwas dort auftaucht.
Normalerweise sollte man nur in love.draw etwas malen. Dass bedeutet alle Funktionen, die irgendetwas anzeigen sollen, sollten vom Ablauf her zwischen "love.draw" und dem schließenden "end" passieren.
Wenn du in events wie love.keypressed, love.update oder ähnlichem Zeichnest kann es passieren, dass der gamestate (der Zustand von deinem Game) noch nicht konsistent ist, dinge übermalt werden oder ähnliche blöde dinge passieren).
Löve erzwingt dass sogar, indem es den canvas (dein Fenster) wieder leer macht und mit der Hintergrundfarbe ausmalt. Dann wird love.draw aufgerufen gefolgt von dem präsentieren deines neu erzeugtem Bildes (nur danach wird etwas angezeigt).
Events (wie z.B. keypressed oder update) passieren vor draw. Was du siehst könnte einfach nur komisches verhalten oder ein bug sein, wenn man außerhalb von love.draw malt, und nicht ein bug mit escape.
Du hast davor zwar mit einer Kondition gearbeitet. Aber nur zum sichergehen würde ich dass mal ausprobieren.
Alternativ kannst du auch einfach mal den Code hier ausprobieren:
Code: Select all
function love.keypressed(key)
if key == "escape" then
love.event.quit()
end
end
Das funktioniert bei mir auf Windows 7, love 0.10.2 und beendet einfach das Spiel.