Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bound = {{2, -1}, {2, 5}, {1, 0}, {3, 0}, {0, 1}, {4, 1}, {0, 2}, {4,
- 2}, {-1, 3}, {5, 3}, {-1, 4}, {5, 4}, {-1, 5}, {5, 5}, {0, 6}, {1,
- 6}, {3, 6}, {4, 6}}
- DynamicModule[{pos1 = {x1, y1} = {2, 2}, pos2 = {x2, y2} = {2, 4},
- pos3 = {x3, y3} = {2, 0}, message = "Start",
- DotT = {a2, b2} = {x2, (y2 - 0.51)},
- DotL = {a1, b1} = {x1, (y1 + 0.51)},
- DotB = {a3, b3} = {x3, (y3 + 0.51)}, Switch = True, Stick = False},
- EventHandler[
- Dynamic[Magnify[
- Graphics[{Opacity[0.9],
- Style[Text[message, {2, 5}], FontFamily -> "Helvetica", Small,
- Gray, FontSize -> 15], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{0, 5}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{0, 4}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{0, 3}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{1, 5}, .35], Yellow, Disk[{1, 4}, .35],
- EdgeForm[Directive[Thick, Magenta]], Cyan, Disk[{1, 3}, .35],
- EdgeForm[Directive[Thick, Magenta]], Cyan, Disk[{3, 5}, .35],
- Yellow, Disk[{3, 4}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{3, 3}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{4, 5}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{4, 4}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{4, 3}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{1, 1}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{2, 1}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{3, 1}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{1, 2}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{2, 2}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{3, 2}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{2, 0}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{2, 3}, .35], EdgeForm[Directive[Thick, Magenta]],
- Cyan, Disk[{2, 4}, .35], Darker[Green, 0.5],
- Style[Text[\[NeutralSmiley], pos1], FontSize -> 36], Blue,
- Style[Text[\[FreakedSmiley], pos2], FontSize -> 48], Orange,
- Style[Text[\[FreakedSmiley], pos3],
- FontSize -> 48]}]]], {"UpArrowKeyDown" :> {message = "",
- Switch = True, Stick = False,
- If[(**){x1, y1 + 1} == {x2, y2 - 1} || {x1, y1 + 1} == {x2,
- y2} || {x1, y1 + 1} == {x3, y3} || {x3, y3 + 1} == {x2,
- y2 - 1} || {x3, y3 + 1} == {x2,
- y2}, {Which[{x3, y3 + 1} == {x2, y2 - 1}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1 + 1}}, pos2 = pos2,
- pos3 = pos3}, {x3, y3 + 1} == {x2, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1 + 1}}, pos2 = pos2,
- pos3 = pos3}, {x1, y1 + 1} == {x2, y2 - 1}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = 2, y1 = 2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = 2, y2 = 4}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = 2, y3 = 0}},
- message = "Gameover", DotT = {2, (4 - .51)},
- DotL = {2, (2 + .51)}, DotB = {2, (0 + .51)},
- Switch = False}, {x1, y1 + 1} == {x2, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}}}, {x1,
- y1 + 1} == {x3, y3}, {Which[
- Intersection[
- bound, {{x3, y3 + 1}}] == {{x3, y3 + 1}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}}}, {x3,
- y3 + 1} == {x2, y2 - 1}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = 2, y1 = 2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = 2, y2 = 4}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = 2, y3 = 0}},
- message = "Gameover", DotT = {2, (4 - .51)},
- DotL = {2, (2 + .51)}, DotB = {2, (0 + .51)},
- Switch = False},
- Intersection[
- bound, {{x3, y3 + 1}}] != {{x3, y3 + 1}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1 + 1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2 - 1}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3,
- y3 = y3 +
- 1}}}]}]}, {If[(*Test if next move out of bound.*)
- Intersection[bound, {{x1, y1 + 1}}] == {{x1, y1 + 1}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}}, Stick = True},
- pos1 = pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1 + 1}}],
- If[(*Test if next move out of bound.*)
- Intersection[bound, {{x2, y2 - 1}}] == {{x2, y2 - 1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- If[Stick == True,
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2 - 1}}]],
- If[(*Test if next move out of bound.*)
- Intersection[bound, {{x3, y3 + 1}}] == {{x3, y3 + 1}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}},
- If[Stick == True,
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3 + 1}}]]}],
- If[Switch == True, {DotT = {a2 = x2, b2 = y2 - .51},
- DotL = {a1 = x1, b1 = y1 + .51},
- DotB = {a3 = x3, b3 = y3 + .51}}], Switch = True,
- If[{x2, y2} == {1, 4} && {x3, y3} == {3, 4} || {x3, y3} == {1,
- 4} && {x2, y2} == {3, 4}, message = "Win"]},
- "DownArrowKeyDown" :> {message = "", Switch = True, Stick = False,
- If[(**){x1, y1 - 1} == {x2, y2 + 1} || {x1, y1 - 1} == {x2,
- y2} || {x1, y1 - 1} == {x3, y3} || {x3, y3 - 1} == {x2,
- y2 + 1} || {x3, y3 - 1} == {x2,
- y2}, {Which[{x3, y3 - 1} == {x2, y2 + 1}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1 - 1}}, pos2 = pos2,
- pos3 = pos3}, {x3, y3 - 1} == {x2, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1 - 1}}, pos2 = pos2,
- pos3 = pos3}, {x1, y1 - 1} == {x2, y2 + 1}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = 2, y1 = 2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = 2, y2 = 4}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = 2, y3 = 0}},
- message = "Gameover", DotT = {2, (4 - .51)},
- DotL = {2, (2 + .51)}, DotB = {2, (0 + .51)},
- Switch = False}, {x1, y1 - 1} == {x2, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}}}, {x1,
- y1 - 1} == {x3, y3}, {Which[
- Intersection[
- bound, {{x3, y3 - 1}}] == {{x3, y3 - 1}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}}}, {x3,
- y3 - 1} == {x2, y2 + 1}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = 2, y1 = 2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = 2, y2 = 4}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = 2, y3 = 0}},
- message = "Gameover", DotT = {2, (4 - .51)},
- DotL = {2, (2 + .51)}, DotB = {2, (0 + .51)},
- Switch = False},
- Intersection[
- bound, {{x3, y3 - 1}}] != {{x3, y3 - 1}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1 - 1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2 + 1}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3,
- y3 = y3 -
- 1}}}]}]}, {If[(*Test if next move out of bound.*)
- Intersection[bound, {{x1, y1 - 1}}] == {{x1, y1 - 1}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}}, Stick = True},
- pos1 = pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1 - 1}}],
- If[(*Test if next move out of bound.*)
- Intersection[bound, {{x2, y2 + 1}}] == {{x2, y2 + 1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- If[Stick == True,
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2 + 1}}]],
- If[(*Test if next move out of bound.*)
- Intersection[bound, {{x3, y3 - 1}}] == {{x3, y3 - 1}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}},
- If[Stick == True,
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3 - 1}}]]}],
- If[Switch == True, {DotT = {a2 = x2, b2 = y2 + .51},
- DotL = {a1 = x1, b1 = y1 - .51},
- DotB = {a3 = x3, b3 = y3 - .51}}], Switch = True,
- If[{x2, y2} == {1, 4} && {x3, y3} == {3, 4} || {x3, y3} == {1,
- 4} && {x2, y2} == {3, 4}, message = "Win"]},
- "LeftArrowKeyDown" :> {message = "", Switch = True, Stick = False,
- If[(**){x1 - 1, y1} == {x2 + 1, y2} || {x1 - 1, y1} == {x2,
- y2} || {x1 - 1, y1} == {x3, y3} || {x3 - 1, y3} == {x2 + 1,
- y2} || {x3 - 1, y3} == {x2,
- y2}, {Which[{x3 - 1, y3} == {x2 + 1, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1 - 1, y1 = y1}}, pos2 = pos2,
- pos3 = pos3}, {x3 - 1, y3} == {x2, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1 - 1, y1 = y1}}, pos2 = pos2,
- pos3 = pos3}, {x1 - 1, y1} == {x2 + 1, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = 2, y1 = 2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = 2, y2 = 4}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = 2, y3 = 0}},
- message = "Gameover", DotT = {2, (4 - .51)},
- DotL = {2, (2 + .51)}, DotB = {2, (0 + .51)},
- Switch = False}, {x1 - 1, y1} == {x2, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}}}, {x1 - 1,
- y1} == {x3, y3}, {Which[
- Intersection[
- bound, {{x3 - 1, y3}}] == {{x3 - 1, y3}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}}}, {x3 - 1,
- y3} == {x2 + 1, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = 2, y1 = 2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = 2, y2 = 4}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = 2, y3 = 0}},
- message = "Gameover", DotT = {2, (4 - .51)},
- DotL = {2, (2 + .51)}, DotB = {2, (0 + .51)},
- Switch = False},
- Intersection[
- bound, {{x3 - 1, y3}}] != {{x3 - 1, y3}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1 - 1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2 + 1, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3 - 1,
- y3 = y3}}}]}]}, {If[(*Test if next move out of bound.*)
- Intersection[bound, {{x1 - 1, y1}}] == {{x1 - 1, y1}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}}, Stick = True},
- pos1 = pos1 /. {{x1, y1} -> {x1 = x1 - 1, y1 = y1}}],
- If[(*Test if next move out of bound.*)
- Intersection[bound, {{x2 + 1, y2}}] == {{x2 + 1, y2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- If[Stick == True,
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2 + 1, y2 = y2}}]],
- If[(*Test if next move out of bound.*)
- Intersection[bound, {{x3 - 1, y3}}] == {{x3 - 1, y3}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}},
- If[Stick == True,
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3 - 1, y3 = y3}}]]}],
- If[Switch == True, {DotT = {a2 = x2 + .51, b2 = y2},
- DotL = {a1 = x1 - .51, b1 = y1},
- DotB = {a3 = x3 - .51, b3 = y3}}], Switch = True,
- If[{x2, y2} == {1, 4} && {x3, y3} == {3, 4} || {x3, y3} == {1,
- 4} && {x2, y2} == {3, 4}, message = "Win"]},
- "RightArrowKeyDown" :> {message = "", Switch = True, Stick = False,
- If[(**){x1 + 1, y1} == {x2 - 1, y2} || {x1 + 1, y1} == {x2,
- y2} || {x1 + 1, y1} == {x3, y3} || {x3 + 1, y3} == {x2 - 1,
- y2} || {x3 + 1, y3} == {x2,
- y2}, {Which[{x3 + 1, y3} == {x2 - 1, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1 + 1, y1 = y1}}, pos2 = pos2,
- pos3 = pos3}, {x3 + 1, y3} == {x2, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1 + 1, y1 = y1}}, pos2 = pos2,
- pos3 = pos3}, {x1 + 1, y1} == {x2 - 1, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = 2, y1 = 2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = 2, y2 = 4}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = 2, y3 = 0}},
- message = "Gameover", DotT = {2, (4 - .51)},
- DotL = {2, (2 + .51)}, DotB = {2, (0 + .51)},
- Switch = False}, {x1 + 1, y1} == {x2, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}}}, {x1 + 1,
- y1} == {x3, y3}, {Which[
- Intersection[
- bound, {{x3 + 1, y3}}] == {{x3 + 1, y3}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}}}, {x3 + 1,
- y3} == {x2 - 1, y2}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = 2, y1 = 2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = 2, y2 = 4}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = 2, y3 = 0}},
- message = "Gameover", DotT = {2, (4 - .51)},
- DotL = {2, (2 + .51)}, DotB = {2, (0 + .51)},
- Switch = False},
- Intersection[
- bound, {{x3 + 1, y3}}] != {{x3 + 1, y3}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1 + 1, y1 = y1}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2 - 1, y2 = y2}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3 + 1,
- y3 = y3}}}]}]}, {If[(*Test if next move out of bound.*)
- Intersection[bound, {{x1 + 1, y1}}] == {{x1 + 1, y1}}, {pos1 =
- pos1 /. {{x1, y1} -> {x1 = x1, y1 = y1}}, Stick = True},
- pos1 = pos1 /. {{x1, y1} -> {x1 = x1 + 1, y1 = y1}}],
- If[(*Test if next move out of bound.*)
- Intersection[bound, {{x2 - 1, y2}}] == {{x2 - 1, y2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- If[Stick == True,
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2, y2 = y2}},
- pos2 = pos2 /. {{x2, y2} -> {x2 = x2 - 1, y2 = y2}}]],
- If[(*Test if next move out of bound.*)
- Intersection[bound, {{x3 + 1, y3}}] == {{x3 + 1, y3}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}},
- If[Stick == True,
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3, y3 = y3}},
- pos3 = pos3 /. {{x3, y3} -> {x3 = x3 + 1, y3 = y3}}]]}],
- If[Switch == True, {DotT = {a2 = x2 - .51, b2 = y2},
- DotL = {a1 = x1 + .51, b1 = y1},
- DotB = {a3 = x3 + .51, b3 = y3}}], Switch = True,
- If[{x2, y2} == {1, 4} && {x3, y3} == {3, 4} || {x3, y3} == {1,
- 4} && {x2, y2} == {3, 4}, message = "Win"]}}]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement