a language for designing board games Lauren Pully (Project Manager) - - PowerPoint PPT Presentation

a language for designing board games
SMART_READER_LITE
LIVE PREVIEW

a language for designing board games Lauren Pully (Project Manager) - - PowerPoint PPT Presentation

a language for designing board games Lauren Pully (Project Manager) Jesse Bentert (Tools & Language Guru) John Graham (System Architect) Daniel Wilkey (System Integrator) Yipeng Huang (Tester & Validator) Overview 1 John Graham


slide-1
SLIDE 1

Lauren Pully (Project Manager) Jesse Bentert (Tools & Language Guru) John Graham (System Architect) Daniel Wilkey (System Integrator) Yipeng Huang (Tester & Validator)

a language for designing board games

slide-2
SLIDE 2

Overview John Graham (System Architect)

1 2 3 4 5

Outline of a ROLL Program Jesse Bentert (Tools & Language Guru) ROLL Syntax Daniel Wilkey (System Integrator) Compiler Architecture & Testing Yipeng Huang (Tester & Validator) Conclusion & Demo Lauren Pully (Project Manager)

slide-3
SLIDE 3

ROLL

A language to design and play board games

slide-4
SLIDE 4

Flexible Dynamic Extendable

Features of ROLL

slide-5
SLIDE 5

Simple

Eliminates Overhead Code is easy to understand

slide-6
SLIDE 6

Overview John Graham (System Architect)

1 2 3 4 5

Outline of a ROLL Program Jesse Bentert (Tools & Language Guru) ROLL Syntax Daniel Wilkey (System Integrator) Compiler Architecture & Testing Yipeng Huang (Tester & Validator) Conclusion & Demo Lauren Pully (Project Manager)

slide-7
SLIDE 7

Game ¡Chutes ¡{ Players ¡{ NumPieces StartOn setupPlayers() ¡{ NumPlayers Player ¡Names } } Board ¡{ ¡ NumTiles make ¡Tile() landsOn() ¡{ Jump } goalCheck() ¡{ declareWinner } } Dice ¡{ make ¡Die() roll() ¡{ move moveReverse } } }

Outline of a ROLL program

slide-8
SLIDE 8

The Players Block

Game ¡Chutes ¡{ Players ¡{ NumPieces StartOn setupPlayers() ¡{ NumPlayers Player ¡Names } } Board ¡{ ¡ NumTiles make ¡Tile() landsOn() ¡{ Jump } goalCheck() ¡{ declareWinner } } Dice ¡{ make ¡Die() roll() ¡{ move moveReverse } } }

Players ¡{ NumPieces StartOn setupPlayers() ¡{ NumPlayers Player ¡Names } }

slide-9
SLIDE 9

The Board Block

Game ¡Chutes ¡{ Players ¡{ NumPieces StartOn setupPlayers() ¡{ NumPlayers Player ¡Names } } Board ¡{ ¡ NumTiles make ¡Tile() landsOn() ¡{ Jump } goalCheck() ¡{ declareWinner } } Dice ¡{ make ¡Die() roll() ¡{ move moveReverse } } }

Board ¡{ ¡ NumTiles make ¡Tile() landsOn() ¡{ Jump } goalCheck() ¡{ declareWinner } }

slide-10
SLIDE 10

Game ¡Chutes ¡{ Players ¡{ NumPieces StartOn setupPlayers() ¡{ NumPlayers Player ¡Names } } Board ¡{ ¡ NumTiles make ¡Tile() landsOn() ¡{ Jump } goalCheck() ¡{ declareWinner } } Dice ¡{ make ¡Die() roll() ¡{ move moveReverse } } }

The Dice Block

Dice ¡{ make ¡Die(faces: ¡6); roll() ¡{ move moveReverse } }

slide-11
SLIDE 11

Overview John Graham (System Architect)

1 2 3 4 5

Outline of a ROLL Program Jesse Bentert (Tools & Language Guru) ROLL Syntax Daniel Wilkey (System Integrator) Compiler Architecture & Testing Yipeng Huang (Tester & Validator) Conclusion & Demo Lauren Pully (Project Manager)

slide-12
SLIDE 12

Players ¡{ GUI ¡= ¡1; MaxPlayers ¡= ¡6; MinPlayers ¡= ¡2; NumPieces ¡= ¡1; StartOn ¡= ¡{0,0,0,0,0,0}; define ¡setupPlayers() ¡{ print("How ¡many ¡people ¡are ¡playing ¡this ¡game?"); promptRange(NumPlayers, ¡MinPlayers, ¡MaxPlayers); for(int ¡i ¡: ¡{1 ¡~ ¡NumPlayers}) ¡{ print("What ¡is ¡player" ¡| ¡i ¡| ¡"'s ¡name?"); promptText(PlayerList[i-­‑1].name); } } }

GUI ¡= ¡1;

slide-13
SLIDE 13

