D4      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  ,-./012 ,-./012 .10/-,2,-.10//01234  !"#$34 3$ !"#4345678567857685766789$invisible colors (in RGB) of bitmap :!width, height and data of bitmap ;color in RGB format <a bidimensional point in space =&position, size and name of the window 9:;<==<;:99:;<=>?@ABCDEFGHIJKLMNOPQRSTUV>?@ABCDEFGHIJKLMNOPQRSTUV>?ABCDEFGHIJLKMNOPQRSTUV@>?@ABCDEFGHIJKLMNOPQRSTUV WXYWXYXYWWXYIZ[\]^_`abcd     efghijklmnopqrstuvwxyz{|}~ 'Z[\]^_`abcdefghijklmnopqrstuvwxyz{|}~'defghjiklstu]_^`baZ\[vyzwc{|}~nopqrmx'Z\[[\]_^^_`baabcdefghijklmnopqrstuvwxyz{|}~ #!"#$%&'()*+, h-6Game flags: mapDrawing, objectsDrawing, objectsMoving A game action has the type IOGame t s u v a, where t, s, u and v G are as for Game and a is the type returned by each action of the game  (such as the Int for IO Int)). The name IOGame was chosen to remind E that each action deals with a Game, but an IO operation can also be B performed between game actions (such as the reading of a file or $ printing something in the prompt). .A game has the type  Game t s u v , where . t is the type of the game special attributes 0 s is the type of the object special attributes * u is the type of the game levels (state) j v is the type of the map tile special attribute, in case we use a Tile Map as the background of our game A game consists of: /0a map (background) 1initial game state 2initial game flags 3some object managers 4 some texts 5a quadric thing 6a config for the main window 7a game attribute 8some pictures 9:;<=>?@ABCDEFGHLLL DGiven a fungen Game and IOGame, generate an opengl display handler. I&Run one update and display an IOGame. J* %&'()*+./01*.10/ +%&'()* K   !"#$%&'()*+./013456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~L !"#$%&'()(*+,-,.,/,0,1,2,3,4565758595:5;5*<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~             !"#$%&'()*+,-./0 1 2 3 4 5 6 7 8 9 : ; < = >  ? @ A B C D E F G H I J K L M N O P Q R S T U V W XY Z[ FunGEn-0.3Graphics.UI.Fungen.InputGraphics.UI.Fungen.UserInputGraphics.UI.Fungen.TextGraphics.UI.Fungen.TimerGraphics.UI.Fungen.TypesGraphics.UI.Fungen.UtilGraphics.UI.Fungen.LoaderGraphics.UI.Fungen.ObjectsGraphics.UI.Fungen.MapGraphics.UI.Fungen.GameGraphics.UI.Fungen.DisplayGraphics.UI.Fungen.InitGraphics.UI.Fungen GLUT-2.2.2.0!Graphics.UI.GLUT.Callbacks.WindowKeyF1KeyF2KeyF3KeyF4KeyF5KeyF6KeyF7KeyF8KeyF9KeyF10KeyF11KeyF12KeyLeftKeyUpKeyRightKeyDown KeyPageUp KeyPageDownKeyHomeKeyEnd KeyInsert KeyNumLockKeyBegin KeyDelete SpecialKeyChar MouseButtonKeyGraphics.UI.GLUT.Fonts Fixed8By13 Fixed9By15 TimesRoman10 TimesRoman24 Helvetica10 Helvetica12 Helvetica18 BitmapFontGraphics.UI.GLUT.Types LeftButton MiddleButton RightButtonWheelUp WheelDownAdditionalButtonStillDownHandler KeyBinderKeyEventRelease StillDownPress initUserInputText putGameText RefreshTypeTimerIdle setRefreshInvList AwbfBitmap ColorList3Point2D WindowConfig texCoord2vertex3 bindTexturetexStufftoRadrandInt randFloat randDouble shiftLeft toDecimalpow2toBinarymake0ord2 dropGLsizeiaddNoInvisibilityracMod matrixToList matrixSize inv2color3pathAndInv2color3Listpoint2DtoVertex3isEmptywhenunlessFilePictureList loadBitmaploadBitmapListFillModeUnfilledFilled ObjectPictureBasicTex PrimitiveCirclePolyg ObjectManager GameObjectgetGameObjectIdgetGameObjectNamegetGameObjectManagerNamegetGameObjectAsleepgetGameObjectSizegetGameObjectPositiongetGameObjectSpeedgetGameObjectAttributeupdateObjectPictureupdateObjectAsleepupdateObjectSizeupdateObjectPositionupdateObjectSpeedupdateObjectAttributegetObjectManagerNamegetObjectManagerCountergetObjectManagerObjectsobject objectGroupaddObjectsToManagerdrawGameObjectsdrawGameObjectfindObjectFromIdsearchObjectManagersearchGameObject updateObjectmoveGameObjectsdestroyGameObjectGameMap TileMatrixTile getMapSize isTileMapgetTileMapTileMatrixgetTileMapTileSizegetTileMapScrollgetTileMapSizegetTilePictureIndexgetTileBlockedgetTileMoveCostgetTileSpecialAttribute getCurrentMapupdateCurrentMap isMultiMapupdateCurrentIndexcolorMap textureMaptileMapmultiMapclearGameScreen drawGameMapIOGameGame runIOGame runIOGameMliftIOtoIOGameliftIOtoIOGame' getGameState setGameState getGameFlags setGameFlagsgetObjectManagerssetObjectManagersgetGameAttributesetGameAttribute createGamefunExitdrawMapgetTileFromWindowPositiongetTileFromIndex clearScreensetCurrentMapIndexenableGameFlagsdisableGameFlagsenableMapDrawingdisableMapDrawingenableObjectsDrawingdisableObjectsDrawingenableObjectsMovingdisableObjectsMovingdrawAllObjects drawObjectmoveAllObjectsdestroyObjects destroyObjectgetObjectsFromGroupaddObjectsToGroupaddObjectsToNewGroupfindObjectManager findObject getObjectNamegetObjectGroupNamegetObjectAsleep getObjectSizegetObjectPositiongetObjectSpeedgetObjectAttributesetObjectAsleepsetObjectPositionsetObjectSpeedsetObjectCurrentPicturesetObjectAttribute replaceObject reverseXSpeed reverseYSpeedobjectTopMapCollisionobjectTopMapFutureCollisionobjectBottomMapCollisionobjectBottomMapFutureCollisionobjectRightMapCollisionobjectRightMapFutureCollisionobjectLeftMapCollisionobjectLeftMapFutureCollisionobjectsCollisionobjectsFutureCollisionobjectListObjectCollisionobjectListObjectFutureCollisionpointsObjectCollisionpointsObjectListCollision printOnPrompt printOnScreen printText randomInt randomFloat randomDoubleshowFPSwaitdisplay InputConfig funBindingfunInit BindingTableKeyTable newKeyTablegetKeysinsertIntoKeyTabledeleteFromKeyTablenewBindingTablebindKey execAction stillDowntimer toDecimalAux racModPos racModNeg inv2color3AuxBmpListbinAux loadBmListAuxgetWH getBmDataaddInvisiblity makeColorListmakeColorListAuxGameObjectPictureBTx GamePrimitiveCPOMmngName mngCounter mngObjectsGOobjIdobjNameobjManagerName objPicture objAsleepobjSize objPositionobjSpeed objAttributegetGameObjectPictureupdateObjectManagerObjects createPicturefindSizeobjectGroupAuxaddObjectsToManagerAuxadjustNewObjectsdrawGameObjectListfindObjectFromIdAux searchFromIdsearchGameObjectAuxupdateObjectAuxmoveSingleObjectdestroyGameObjectAuxMultiMapTileMap TextureMapColorMapTileLine newMapListmapListContainsMultiMapmatrixOk matrixOkAuxdrawTextureMap drawTileMapdrawTileMapLine GameFlagsIOGgameMap gameState gameFlags objManagerstextList quadricObj windowConfig gameAttribute pictureListfpsInfobindSTunitSTgetMap getRealMap setRealMap getTextList setTextList getQuadricgetPictureListgetWindowConfig getFpsInfo setFpsInfo loadPicturesgetElapsedTimewaitAux displayIOGame userBinding basicInit