Open In App

Create a Simple Two Player Game using Turtle in Python

Last Updated : 31 Jan, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

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.

 



Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads