Препятствие останавливается во время ввода игрока - Python Turtle - PullRequest
0 голосов
/ 06 февраля 2019

Мое препятствие для игры в черепаху Python останавливается, когда игрок получает информацию, и продолжается после этого:

# Written in Python 3
# By 
# February 4th, 2019
# Purpose: Mimic the no-wifi Google Chrome dinosaur game
# Bonus 6
import turtle # Used for graphics
from turtle import Screen # Used for inputs
import random# Used to generate a random number
import time

# Creates a turtle with the proper size and color
player = turtle.Turtle()
player.shape("square")
player.color("#cc0000")
player.turtlesize(1.5, 1.5)
player.penup()
player.goto(-50, 0)

# Creates the ground
ground = turtle.Turtle()
ground.shape("square")
ground.turtlesize(0.25, 300)
ground.penup()
ground.goto(0, -18)

# This function makes the square jump, unbinds 'Up', return to the ground, then rebinds 'Up'
def jump():
    Screen().onkey(null, 'Up')
    player.speed(2)
    if player.ycor() == 0:
        player.goto((player.xcor()), (player.ycor()+100))
    print("G")
    player.speed(1.5)
    player.goto(-50, 0)
    Screen().onkey(jump, 'Up')

# Blank function
def null():
    n =1

Screen().onkey(jump, 'Up')
Screen().listen()

# Ignore this
x = 3 * random.sample(range(4), 4)
print (x)
print (x[1])

# Creating obstacles (not finished, just moves)
obst1 = turtle.Turtle()
obst1.shape("square")
obst1.turtlesize(3, 2)
obst1.penup()
obst1.goto(300,0)
obst1.speed(1)
obst1.setx(-300)

Я хочу, чтобы препятствие продолжало двигаться, пока я прыгаю.У меня есть только Python 3 и его стандартные модули.По какой-то причине я не могу загрузить PIP или что-то подобное.Я пытаюсь имитировать игру динозавров из Google Chrome.Я новичок в такого рода вещах, поэтому, пожалуйста, объясните любые предложения как можно подробнее.Большое спасибо!

1 Ответ

0 голосов
/ 08 февраля 2019

Как вы написали свой код, вы можете перемещать только одну черепаху за раз.Ниже доработка вашего кода, где пользователь контролирует игрока, но препятствие контролируется таймером, чтобы они могли двигаться одновременно:

from turtle import Screen, Turtle

# This function unbinds 'Up', makes the square jump, return to the ground, then rebinds 'Up'
def jump():
    screen.onkey(None, 'Up')

    if player.ycor() == 0:
        player.forward(150)
        player.backward(150)

    screen.onkey(jump, 'Up')

def move():
    obstacle.forward(6)
    if obstacle.xcor() > -400:
        screen.ontimer(move, 100)

# Creates the ground
ground = Turtle('square')
ground.turtlesize(0.25, 45)
ground.penup()
ground.sety(-15)

# Creates a turtle with the proper size and color
player = Turtle('square')
player.color('red')
player.turtlesize(1.5)
player.speed('slowest')
player.penup()
player.setx(-100)
player.setheading(90)

screen = Screen()
screen.onkey(jump, 'Up')
screen.listen()

# Creating obstacles (not finished, just moves)
obstacle = Turtle('square')
obstacle.turtlesize(3, 1.5)
obstacle.speed('fastest')
obstacle.penup()
obstacle.setposition(400, 15)
obstacle.setheading(180)

move()

screen.mainloop()

Это должно более точно имитировать тип движения, который выПытаешься достичь.

...