2016-02-11 4 views
0

У меня проблемы с игрой, которую я создаю в Черепахе. Всякий раз, когда я пытаюсь запустить программу, я получаю ошибку трассировки: ParseError: bad input on line 69 in main.py. Но раньше (когда ошибка не возникала) мои координаты работали неправильно. Я думаю, что я набрал правильные, но это не сработает. В игре вам нужно попасть в плод. Таким образом, в основном игра идет так: если вы пропустите плод, он должен взять одну точку от вашего счета и одно сердце из вашей жизни. Сначала он проверяет, нет ли у вас балла 0. Если вы нажмете фрукты, вы должны получить +1 очко. Но, к сожалению, если я стреляю в любую сторону в левой части окна, я получаю +1 очко. Независимо от расстояния.ParseError и неправильные координаты

Код, в котором я подозреваю, что проблема есть:

def cannon_shooting(): 
    bullet1 = random.randint(1, 4) 
    global live_score 
    if live_score >= 100: 
    bullet1 = 5 
    if bullet1 == 1: 
    bullet.color('black') 
    if bullet1 == 2: 
    bullet.color('green') 
    if bullet1 == 3: 
    bullet.color('red') 
    if bullet1 == 4: 
    bullet.color('grey') 
    if bullet1 == 5: 
    bullet.color('white') 
    bullet.goto(cannon_x, -30) 
    bullet.showturtle() 
    bullet.goto(cannon_x, 130) 
    if bullet.ycor() == enemy.ycor() - 10: 
    if not bullet.xcor() == enemy.xcor() - 10: 
     if live_score == 0: 
     if live_score == 100: 
      score.color('white') 
     live_score = 0 
     score.clear() 
     if live_score >= 0: 
      score.write("Your score: %s" % live_score, font=(None, 11, "bold")) 
     else: 
     if live_score == 100: 
      score.color('white') 
     live_score = live_score - 1 
     score.clear() 
     if live_score >= 0: 
      score.write("Your score: %s" % live_score, font=(None, 11, "bold")) 
     move_speed = random.randint(1, 10) 
     lives = lives - 1 
    if bullet.xcor() = enemy.xcor() - 10: 
     if live_score == 100: 
     score.color('white') 
     live_score = live_score + 1 
     score.clear() 
     if live_score >= 0: 
     score.write("Your score: %s" % live_score, font=(None, 11, "bold")) 
     enemy1 = random.randint(1, 3) 
     move_speed = random.randint(1, 10) 
    if live_score == 100: 
    score.clear() 
    cannon.goto(0, -100) 
    cannon.hideturtle() 
    enemy.hideturtle() 
    bullet.hideturtle() 
    bullet.goto(0, -30) 
    win.color('green') 
    win.write("Congratulations!", font=(None, 20, "bold")) 
    win.goto(-140, -40) 
    win.write("You scored 100 points!", font=(None, 20, "bold")) 
    if lives == 0: 
    score.clear() 
    cannon.goto(0, -100) 
    cannon.hideturtle() 
    enemy.hideturtle() 
    bullet.hideturtle() 
    bullet.goto(0, -30) 
    game_over.color('red') 
    game_over.write("Game Over", font=(None, 20, "bold")) 
    game_over.goto(-140, -40) 
    game_over.write("You scored %d points!" % live_score, font=(None, 20, "bold")) 
    bullet.hideturtle() 

Всего код:

import random 
import turtle 

#images 
image_coconut = "Coconut.png" 
image_banana = "Banana.png" 
image_pineapple = "Pineapple.png" 
image_cannon = "Cannon.png" 

#definitions 
live_score = 0 
screen = turtle.Screen() 
wn = turtle.Screen() 
cannon = turtle.Turtle() 
enemy = turtle.Turtle() 
score = turtle.Turtle() 
score1 = turtle.Turtle() 
background = turtle.Turtle() 
reset = turtle.Turtle() 
bullet = turtle.Turtle() 
overlay = turtle.Turtle() 
enemy_x = enemy.xcor() 
enemy_y = enemy.ycor() 
win = turtle.Turtle() 
game_over = turtle.Turtle() 
lives = 3 
cannon_x = 0 
cannon_x 
move_speed = 2 
enemy1 = 0 
score_goto = 0 

