diff options
| author | Mart Lubbers | 2015-04-29 19:17:10 +0200 | 
|---|---|---|
| committer | Mart Lubbers | 2015-04-29 19:17:10 +0200 | 
| commit | b888368716834847f4ea3ab32fcf8191a904bcce (patch) | |
| tree | 8569d4858a26833345c19500f45957c9a78e3e47 /fp2/week3 | |
| parent | initial start with week3, wine yay (diff) | |
GetallenRaden done:)
Diffstat (limited to 'fp2/week3')
| -rw-r--r-- | fp2/week3/mart/GetallenRaden.icl | 36 | ||||
| -rw-r--r-- | fp2/week3/mart/GetallenRaden.prj | 2 | 
2 files changed, 25 insertions, 13 deletions
| diff --git a/fp2/week3/mart/GetallenRaden.icl b/fp2/week3/mart/GetallenRaden.icl index 37584fb..74678aa 100644 --- a/fp2/week3/mart/GetallenRaden.icl +++ b/fp2/week3/mart/GetallenRaden.icl @@ -1,14 +1,10 @@  module GetallenRaden
 -/*	Dynamics werken alleen met de 32-bit versie van de Clean compiler.
 -	(*) Gebruik Environment 'Experimental'
 -	(*) In Project:Project Options: zet vlag 'Enable dynamics' aan
 -*/
  import StdEnv
 -import StdDynamic, StdDynamicFileIO		// nodig voor dynamics en dynamics in files
 -import StdFileSelect					// platform file-selector dialoog
 +import StdDynamic, StdDynamicFileIO
 +import StdFileSelect
 -// Generation program
 +// Example generation program
  //fib :: [Int]
  //fib = [fib` i \\ i <- [0..]]
  //	where 
 @@ -23,16 +19,32 @@ makeSeq :: Dynamic -> [Int]  makeSeq (x :: [Int]) = x
  makeSeq _ = abort "You selected a file not containing a sequence"
 -loadSeq :: String *World -> *([Int], *World)
 +basename :: String Int -> String
 +basename s 0 = toString s.[0]
 +basename s n = let c = toString s.[n] in if (c == "\\") "" ((basename s (n-1)) +++ c)
 +
 +loadSeq :: String *World -> *([Int], String, *World)
  loadSeq s world
  # s = let l = size s in s % (0, l-5)
  # (ok, dyn, world) = readDynamic s world
  | not ok = abort "You didn't select a dynamic file"
 -| otherwise = (makeSeq dyn, world)
 +| otherwise = (makeSeq dyn, basename s ((size s)-1), world)
 +
 +play :: *File String [Int] Int Int -> *File
 +play io _ _ _ 5 = io <<< "Congratulations, you had 5 correct answers\n"
 +play io seqname [nextnum:sequence] currentnum correct
 +# io = io <<< (seqname +++ "[" +++ toString currentnum +++ "] = " +++ toString nextnum +++ "\n")
 +# (ok, guessednumber, io) = freadi io
 +| not ok = play (snd (freadline io)) seqname sequence (currentnum + 1) correct
 +# (io, correct) = if (guessednumber == hd sequence) (io, correct+1) (io <<< "Incorrect...\n", correct) 
 += play (snd (freadline io)) seqname sequence (currentnum + 1) correct
 -Start :: *World -> ([Int], *World)
 +Start :: *World -> *World
  Start world
  # (inputfilepath, world) = selectInputFile world
  | isNothing inputfilepath = abort "Please select a file"
 -# (sequence, world) = loadSeq (fromJust inputfilepath) world
 -| otherwise = (take 20 sequence, world)
 +# (sequence, sequencename, world) = loadSeq (fromJust inputfilepath) world
 +# (io, world) = stdio world
 +# io = (play io sequencename sequence 0 0) <<< "Press any key to close"
 +# (_, world) = fclose io world
 += world
 diff --git a/fp2/week3/mart/GetallenRaden.prj b/fp2/week3/mart/GetallenRaden.prj index b3af0da..e857306 100644 --- a/fp2/week3/mart/GetallenRaden.prj +++ b/fp2/week3/mart/GetallenRaden.prj @@ -24,7 +24,7 @@ Global  			Time:	False
  			Stack:	False
  		Output
 -			Output:	ShowConstructors
 +			Output:	NoReturnType
  			Font:	Courier
  			FontSize:	9
  			WriteStdErr:	False
 | 
