CrèmeWhat is Crème?Why create Crème?Why use CrèmeA look at CrèmeSlide 6Slide 7A deeper look at CrèmeSlide 9Slide 10Crème in ActionTesting CrèmeLessons Learned from CrèmeCrèmeAnthony ChanCheryl LauJames LeslieJoshua MacklerWhat is Crème?Cards Really Excite ME!Language to specify card gamesAutomatic GUI generationWhy create Crème?When using less domain specific languages (Java, C++)Writing card games takes timeGUI tediousUser interaction troublesomeMost card games share common ground, Crème is the SolutionEveryone loves card gamesWhy use Crème Quick development of card games with focus onCardsLayoutRulesCompact, Concise, Variable, IntuitiveDefining CardsStandard Deck“ > “ and “ . “Colorizing feature – last dimensionA look at CrèmeDeck.Ranksys.1=(King>Queen>Jack>Ten>Nine>Eight>Seven>Six>Five>Four>Three>Two>Ace);Deck.Ranksys.2=(SPADES>HEARTS>CLUBS>DIAMONDS);Deck.Ranksys.3=(BLACK.RED);Defining LayoutCreating a Grid and dealing cardsGrid[x,y](visible, non visible)A look at CrèmeGrid=[7,2];Deck.deal ~ Grid[0-2,1](0,1);Deck.deal ~ Grid[0-6,0-1](2,0);Deck.deal ~ Grid[0,0](0,*);Defining Rules Descending cards Conditionals Take, Place, ActionA look at CrèmeGrid[0-6,1].rules ~ place(-1,*,*);Grid[0-6,1].rules ~ if isEmpty then { place[Three,*,*]; else { place(+1,*,*); }}A deeper lookat CrèmeLexing, Parsing, Tree WalkingA deeper look at CrèmeDeck, Grid, Rules, GUICrème in ActionTesting CrèmeIndividual Module testingIncremental Integration testingUsed console print statements instead of intermediate file formatTested each program for correct behaviorLessons Learned from CrèmeDedicate a lot of time into choosing a cool nameGet an early start and communicate regularlyDivide and ConquerMake deadlines and enforce themDon’t go to Vegas the weekend before PLT is
View Full Document