 GeeksforGeeks App
Open App Browser
Continue

# Create a Simple Two Player Game using Turtle in Python

Prerequisites: Turtle Programming in Python

TurtleMove game is basically a luck-based game. In this game two-players (Red & Blue), using their own turtle (object) play the game.

### How to play

The game is played in the predefined grid having some boundaries.

• Both players move the turtle for a unit distance.
• Now both players flip the coin:
• if HEAD, then take a right turn
• else take a left turn
• 3) Now repeat 1 & 2, till both turtles lie in the boundary

### Implementation in Turtle Python

• First, a turtle screen object is created for the grid boundary.
• Now two turtles (Red & Blue) are created, one for each player.
• Both turtles are moved a unit distance using turtle_obj.forward(50) method.
• Turn is decided, Using random.randrange(0, 2) i.e. 0 for left and 1 for the right.
• After every move, the position of each turtle is checked, if any turtle crosses the boundary, then that turtle loses the game.

Below is the implementation

## Python3

 `import` `random``import` `turtle` `# function to check whether turtle``# is in Screen or not``def` `isInScreen(win, turt):``    ` `    ``# getting the end points of turtle screen``    ``leftBound ``=` `-``win.window_width() ``/` `2``    ``rightBound ``=` `win.window_width() ``/` `2``    ``topBound ``=` `win.window_height() ``/` `2``    ``bottomBound ``=` `-``win.window_height() ``/` `2` `    ``# getting the current position of the turtle``    ``turtleX ``=` `turt.xcor()``    ``turtleY ``=` `turt.ycor()` `    ``# variable to store whether in screen or not``    ``stillIn ``=` `True` `    ``# condition to check whether in screen or not``    ``if` `turtleX > rightBound ``or` `turtleX < leftBound:``        ``stillIn ``=` `False``    ``if` `turtleY > topBound ``or` `turtleY < bottomBound:``        ``stillIn ``=` `False` `    ``# returning the result``    ``return` `stillIn`  `# function to check whether both turtle have``# different position or not``def` `sameposition(Red, Blue):``    ``if` `Red.pos() ``=``=` `Blue.pos():``        ``return` `False``    ``else``:``        ``return` `True` `#   main function``def` `main():` `    ``# screen initialization for turtle``    ``wn ``=` `turtle.Screen()` `    ``# Turtle Red initialization``    ``# instantiate a new turtle object``    ``# called 'Red'``    ``Red ``=` `turtle.Turtle()``    ` `    ``# set pencolor as red``    ``Red.pencolor(``"red"``)``    ` `    ``# set pensize as 5``    ``Red.pensize(``5``)``    ` `    ``# set turtleshape as turtle``    ``Red.shape(``'turtle'``)``    ``pos ``=` `Red.pos()` `    ``# Turtle Blue initialization``    ``# instantiate a new turtle object``    ``# called 'Blue'``    ``Blue ``=` `turtle.Turtle()``    ` `    ``# set pencolor as blue``    ``Blue.pencolor(``"blue"``)``    ` `    ``# set pensize as 5``    ``Blue.pensize(``5``)``    ` `    ``# set turtleshape as turtle``    ``Blue.shape(``'turtle'``)``    ` `    ``# make the turtle invisible``    ``Blue.hideturtle()``    ` `    ``# don't draw when turtle moves``    ``Blue.penup()``    ` `    ``# move the turtle to a location 50``    ``# units away from Red``    ``Blue.goto(pos[``0``]``+``50``, pos[``1``])``    ` `    ``# make the turtle visible``    ``Blue.showturtle()``    ` `    ``# draw when the turtle moves``    ``Blue.pendown()` `    ``# variable to store whether turtles``    ``# are in screen or not``    ``mT ``=` `True``    ``jT ``=` `True` `    ``# loop for the game``    ``while` `mT ``and` `jT ``and` `sameposition(Red, Blue):` `        ``# coin flip for Red``        ``coinRed ``=` `random.randrange(``0``, ``2``)` `        ``# angle for Red``        ``# random.randrange(0, 180)``        ``angleRed ``=` `90` `        ``# condition for left or right``        ``# based on coin``        ``if` `coinRed ``=``=` `0``:``            ``Red.left(angleRed)``        ``else``:``            ``Red.right(angleRed)` `        ``# coin flip for Blue``        ``coinBlue ``=` `random.randrange(``0``, ``2``)` `        ``# angle for Blue``        ``# random.randrange(0, 180)``        ``angleBlue ``=` `90` `        ``# condition for left or right based``        ``# on coin``        ``if` `coinBlue ``=``=` `0``:``            ``Blue.left(angleBlue)``        ``else``:``            ``Blue.right(angleBlue)` `        ``# draw for Red``        ``Red.forward(``50``)` `        ``# draw for Blue``        ``Blue.forward(``50``)` `        ``# checking whether turtles are in the``        ``# screen or not``        ``mT ``=` `isInScreen(wn, Blue)``        ``jT ``=` `isInScreen(wn, Red)` `    ``# set pencolor for Blue and Red as black``    ``Red.pencolor(``"black"``)``    ``Blue.pencolor(``"black"``)` `    ``# condition check for draw or win``    ``if` `jT ``=``=` `True` `and` `mT ``=``=` `False``:``        ``# writing results``        ``Red.write(``"Red Won"``, ``True``, align``=``"center"``,``                  ``font``=``(``"arial"``, ``15``, ``"bold"``))``    ` `    ``elif` `mT ``=``=` `True` `and` `jT ``=``=` `False``:``        ` `        ``# writing results``        ``Blue.write(``"Blue Won"``, ``True``, align``=``"center"``,``                   ``font``=``(``"arial"``, ``15``, ``"bold"``))``    ``else``:``        ``# writing results``        ``Red.write(``"Draw"``, ``True``, align``=``"center"``,``                  ``font``=``(``"arial"``, ``15``, ``"bold"``))``        ``Blue.write(``"Draw"``, ``True``, align``=``"center"``,``                   ``font``=``(``"arial"``, ``15``, ``"bold"``))` `    ``# exit on close``    ``wn.exitonclick()`  `# Calling main function``main()`

Output:

Complexity :

The time complexity of the game is O(n), where n is the number of iterations in the while loop. The while loop continues to run as long as both turtles are in the screen and have different positions.

The space complexity of the game is O(1), as the number of variables and data structures used is constant and does not depend on the size of the input. The variables used are two turtle objects, a screen object, some integer variables, and a few boolean variables.

My Personal Notes arrow_drop_up