Board ¡{ ¡ NumTiles ¡= ¡10; make ¡Tile(id: ¡1, ¡next: ¡2, ¡prev: ¡0, ¡accessible:{5~9}, ¡landsOn: ¡ladder); make ¡Tile(id: ¡3, ¡next: ¡4, ¡prev: ¡2, ¡accessible:{8}, ¡landsOn: ¡ladder); make ¡Tile(id: ¡6, ¡next: ¡7, ¡prev: ¡5, ¡accessible:{0}, ¡landsOn: ¡chute); make ¡Tile(id: ¡7, ¡next: ¡8, ¡prev: ¡6, ¡accessible:{4}, ¡landsOn: ¡chute); function ¡ladder ¡= ¡define ¡landsOn(int ¡playerID, ¡int ¡pieceID, ¡int ¡tileID) ¡{ print("Hooray! ¡" ¡| ¡PlayerList[playerID].name ¡| ¡"'s ¡piece ¡number ¡" ¡| ¡pieceID ¡| ¡" ¡ went ¡up ¡the ¡ladder ¡to ¡tile ¡" ¡| ¡TileList[tileID].accessible[0]); jump(playerID, ¡pieceID, ¡TileList[tileID].accessible[0]); } …

make ¡Tile(id: ¡1, ¡next: ¡2, ¡ prev: ¡0, ¡accessible:{5~9}, ¡ landsOn: ¡ladder);

slide-14
SLIDE 14

Board ¡{ ¡ NumTiles ¡= ¡10; make ¡Tile(id: ¡1, ¡next: ¡2, ¡prev: ¡0, ¡accessible:{5~9}, ¡landsOn: ¡ladder); make ¡Tile(id: ¡3, ¡next: ¡4, ¡prev: ¡2, ¡accessible:{8}, ¡landsOn: ¡ladder); make ¡Tile(id: ¡6, ¡next: ¡7, ¡prev: ¡5, ¡accessible:{0}, ¡landsOn: ¡chute); make ¡Tile(id: ¡7, ¡next: ¡8, ¡prev: ¡6, ¡accessible:{4}, ¡landsOn: ¡chute); function ¡ladder ¡= ¡define ¡landsOn(int ¡playerID, ¡int ¡pieceID, ¡int ¡tileID) ¡{ print("Hooray! ¡" ¡| ¡PlayerList[playerID].name ¡| ¡"'s ¡piece ¡number ¡" ¡| ¡pieceID ¡| ¡" ¡ went ¡up ¡the ¡ladder ¡to ¡tile ¡" ¡| ¡TileList[tileID].accessible[0]); jump(playerID, ¡pieceID, ¡TileList[tileID].accessible[0]); } …

make ¡Tile(id: ¡1, ¡next: ¡2, ¡ prev: ¡0, ¡accessible:{5~9}, ¡ landsOn: ¡ladder);

slide-15
SLIDE 15

Board ¡{ ¡ NumTiles ¡= ¡10; make ¡Tile(id: ¡1, ¡next: ¡2, ¡prev: ¡0, ¡accessible:{5~9}, ¡landsOn: ¡ladder); make ¡Tile(id: ¡3, ¡next: ¡4, ¡prev: ¡2, ¡accessible:{8}, ¡landsOn: ¡ladder); make ¡Tile(id: ¡6, ¡next: ¡7, ¡prev: ¡5, ¡accessible:{0}, ¡landsOn: ¡chute); make ¡Tile(id: ¡7, ¡next: ¡8, ¡prev: ¡6, ¡accessible:{4}, ¡landsOn: ¡chute); function ¡ladder ¡= ¡define ¡landsOn(int ¡playerID, ¡int ¡pieceID, ¡int ¡tileID) ¡{ print("Hooray! ¡" ¡| ¡PlayerList[playerID].name ¡| ¡"'s ¡piece ¡number ¡" ¡| ¡pieceID ¡| ¡" ¡ went ¡up ¡the ¡ladder ¡to ¡tile ¡" ¡| ¡TileList[tileID].accessible[0]); jump(playerID, ¡pieceID, ¡TileList[tileID].accessible[0]); } …

make ¡Tile(id: ¡1, ¡next: ¡2, ¡ prev: ¡0, ¡accessible:{5~9}, ¡ landsOn: ¡ladder);

slide-16
SLIDE 16

Board ¡{ ¡ NumTiles ¡= ¡10; make ¡Tile(id: ¡1, ¡next: ¡2, ¡prev: ¡0, ¡accessible:{5~9}, ¡landsOn: ¡ladder); make ¡Tile(id: ¡3, ¡next: ¡4, ¡prev: ¡2, ¡accessible:{8}, ¡landsOn: ¡ladder); make ¡Tile(id: ¡6, ¡next: ¡7, ¡prev: ¡5, ¡accessible:{0}, ¡landsOn: ¡chute); make ¡Tile(id: ¡7, ¡next: ¡8, ¡prev: ¡6, ¡accessible:{4}, ¡landsOn: ¡chute); function ¡ladder ¡= ¡define ¡landsOn(int ¡playerID, ¡int ¡pieceID, ¡int ¡tileID) ¡{ print("Hooray! ¡" ¡| ¡PlayerList[playerID].name ¡| ¡"'s ¡piece ¡number ¡" ¡| ¡pieceID ¡| ¡" ¡ went ¡up ¡the ¡ladder ¡to ¡tile ¡" ¡| ¡TileList[tileID].accessible[0]); jump(playerID, ¡pieceID, ¡TileList[tileID].accessible[0]); } …

jump(playerID, ¡pieceID, ¡ TileList[tileID].accessible [0]);

slide-17
SLIDE 17

Overview John Graham (System Architect)

1 2 3 4 5

Outline of a ROLL Program Jesse Bentert (Tools & Language Guru) ROLL Syntax Daniel Wilkey (System Integrator) Compiler Architecture & Testing Yipeng Huang (Tester & Validator) Conclusion & Demo Lauren Pully (Project Manager)

slide-18
SLIDE 18

Flex Yacc

%{ #define YYSTYPE char* #include <stdio.h> #include "y.tab.h" #include <stdlib.h> #include <string.h> char *makeString(char *temp); char *literalToString(char *literal); %}

roll.l

%{ #include <ctype.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #define YYSTYPE char* #define null 0 void makeFile(char *fname, char *front, char *middle, char *back);

roll.y

Game Demo { Players { GUI = 1; MaxPlayers = 6; MinPlayers = 2; NumPieces = 1; StartOn = {0,0,0,0,0,0}; define setupPlayers() { print("How many people are playing this game?");

chutes.r

  • ll
public class PlayersImplementation extends Players{ public PlayersImplementation(Window gui){ super(gui); } public void\

Global Variables .java

public class PlayersImplementation extends Players{ public PlayersImplementation(Window gui){ super(gui); } public void\

Players Implementa tion.java

public class PlayersImplementation extends Players{ public PlayersImplementation(Window gui){ super(gui); } public void\

Board Implementa tion.java

public class PlayersImplementation extends Players{ public PlayersImplementation(Window gui){ super(gui); } public void\

Dice Implementa tion.java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Board .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Players .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Dice .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

NextTurn Listener .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Board Compone nt .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Player .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Die .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Game .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Tile .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Piece .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Deck .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Driver .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Window .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Test .java

public class PlayersImplementation extends Players{ public PlayersImplementation (Window gui){ super(gui); }

Card .java

Compiler Architecture

Front End Back End

slide-19
SLIDE 19

Flex Yacc

%{ #define YYSTYPE char* #include <stdio.h> #include "y.tab.h" #include <stdlib.h> #include <string.h> char *makeString (char *temp); char *literalToString (char *literal); %}

roll.l

%{ #include <ctype.h> #include <string.h> #include <stdio.h> #include <stdlib.h> #define YYSTYPE char* #define null 0 void makeFile(char *fname, char *front, char *middle, char *back);

roll.y

Game Demo { Players { GUI = 1; MaxPlayers = 6; MinPlayers = 2; NumPieces = 1; StartOn = {0,0,0,0,0,0}; define setupPlayers () { print("How many people are playing this game?");

chutes .roll

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Global Variables .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Players Implement ation.java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Board Implement ation.java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Dice Implement ation.java

The Compiler Front End

slide-20
SLIDE 20

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Global Variables .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Players Implement ation.java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Board Implement ation.java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Dice Implement ation.java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Board .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Players .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Dice .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

NextTurn Listener .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Board Component .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Player .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Die .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Game .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Tile .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Piece .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Deck .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Driver .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Window .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Test .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Card .java

Generalized Game Framework Overrides

The Compiler Back End

slide-21
SLIDE 21

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Global Variables .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Players Implement ation.java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); } public void\

Board Implement ation.java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Board .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Players .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Dice .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

NextTurn Listener .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Board Component .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Player .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Die .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Game .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Tile .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Piece .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Deck .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Driver .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Window .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Test .java

public class PlayersImplementa tion extends Players{ public PlayersImplementa tion(Window gui){ super (gui); }

Card .java

Generalized Game Framework Overrides

The Compiler Back End

slide-22
SLIDE 22

Overview John Graham (System Architect)

1 2 3 4 5

Outline of a ROLL Program Jesse Bentert (Tools & Language Guru) ROLL Syntax Daniel Wilkey (System Integrator) Compiler Architecture & Testing Yipeng Huang (Tester & Validator) Conclusion & Demo Lauren Pully (Project Manager)

slide-23
SLIDE 23

Environment and Tools Flex + Bison Yacc

slide-24
SLIDE 24

Conclusions

  • Learned how to make a compiler using

Flex and Bison Yacc

  • Project management and planning
  • Group collaborations
slide-25
SLIDE 25