def cannon_shooting(): 
    bullet1 = random.randint(1, 4) 
    global live_score 
    if live_score >= 100: 
    bullet1 = 5 
    if bullet1 == 1: 
    bullet.color('black') 
    if bullet1 == 2: 
    bullet.color('green') 
    if bullet1 == 3: 
    bullet.color('red') 
    if bullet1 == 4: 
    bullet.color('grey') 
    if bullet1 == 5: 
    bullet.color('white') 
    bullet.goto(cannon_x, -30) 
    bullet.showturtle() 
    bullet.goto(cannon_x, 130) 
    if bullet.ycor() == enemy.ycor() - 10: 
    if not bullet.xcor() == enemy.xcor() - 10: 
     if live_score == 0: 
     if live_score == 100: 
      score.color('white') 
     live_score = 0 
     score.clear() 
     if live_score >= 0: 
      score.write("Your score: %s" % live_score, font=(None, 11, "bold")) 
     else: 
     if live_score == 100: 
      score.color('white') 
     live_score = live_score - 1 
     score.clear() 
     if live_score >= 0: 
      score.write("Your score: %s" % live_score, font=(None, 11, "bold")) 
     move_speed = random.randint(1, 10) 
     lives = lives - 1 
    if bullet.xcor() = enemy.xcor() - 10: 
     if live_score == 100: 
     score.color('white') 
     live_score = live_score + 1 
     score.clear() 
     if live_score >= 0: 
     score.write("Your score: %s" % live_score, font=(None, 11, "bold")) 
     enemy1 = random.randint(1, 3) 
     move_speed = random.randint(1, 10) 
    if live_score == 100: 
    score.clear() 
    cannon.goto(0, -100) 
    cannon.hideturtle() 
    enemy.hideturtle() 
    bullet.hideturtle() 
    bullet.goto(0, -30) 
    win.color('green') 
    win.write("Congratulations!", font=(None, 20, "bold")) 
    win.goto(-140, -40) 
    win.write("You scored 100 points!", font=(None, 20, "bold")) 
    if lives == 0: 
    score.clear() 
    cannon.goto(0, -100) 
    cannon.hideturtle() 
    enemy.hideturtle() 
    bullet.hideturtle() 
    bullet.goto(0, -30) 
    game_over.color('red') 
    game_over.write("Game Over", font=(None, 20, "bold")) 
    game_over.goto(-140, -40) 
    game_over.write("You scored %d points!" % live_score, font=(None, 20, "bold")) 
    bullet.hideturtle() 


#image adding 
screen.addshape(image_coconut) 
screen.addshape(image_banana) 
screen.addshape(image_pineapple) 
screen.addshape(image_cannon) 

def cannon_left(): 
    global cannon_x 
    if cannon_x == -140: 
    cannon_x = 140 
    cannon.goto(cannon_x, -100) 
    cannon_x = cannon_x - 10 
    cannon.goto(cannon_x, -100) 
    bullet.goto(cannon_x, -30) 

def cannon_right(): 
    global cannon_x 
    if cannon_x == 140: 
    cannon_x = -140 
    cannon.goto(cannon_x, -100) 
    cannon_x = cannon_x + 10 
    cannon.goto(cannon_x, -100) 
    bullet.goto(cannon_x, -30) 

#setup 
screen.bgcolor('white') 

game_over.hideturtle() 
game_over.speed(0) 
game_over.penup() 
game_over.goto(-100, 0) 

win.hideturtle() 
win.speed(0) 
win.penup() 
win.goto(-100, 0) 

bullet.hideturtle() 
bullet.speed(5) 
bullet.penup() 
bullet.shape('circle') 
bullet.goto(0, -140) 
bullet.left(90) 

enemy.speed(0) 
enemy.penup() 
enemy.hideturtle() 
enemy.goto(0, 140) 
screen.addshape(image_coconut) 
enemy.shape(image_coconut) 
enemy.showturtle() 

cannon.speed(0) 
cannon.penup() 
cannon.hideturtle() 
cannon.goto(0, -100) 
screen.addshape(image_cannon) 
cannon.shape(image_cannon) 
cannon.showturtle() 
cannon.left(90) 

score.speed(0) 
score.penup() 
score.hideturtle() 
score.goto(-45, -190) 
score.color('black') 
score.write("Your score: %s" % live_score, font=(None, 11, "bold")) 

#bindings 
wn.onkey(cannon_right, "D") 
wn.onkey(cannon_left, "A") 
wn.onkey(cannon_right, "Right") 
wn.onkey(cannon_left, "Left") 
wn.onkey(cannon_shooting, "SPACE") 

#movement 
enemy.forward(move_speed) 
if enemy.xcor() == 140: 
    enemy.left(180) 
    enemy.forward(move_speed) 
if enemy.xcor() == -140: 
    enemy.right(180) 
    enemy.forward(move_speed) 
    if enemy1 == 1: 
    screen.addshape(image_banana) 
    enemy.shape(image_banana) 
    if enemy1 == 2: 
    screen.addshape(image_pineapple) 
    enemy.shape(image_pineapple) 
    if enemy1 == 3: 
    enemy.shape(image_coconut) 

#others 
wn.listen() 
wn.mainloop() 

Примечание: Я создаю игру в Trinket.io. Чтобы увидеть программу в Trinket, нажмите here.

+1

_Questions, ищущий помощь для отладки («почему этот код не работает?») Должен включать в себя желаемое поведение, конкретную проблему или ошибку и самый короткий код, необходимый для воспроизведения в самом вопросе **. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать минимальный, полный и проверенный пример. Я уверен, что этот блок кода не является минимальным примером. –

ответ

0

Проблема в том, что вы говорите if bullet.xcor() = enemy.xcor() - 10:. = предназначен для назначения, но вы не можете выполнить назначение в блоке if. Вы должны изменить его на if bullet.xcor() == enemy.xcor() - 10:

+0

Это мне не помогает. Да, он исправляет ошибку, но координаты все еще испорчены. – righteous

Смежные вопросы