Ich bin in diesem Semester an meinem dritten Haskell-Projekt für meine Klasse und wir gingen von Hallo Welt zu einfacher Mathematik, um ASCII-Zeichen mit Haskell zu animieren und ich bin völlig verblüfft für dieses Projekt. Mein Professor hat dazu nichts auf seiner Website und die Dokumentation zu System.Console.ANSI ist nicht sehr hilfreich. Nach ausführlichen Recherchen kann ich dazu keine Beispiele finden.ASCII-Animation mit System.Console.ANSI
Hat jemand das getan oder zumindest sagen Sie mir, ob ich in die richtige Richtung gehe?
Die erste Frage ist
[16] Die System.Console.ANSI Bibliothek verwenden einen Rahmen-basierten Farb Zeichnung [4] zu ziehen. Es muss mindestens 8 Reihen mal 16 Spalten [4] haben und mindestens 2 Rahmen [8] haben, die sich unendlich abwechseln sollten. Nenne diese Farbe-comic.hs.
meine farb comic.hs sieht aus wie diese
module Main (
main
) where
import System.Console.ANSI
import System.IO
import Control.Concurrent
colorComic :: [IO()]
colorComic = [printBlock, flashBlue, flashRed]
main :: IO()
main = do
colorComic
pause :: IO()
pause = do
hFlush stdout
-- 1 second pause
threadDelay 1000000
flashRed :: IO()//change text color to red
flashRed = do
setSGR [SetColor Foreground Vivid Red]
pause
flashBlue :: IO()//change text color to blue
flashBlue = do
setSGR [SetColor Foreground Vivid Blue]
pause
printBlock :: IO()// print 8x16 block
printBlock = do
putStrLn "################"
putStrLn "################"
putStrLn "################"
putStrLn "################"
putStrLn "################"
putStrLn "################"
putStrLn "################"
putStrLn "################"
Ich verstehe nicht, wie das läuft unendlich lassen, und ich diesen Fehler und ich bin nicht sicher, warum, hat putStrLn
immer gearbeitet für mich. Gehe ich das richtig?
farb comic.hs: 39: 5: Parsen Fehler bei der Eingabe
die zweite Frage ‚putStrLn‘ ist viel härter, aber ich denke, ich habe eine Idee, wie man diese
tun[32] Verwenden Sie die System.Console.ANSI-Bibliothek, um eine farbige Animation in ASCII zu zeichnen. Die Animation sollte 25 Reihen x 60 Spalten [8] sein, eine Framerate von 30 Hz [4] haben, zuletzt für nicht mehr als 10 Sekunden [4], mindestens drei Farben verwenden [8], so sein, dass keine zwei aufeinanderfolgenden Frames in der Animation sind die gleichen [8], und einzigartig [-32].
Für die obige Frage ich einfach einen Block von # in den richtigen Dimensionen machen könnte, und dann die Farbe nacheinander jede Zeile ändern und dann mit der Farbe nach unten gedrückt ein und eine neuen Farbe den ganzen Block neu zeichnen hinzugefügt und so weiter. Ich bin mir nicht sicher, wie Frame-Rate zu tun ist.
Jede Hilfe wird sehr geschätzt, ich versuche nur zu lernen.
Wenn Sie tatsächlich die Zeile 'printBlock :: IO() // print 8x16 block' (und andere wie es), dann natürlich Ihr Code nicht analysieren Kompilieren -' // 'nicht Kommentarsyntax Haskell. [Here] (https://www.haskell.org/onlinereport/haskell2010/haskellch10.html) ist die Haskell-Syntaxreferenz. – user2407038