\documentclass{standalone} \usepackage{luamplib} \begin{document} \begin{mplibcode} vardef dice(expr pip_count, pip_color) = save d,r,p, ul, ur, lr, ll; r = 1/8; path d; d = for i=0 upto 3: quartercircle scaled 3 shifted (15,15) rotated 90i -- endfor cycle; picture p; p = image( fill fullcircle scaled 6 withcolor pip_color; draw fullcircle scaled 6; ); pair ul, ur, ll, lr; ul = 1/5[ulcorner d, lrcorner d]; ur = 1/5[urcorner d, llcorner d]; ll = 4/5[urcorner d, llcorner d]; lr = 4/5[ulcorner d, lrcorner d]; image( fill d withcolor (1, 0.96, 0.8); draw d; if odd(pip_count): draw p shifted center d; fi; if pip_count > 1: draw p shifted ul; draw p shifted lr; fi; if pip_count > 3: draw p shifted ur; draw p shifted ll; fi; if pip_count = 6: draw p shifted 1/2[ul,ll]; draw p shifted 1/2[ur,lr]; fi ) enddef; beginfig(1); for i=0 upto 4: draw dice(1+floor uniformdeviate 6, if odd i: red else: blue fi) rotated (2 normaldeviate) shifted (36i,0); endfor endfig; \end{mplibcode} \end{document}