The DirectedEdges, VertexLabeling, and SelfLoopStyle options can be dropped.
The edges can be constructed with DirectedEdge instead of Rule.
The option VertexCoordinateRules is changed to VertexCoordinates, and VertexRenderingFunction is changed to VertexShapeFunction.
The handling of self-loops is incorporated into the EdgeShapeFunction (formerly EdgeRenderingFunction).
Here is the full code:
Successor[{n_Integer, d_Integer}] := If[d == 1, {1, (n + 1)}, {(n + 1), (d - 1)}];
display[{n_, d_}] :=
Style[Which[n == d == 6, "\[DescendingEllipsis]", n == 6,
"\[CenterEllipsis]", d == 6, "\[VerticalEllipsis]", True,
ToString@Row[{n, d}, "/"]], 20]
edges = (DeleteCases[#1, Null] &)[
Flatten[Table[{{n, d} \[DirectedEdge] {n, d},
If[(n <= 7 && d <= 7 && n + d <= 6 && n < 6), {n, d} ->
Successor[{n, d}]]}, {d, 1, 6}, {n, 1, 6}], 3]]
Graph[edges,
VertexCoordinates ->
Flatten[Table[{n, d} -> {n, 6 - d}, {d, 1, 6}, {n, 1, 6}], 1],
VertexShapeFunction -> (If[#2[[1]] < 6 && #2[[2]] < 6, {EdgeForm[
None], Hue[.8 + .09 Plus @@ #2],
Rectangle[#1 - {0.33, .26}, #1 + {0.33, .31},
RoundingRadius -> .11], Black, Text[display@#2, #1]},
Text[display@#2, #1]] &),
EdgeShapeFunction -> (If[
MatchQ[#2,
x_ \[DirectedEdge] x_], {}, {If[#2[[1]][[2]] == 1, Red, Blue],
Arrow[#1, If[#2[[1]][[1]] == #2[[2]][[1]] == 1, 0.35, .33]]}] &),
AspectRatio -> .7
]
And here is the result:
