Top Banner
Writing a Tile-Matching Game FP Style Hakim Cassimally @osfameron, @lambdamcr
70

Writing a Tile-Matching Game - FP Style

Jan 21, 2018

Download

Software

osfameron
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Writing a Tile-Matching Game - FP Style

Writing a Tile-Matching Game

FP StyleHakim Cassimally

@osfameron, @lambdamcr

Page 2: Writing a Tile-Matching Game - FP Style
Page 3: Writing a Tile-Matching Game - FP Style
Page 4: Writing a Tile-Matching Game - FP Style

(({:colour :red} {:colour :red} {:colour :red} {:colour :blue} {:colour :blue}) ({:colour :green} {:colour :green} {:colour :red} {:colour :red} {:colour :blue})({:colour :red} {:colour :green} {:colour:blue} {:colour :blue} {:colour :blue})({:colour :green} {:colour :green} {:colour :green} {:colour :green} {:colour :blue})({:colour :red} {:colour :green} {:colour :green} {:colour :red} {:colour :blue}))

Page 5: Writing a Tile-Matching Game - FP Style
Page 6: Writing a Tile-Matching Game - FP Style

{:colour :blue:type :candy}

Page 7: Writing a Tile-Matching Game - FP Style

Match 3

Page 8: Writing a Tile-Matching Game - FP Style

(map (partial partition-by :colour))

Page 9: Writing a Tile-Matching Game - FP Style

(map (partial partition-by :colour))

Page 10: Writing a Tile-Matching Game - FP Style

(map match)(defn match [groups](filter#(>= (count %) 3)groups))

Page 11: Writing a Tile-Matching Game - FP Style

(map match)(defn match [groups](filter#(>= (count %) 3)groups))

Page 12: Writing a Tile-Matching Game - FP Style

(filter seq)

Page 13: Writing a Tile-Matching Game - FP Style

Er...

Page 14: Writing a Tile-Matching Game - FP Style
Page 15: Writing a Tile-Matching Game - FP Style
Page 16: Writing a Tile-Matching Game - FP Style
Page 17: Writing a Tile-Matching Game - FP Style
Page 18: Writing a Tile-Matching Game - FP Style
Page 19: Writing a Tile-Matching Game - FP Style
Page 20: Writing a Tile-Matching Game - FP Style
Page 21: Writing a Tile-Matching Game - FP Style
Page 22: Writing a Tile-Matching Game - FP Style

[0 0][

Page 23: Writing a Tile-Matching Game - FP Style

[0 0][ [1 0]

Page 24: Writing a Tile-Matching Game - FP Style

[0 0][ [1 0] [2 0]

Page 25: Writing a Tile-Matching Game - FP Style

[0 0][ [1 0] [2 0] [3 0]

Page 26: Writing a Tile-Matching Game - FP Style

[0 0][ [1 0] [2 0] [3 0] [4 0] ]

zip(defn zip [list1 list2](map vector list1 list2))

Page 27: Writing a Tile-Matching Game - FP Style

(defn zip-over-grid [list1 list2](map zip list1 list2))

Page 28: Writing a Tile-Matching Game - FP Style

(zip )

Page 29: Writing a Tile-Matching Game - FP Style
Page 30: Writing a Tile-Matching Game - FP Style

(zip )

Page 31: Writing a Tile-Matching Game - FP Style
Page 32: Writing a Tile-Matching Game - FP Style

(zip )

Page 33: Writing a Tile-Matching Game - FP Style
Page 34: Writing a Tile-Matching Game - FP Style

(zip )

Page 35: Writing a Tile-Matching Game - FP Style
Page 36: Writing a Tile-Matching Game - FP Style
Page 37: Writing a Tile-Matching Game - FP Style

(repeat (range)) (map repeat (range))

...

...

...

...

...

...

...

...

...

...... ...

Page 38: Writing a Tile-Matching Game - FP Style

...

...

...

......

...

+

Page 39: Writing a Tile-Matching Game - FP Style

=

Page 40: Writing a Tile-Matching Game - FP Style
Page 41: Writing a Tile-Matching Game - FP Style
Page 42: Writing a Tile-Matching Game - FP Style

(defn transpose [m](apply map vector m))

Page 43: Writing a Tile-Matching Game - FP Style
Page 44: Writing a Tile-Matching Game - FP Style
Page 45: Writing a Tile-Matching Game - FP Style
Page 46: Writing a Tile-Matching Game - FP Style
Page 47: Writing a Tile-Matching Game - FP Style

(defn points [runs](->> runs

(map count)(apply +)))

= 19

Page 48: Writing a Tile-Matching Game - FP Style
Page 49: Writing a Tile-Matching Game - FP Style

Filling

Page 50: Writing a Tile-Matching Game - FP Style

Filling

Page 51: Writing a Tile-Matching Game - FP Style

Filling

Page 52: Writing a Tile-Matching Game - FP Style

Filling

er....?

Page 53: Writing a Tile-Matching Game - FP Style

Filling

Page 54: Writing a Tile-Matching Game - FP Style

Filling

Page 55: Writing a Tile-Matching Game - FP Style

Filling

Page 56: Writing a Tile-Matching Game - FP Style

Filling

Page 57: Writing a Tile-Matching Game - FP Style

Filling

Page 58: Writing a Tile-Matching Game - FP Style

Filling

Page 59: Writing a Tile-Matching Game - FP Style

Filling

Page 60: Writing a Tile-Matching Game - FP Style

State or Change?

Page 61: Writing a Tile-Matching Game - FP Style

State or Change?

Page 62: Writing a Tile-Matching Game - FP Style

State or Change?

{:colour :blue:pos [0 1]:to [1 1]:animate :fall}

Page 63: Writing a Tile-Matching Game - FP Style

Display

User Input

Check Matches

Remove Matches

Adjust Score

Fall/Fill (animate)

{:score 0}:grid

}

Page 64: Writing a Tile-Matching Game - FP Style

{:score 0}:grid

}

Display

User Input

Check Matches

Remove Matches

Adjust Score

Fall/Fill (animate)

Page 65: Writing a Tile-Matching Game - FP Style

Display

User Input

Check Matches

Remove Matches

Adjust Score

Fall/Fill (animate)

{:score 0}:grid

:matches}

Page 66: Writing a Tile-Matching Game - FP Style

Display

User Input

Check Matches

Remove Matches

Adjust Score

Fall/Fill (animate)

{:score 0}:grid

:matches}

Page 67: Writing a Tile-Matching Game - FP Style

Display

User Input

Check Matches

Remove Matches

Adjust Score

Fall/Fill (animate)

{:score 5}:grid

}

Page 68: Writing a Tile-Matching Game - FP Style

Display

User Input

Check Matches

Remove Matches

Adjust Score

Fall/Fill (animate)

{:score 5}:grid

}

Page 69: Writing a Tile-Matching Game - FP Style

Display

User Input

Check Matches

Remove Matches

Adjust Score

Fall/Fill (animate)

{:score 5}:grid

}

Page 70: Writing a Tile-Matching Game - FP Style

THANK YOU!Any Questions?