Python Forum
[Turtle]How to make smooth moving and add gravity?
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
[Turtle]How to make smooth moving and add gravity?
#1
Hello, I am new to python coding and I figured this would be a good place to start. I am currently making a Python Turtle Platforming Game and I am not sure how to make the moving smooth and how to add gravity. Here is the code: (The mapping is 25x25 but the spaces don't show up) Smile

import turtle
import math
import random

wn = turtle.Screen()
wn.bgcolor("black")
wn.title("Maze Game")
wn.setup(1400, 700)
wn.tracer(0)




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):
        move_to_x = player.xcor()
        move_to_y = player.ycor() + 120
        
        if (move_to_x, move_to_y) not in walls or (move_to_y + 120 < 288):
            self.goto(move_to_x, move_to_y)
        
    def go_down(self):
        move_to_x = player.xcor()
        move_to_y = player.ycor() - 24
        
        if (move_to_x, move_to_y) not in walls:
            self.goto(move_to_x, move_to_y)
        
    def go_left(self):
        move_to_x = player.xcor() - 24
        move_to_y = player.ycor()
        
    def touch_ground():
        while turtle.distance(wall) < 24:
            player.sety(y+1)
            speed_y = 0

        
        
        if (move_to_x, move_to_y) not in walls:
            self.goto(move_to_x, move_to_y)
            
        
    def go_right(self):
        move_to_x = player.xcor() + 24
        move_to_y = player.ycor()
        
        
        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
        

        
levels = [""]


level_1 = [
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"X                                                 X",
"X                                              XXXX",
"X                                   X             X",
"X         XXXXXX                                  X",
"X                                                 X",
"X                                                 X",
"X                                                 X",
"XP                          XXXXXXXX              X",
"XXXXXXXXXX                                        X",
"X                                                 X",
"X                                                 X",
"X                                                 X",
"X           XXX                                   X",
"X                                                 X",
"X                                                 X",
"X                                                 X",
"X                XXXXXXXXXX                       X",
"X                                                 X",
"X XXXXXXXX                                        X",
"X                                                 X",
"X                      XXXXXXXXX                  X",
"X        XXXXXXXXXXX                              X",
"X                                                 X",
"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
]

treasures = []

levels.append(level_1)


def setup_maze(level):
    for y in range(len(level)):
        for x in range(len(level[y])):
            character = level[y][x]
            screen_x = -588 + (x * 24)
            screen_y = 288 - (y * 24)
            
            if character == "X":
                pen.goto(screen_x, screen_y)
                pen.shape("square")
                pen.stamp()
                walls.append((screen_x, screen_y))
                
            if character == "P":
                player.goto(screen_x, screen_y)
                
            if character == "T":
                treasures.append(Treasure(screen_x, screen_y))

pen = Pen()
player = Player()

walls = []

setup_maze(levels[1])

turtle.listen()
turtle.onkey(player.go_left, "Left")
turtle.onkey(player.go_right, "Right")
turtle.onkey(player.go_up, "Up")
turtle.onkey(player.go_down, "Down")


wn.tracer(0)
speed_y = 0

while True:

    
    for treasure in treasures:
        if player.is_collision(treasure):
            player.gold += treasure.gold
            print ("Player Gold:{}".format(player.gold))
            treasure.destroy()
            treasures.remove(treasure)
    
    wn.update()
Reply


Messages In This Thread
[Turtle]How to make smooth moving and add gravity? - by ZakHacks - Aug-24-2019, 01:25 PM

Possibly Related Threads…
Thread Author Replies Views Last Post
  Make a wall in turtle module Jan_97 2 7,166 Aug-18-2021, 08:47 PM
Last Post: Jan_97
  [turtle]How would I create gravity? GalaxyCoyote 4 7,316 May-31-2019, 08:34 PM
Last Post: joe_momma
  Can't make the turtle walk.. Turry 3 4,255 Nov-26-2017, 05:05 PM
Last Post: heiner55
  How to simulate gravity? hsunteik 4 9,275 Feb-03-2017, 07:32 PM
Last Post: nilamo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020