Cardigan Card Game Development Joshua Lopez (Team Leader) Muzi Gao - - PowerPoint PPT Presentation

cardigan
SMART_READER_LITE
LIVE PREVIEW

Cardigan Card Game Development Joshua Lopez (Team Leader) Muzi Gao - - PowerPoint PPT Presentation

Cardigan Card Game Development Joshua Lopez (Team Leader) Muzi Gao * Miriam Melnick Introduction What is Cardigan? Here's a hint, it's not a sweater. Card game development & implementation language Built in data types which


slide-1
SLIDE 1

Cardigan

Card Game Development

Joshua Lopez (Team Leader) Muzi Gao * Miriam Melnick

slide-2
SLIDE 2

Introduction

What is Cardigan? Here's a hint, it's not a sweater.

  • Card game development & implementation

language

  • Built in data types which support card game

elements (cards, players, etc.)

  • Control structures for game play

(rules, turns, winning conditions, etc.)

slide-3
SLIDE 3

Motivation

  • Developing card games is tedious
  • Materials are expensive
  • Physical iteration takes time
slide-4
SLIDE 4

Motivation

Developing in code allows

  • no cost for materials
  • easy modification
  • fast iteration
  • better development
slide-5
SLIDE 5

Tutorial

WAR!

slide-6
SLIDE 6

scanner.mll

Lexical Analysis converts source file to tokens

suits = |hearts, clubs, diamonds, spades| ranks = ["a","k", "q", "j", "10", "9", "8", "7",\ "6", "5", "4", "3", "2"] PLAY()={ deck = cartesian(suits, ranks) player = {name:"", score:0, hand:[]} ID ASSIGN LBRAC ID COMMA ID COMMA ID COMMA ID RBRAC EOL ID ASSIGN LBRAC STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING RBRAC EOL ID LPAREN RPAREN ASSIGN LCURL ID ASSIGN ID LPAREN ID COMMA ID RPAREN EOL ID ASSIGN LCURL ID COLON STRING COMMA ID COLON INT COMMA ID COLON LBRAC RBRAC RCURL EOL ...

slide-7
SLIDE 7

Syntactic analysis creates an abstract syntax tree

parser.mly + ast.mli

ID ASSIGN LBRAC ID COMMA ID COMMA ID COMMA ID RBRAC EOL ID ASSIGN LBRAC STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING COMMA STRING RBRAC EOL ID LPAREN RPAREN ASSIGN LCURL ID ASSIGN ID LPAREN ID COMMA ID RPAREN EOL ID ASSIGN LCURL ID COLON STRING COMMA ID COLON INT COMMA ID COLON LBRAC RBRAC RCURL EOL ...

program = = = ID {} () ID | | ID [ ]

slide-8
SLIDE 8

cardigan.ml

Compiling an AST in 3 stages

  • Separator

○ Breaks off subtrees

  • Semantic analysis

○ Keeps track of types in a symbol table ○ Checks each subtree to make sure types are valid

  • Code generation

○ Creates Java code from templates

slide-9
SLIDE 9

Implementation

Tokens Parser Syntactic Analysis Scanner Lexical Analysis

AST Definitions

  • A. S. T.

Semantic Analysis Code Generation

Cardigan Source

Java Source Javac Java Compilation JVM Execution Java Bytecode

hello cardigan

Translator

Standard Library

slide-10
SLIDE 10

Lessons Learned

  • Newline characters are not good line

delimiters

  • Type inference is hard
  • Ocaml is hard to debug
  • It's possible to start too early
  • Work with "real" code as well as tests the

whole time