Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from __future__ import division
- import turtle
- import math
- from math import *
- from turtle import *
- wn = turtle.Screen()
- wn.bgcolor('black')
- wn.title('The maze game!')
- wn.setup(700,700)
- #Create pen
- class Pen(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.shape('square')
- self.color('white')
- self.penup()
- self.speed(0)
- class Player(turtle.Turtle):
- def __init__(self):
- turtle.Turtle.__init__(self)
- self.shape('square')
- self.color('blue')
- self.penup()
- self.speed(0)
- self.gold = 0
- def go_up(self):
- #Calculate the spot to move to
- move_to_x = player.xcor()
- move_to_y = player.ycor() + 24
- #Check if the space has a wall
- if (move_to_x, move_to_y) not in walls:
- self.goto(move_to_x, move_to_y)
- def go_down(self):
- #Calculate the spot to move to
- move_to_x = player.xcor()
- move_to_y = player.ycor() - 24
- #Check if space has a wall
- if (move_to_x, move_to_y) not in walls:
- self.goto(move_to_x, move_to_y)
- def go_left(self):
- #Calculate the spot to move to
- move_to_x = player.xcor() - 24
- move_to_y = player.ycor()
- #Check if space has a wall
- if (move_to_x, move_to_y) not in walls:
- self.goto(move_to_x, move_to_y)
- def go_right(self):
- #Calculate the spot to move to
- move_to_x = player.xcor() + 24
- move_to_y = player.ycor()
- #Check if space has a wall
- if (move_to_x, move_to_y) not in walls:
- self.goto(move_to_x, move_to_y)
- def is_collision(self, other):
- a = self.xcor()-other.xcor()
- b = self.ycor()-other.ycor()
- distance = math.sqrt((a ** 2) + (b ** 2) )
- if distance < 5:
- return True
- else:
- return False
- class Treasure(turtle.Turtle):
- def __init__(self, x, y):
- turtle.Turtle.__init__(self)
- self.shape('circle')
- self.color('gold')
- self.penup()
- self.speed(0)
- self.gold = 100
- self.goto(x, y)
- def destroy(self):
- self.goto(2000,2000)
- self.hideturtle()
- #Create levels list
- levels =['']
- #Define first level '''' COUNTING IS....
- # ONLY THERE MOMENTARILY'''
- level_1 = [
- 'XXXXXXXXXXXXXXXXXXXXXXXXX',
- 'XP XXXXXXX XXXXX',
- 'X XXXXXXX XXXXXX XXXXX',
- 'X XX XXXXXX XXXXX',
- 'X XX XXX XX',
- 'XXXXXX XX XXX XX',
- 'XXXXXX XX XXXXXX XXXXX',
- 'XXXXXX XX XXXX XXXXX',
- 'X XXX XXXT XXXXX',
- 'X XXX XXXXXXXXXXXXXXXXX',
- 'X XXXXXXXXXXXXXXX',
- 'X XXXXXXXX',
- 'XXXXXXXXXXXXXX XXXX X',
- 'XXX XXXXXXX XXXX X',
- 'XXX X',
- 'XXX X',
- 'XXXXXXXXXX XXXXXXXXXXXXX',
- 'XXXXXXXXXX XXXXXXXXXXXXX',
- 'XXXXXXXXXX X',
- 'XX XXXXX X',
- 'XX XXXXXXXXXXXXX XXXXX',
- 'XX YXXXXXXXXXXX XXXXX',
- 'XX XXXX X',
- 'XXXX X',
- 'XXXXXXXXXXXXXXXXXXXXXXXXX',
- ]
- #Add a list of treasures
- treasures = []
- #Add maze to mazes list
- levels.append(level_1)
- #Create level setup function
- def setup_maze(level):
- for y in range(len(level)):
- for x in range(len(level[y])):
- #get the character at each x,y coordinate
- #Note the order of y and x in the next line
- character = level[y][x]
- #calculate the screen x, y coordinates
- screen_x = -288 + (x * 24)
- screen_y = 288 - (y * 24)
- #Check if it is an x (representing a wall)
- if character == 'X':
- pen.goto(screen_x, screen_y)
- pen.stamp()
- walls.append((screen_x,screen_y))
- #Check if it is a player
- if character == 'P':
- player.goto(screen_x, screen_y)
- #Check if it is a T (representing a treasure)
- if character == 'T':
- treasures.append(Treasure(screen_x, screen_y))
- #Create class instances
- pen = Pen()
- player = Player()
- #Create wall coordinate list
- walls = []
- #Set up the level
- setup_maze(levels[1])
- #Keyboard Bindings
- wn.listen()
- wn.onkey(player.go_up,'w')
- wn.onkey(player.go_down,'s')
- wn.onkey(player.go_left,'a')
- wn.onkey(player.go_right,'d')
- wn.mainloop()
- #Turn off screen updates
- wn.tracer(0)
- #Main game loop
- while True:
- #Check for player collision with treasure
- #Iterate through treasure list
- for treasure in treasures:
- if player.is_collision(treasure):
- #Add the treasure gold to the player gold
- player.gold += treasure.gold
- print ('Player Gold: {}'.format(player.gold))
- #Destroy the treasure
- treasure.destroy()
- #Remove the treasure
- treasures.remove(treasure)
- #Update screen
- wn.update()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement