Crème
Anthony Chan
Cheryl Lau
James Leslie
Joshua Mackler
What is Crème?
Cards Really Excite ME!
Language to specify card games
Automatic GUI generation
Why create Crème?
When using less domain specific
languages (Java, C++)
Writing
card games takes time
GUI tedious
User interaction troublesome
Most card games share common ground,
Crème is the Solution
Everyone loves card games
Why use Crème
Quick development of card games with
focus on
Cards
Layout
Rules
Compact, Concise, Variable, Intuitive
A look at Crème
Defining Cards
Standard Deck
Deck.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);
“
> “ and “ . “
Colorizing feature – last dimension
A look at Crème
Defining Layout
Creating a Grid and dealing cards
Grid=[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,*);
Grid[x,y](visible,
non visible)
A look at Crème
Defining Rules
Descending cards
Grid[0-6,1].rules ~ place(-1,*,*);
Conditionals
Grid[0-6,1].rules ~ if isEmpty then
{ place[Three,*,*]; else
{ place(+1,*,*); }
}
Take, Place, Action
A deeper look
at Crème
Lexing, Parsing, Tree
Walking
A deeper look at Crème
Deck, Grid, Rules, GUI
Crème in Action
Testing Crème
Individual Module testing
Incremental Integration testing
Used console print statements instead of
intermediate file format
Tested each program for correct behavior
Lessons Learned from Crème
Dedicate a lot of time into choosing a cool
name
Get an early start and communicate
regularly
Divide and Conquer
Make deadlines and enforce them
Don’t go to Vegas the weekend before PLT
is due
© Copyright 2026 Paperzz