# HG changeset patch # User William Morgan # Date 1406442655 25200 # Node ID 75f808e60aa80aba37594a68b200982c9b0a4657 # Parent 8496febd37b5dd48331b99244b73e0b8d2cc8037 initial simulator ticker. needs print debug cleanup. diff -r 8496febd37b5 -r 75f808e60aa8 code/gameState.lm --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/code/gameState.lm Sat Jul 26 23:30:55 2014 -0700 @@ -0,0 +1,143 @@ +#{ + import: [ + length + reverse + split:at + map + fold:with + filter + flatten + ] from: (module: "ll.lm") + + myAnd <- :a b { + // only ones and zeros + (a + b) = 2 + } + + makeTicker <- :mapWidth mapHeight { + + makeEventType <- :lagTick isMovement behavior{ + print: 12 + :curTick { + print: 11 + expireTick <- curTick + lagTick + #[expireTick isMovement :gameState {behavior: expireTick gameState}] + } + } + + endOfLives <- makeEventType: (127 * mapWidth * mapHeight * 160) 0 :tick gameState { + 777 print + addEvents <- [] + // set lives to zero + #[addEvents gameState] + } + + /* + fruitStateEvent + fruit1Appears <- makeEventType: (127 * 200) 0 :gameState { + // set fruit state to on + } + fruit2Appears <- (127 * 400) + fruit1Expires <- (127 * 280) + fruit2Expires <- (127 * 280) + //moveLambdaMan <- 127 (eating, lamdamanId) + //moveGhost <- (ghostType, ghostId) + frightModeDeactivate <- (127 * 20) + */ + + executeEvents <- :tick isMove events gameState { + event <- 0 + eventTick <- 0 + eventIsMove <- 0 + eventLam <- 0 + + unexpired <- [] + res <- 0 + while: { not: (events empty?) } do: { + event <- events value + eventTick <- event value + eventIsMove <- (event tail) value + print: 17 + if: ( ( eventTick = tick ) myAnd: ( eventIsMove = isMove ) ) { + eventLam <- ((event tail) tail) + res <- eventLam: gameState + unexpired <- res value + gameState <- res tail + } else: { + unexpired <- event | unexpired + } + events <- events tail + } + print: 18 + #[unexpired gameState] + } + + executeTick <- :tick events gameState { + // TODO: update fruit countdown for AI input + + print: 14 + // 1.) movement + res <- executeEvents: tick 1 events gameState + events <- res value + gameState <- (res tail) value + + print: 15 + // 2.) actions + res <- executeEvents: tick 0 events gameState + events <- res value + gameState <- (res tail) value + + print: 16 + // 3.) collide pills powerpills fruit + + #[events gameState] + } + + nextTick <- :events { + print: 8 + fold: events 0x7FFFFFFF with: :curMin event { + print: #[9 curMin event] + eventTick <- event value + print: 10 + if: eventTick < curMin { + curMin <- eventTick + } else: {} + curMin + } + } + print: 4 + :runUntil { + res <- 0 + tick <- 1 + events <- [ + endOfLives: 0 + ] + print: 6 + gameState <- #[0 0] + while: {tick < runUntil} do: { + print: 7 + tick <- events nextTick + print: 5 + res <- executeTick: tick events gameState + print: 13 + events <- res value + gameState <- res tail + } + } + } + + step <- :myState world { + print: 1 + ticker <- makeTicker: 10 10 + print: 2 + ticker: 1000 + print: 3 + + #[0 0] + } + + main <- :initWorld ghostCode{ + #[0 step] + } +} +