Add an owner field to plants
authorJoachim Breitner <mail@joachim-breitner.de>
Sun, 24 May 2009 19:26:16 +0000 (21:26 +0200)
committerJoachim Breitner <mail@joachim-breitner.de>
Sun, 24 May 2009 19:26:16 +0000 (21:26 +0200)
src/Lseed/Data.hs
src/dbclient.hs
src/fastScorer.hs
src/main.hs

index 7eb7f32..440bd33 100644 (file)
@@ -18,7 +18,8 @@ type AnnotatedGarden = Garden StipeInfo
 -- | A plant with metainformatoin
 data Planted a = Planted
        { plantPosition :: Double -- ^ Position in the garden, interval [0,1]
-       , genome        :: LSystem  -- ^ Lsystem in use
+       , plantOwner    :: Integer -- ^ Id of the user that owns this plant
+       , genome        :: LSystem -- ^ Lsystem in use
        , phenotype     :: Plant a -- ^ Actual current form of the plant
        }
 
index 4b90593..9eb91d2 100644 (file)
@@ -1,17 +1,20 @@
 import Lseed.Data
+import Lseed.Data.Functions
 import Lseed.DB
 import Lseed.Grammar.Compile
 import Lseed.Grammar.Parse
-import Lseed.Logic
+import Lseed.Mainloop
 import Lseed.Renderer.Cairo
 import Control.Applicative
+import Control.Monad
+import Text.Printf
 
 getGarden = spread <$> map (either (error.show) compileGrammarFile . parseGrammar "" . dbcCode)
                   <$> getCodeToRun
-  where spread gs = zipWith (\g p -> Planted ((p + 0.5) / l) g (Stipe () 0 [])) gs [0..]
+  where spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g (Stipe () 0 [])) gs [0..]
          where l = fromIntegral (length gs)
 
 main = do
        garden <- getGarden
        obs <- cairoObserver
-       lseedMainLoop obs 1 garden
+       lseedMainLoop True obs 1 garden
index b47cabb..1554561 100644 (file)
@@ -9,7 +9,6 @@ import Debug.Trace
 import System.Environment
 import System.Time
 import System.Random
-import Lseed.Renderer.Cairo
 import Text.Printf
 
 parseFile filename = do
@@ -24,18 +23,20 @@ readArgs doit = do
                putStrLn "L-Seed Demo application."
                putStrLn "Please pass L-Seed files on the command line."
          else  do
-               plants <- mapM parseFile args
-               doit (spread plants)
-  where        spread gs = zipWith (\g p -> Planted ((p + 0.5) / l) g (Stipe () 0 [])) gs [0..]
+               genomes <- mapM parseFile args
+               doit (spread genomes)
+  where        spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g (Stipe () 0 [])) gs [0..]
          where l = fromIntegral (length gs)
              
 
 scoringObs = nullObserver {
        obFinished = \garden -> do
                forM_ garden $ \planted -> do
-                       printf "%f: %f\n" (plantPosition planted)
-                                         (plantLength (phenotype planted))
+                       printf "Plant from %d at %.4f: Total size %.4f\n"
+                               (plantOwner planted)
+                               (plantPosition planted)
+                               (plantLength (phenotype planted))
        }
 
 main = readArgs $ \garden -> do
-       lseedMainLoop False scoringObs 30 garden
+       lseedMainLoop False scoringObs 100 garden
index 104e5de..9db46ab 100644 (file)
@@ -23,9 +23,9 @@ readArgs doit = do
                putStrLn "L-Seed Demo application."
                putStrLn "Please pass L-Seed files on the command line."
          else  do
-               plants <- mapM parseFile args
-               doit (spread plants)
-  where        spread gs = zipWith (\g p -> Planted ((p + 0.5) / l) g (Stipe () 0 [])) gs [0..]
+               genomes <- mapM parseFile args
+               doit (spread genomes)
+  where        spread gs = zipWith (\g p -> Planted ((fromIntegral p + 0.5) / l) p g (Stipe () 0 [])) gs [0..]
          where l = fromIntegral (length gs)