2016-05-12 7 views
1

私の友人と私は、カメを使用してPythonゲームに取り組んでいます。私たちの問題は、それがカメを定義するセクションにあります。私たちはそれぞれのカメを早くしようとしていますが、そうしたときにデフォルトのスピードが走ります。なぜこの問題が発生していますか?Python Turtle Speed

import turtle 


turtle.setup(1000,1000) 
wn=turtle.Screen() 
wn.title("Snake Game!") 

#defines first turtle 

t1=turtle.Turtle() 
t1.pensize(2) 
t1.speed(3) 
t1.penup() 
t1.goto(0,100) 
t1.color("blue", "blue") 
t1.pendown() 

#defines second turtle 

t2=turtle.Turtle() 
t2.pensize(2) 
t2.speed(3) 
t2.penup() 
t2.goto(0,-100) 
t2.color("red", "red") 
t2.pendown() 

#defines outline 

ol=turtle.Turtle() 
ol.pensize(2) 
ol.speed(7) 
ol.penup() 
ol.goto(450,0) 
ol.color("black", "black") 
ol.pendown() 

ol.left(90) 
ol.forward(300) 
ol.left(90) 
ol.forward(900) 
ol.left(90) 
ol.forward(600) 
ol.left(90) 
ol.forward(900) 
ol.left(90) 
ol.forward(300) 
ol.hideturtle() 

#defines score 

score1=int(2) 
score2=int(2) 

def motion(): 
    global move, score1, score2 
    move = True 
    path1 = [] 
    path2 = [] 

#prints score 


    print("Player 1's score is", str(score1)+"!") 
    print("Player 2's score is", str(score2)+"!") 

#defines motion 

    while move == True: 
     global pos1x, pos2x 

     t1.forward(1) 
     t2.forward(1) 

     pos1x = int(t1.xcor()) 
     pos1y = int(t1.ycor()) 
     t1xy = (pos1x, pos1y) 

     pos2x=int(t2.xcor()) 
     pos2y=int(t2.ycor()) 
     t2xy=(pos2x,pos2y) 


     path1.append(t1xy) 
     path2.append(t2xy) 

#calculates score1 

     if t1xy in path2: 
      score1=int(score1-1) 
      print("") 
      print("Player 1's score is", str(score1)+"!") 
      print("Player 2's score is", str(score2)+"!") 
      t1.clear() 
      path1 = [] 
      t2.clear() 
      path2 = [] 
      t1.penup() 
      t1.goto(0,100) 
      t1.pendown() 
      t2.penup() 
      t2.goto(0,-100) 
      t2.pendown() 
      move = False 



     if score1==0: 
      print("Player 2 wins!") 
      exit() 
     else: 
      move==True 



#calculates score2 


     if t2xy in path1: 
      score2=int(score2-1) 
      print("") 
      print("Player 1's score is", str(score1)+"!") 
      print("Player 2's score is", str(score2)+"!") 
      t2.clear() 
      path2 = [] 
      t1.clear() 
      path1 = [] 
      t2.penup() 
      t2.goto(0,-100) 
      t2.pendown() 
      t1.penup() 
      t1.goto(0,100) 
      t1.pendown() 
      move = False 

     if score2==0: 
      print("Player 1 wins!") 
      exit() 
     else: 
      move==True 


#borders 

     if pos1x > 450: 
      t1.left(135) 

     if pos2x > 450: 
      t2.left(135) 


     if pos1x < -450: 
      t1.left(135) 

     if pos2x < -450: 
      t2.left(135) 


     if pos1y > 300: 
      t1.left(135) 

     if pos2y > 300: 
      t2.left(135) 

     if pos1y < -300: 
      t1.left(135) 

     if pos2y < -300: 
      t2.left(135) 

#defines controls 

def left(): 
    t1.speed(500) 
    t1.left(45) 
    t1.speed(3)  

def right(): 
    t1.speed(500) 
    t1.right(45) 
    t1.speed(3) 

def backwards(): 
    t1.left(180) 

def stop(): 
    global move 
    move = False 
    t1.forward(0) 
    t2.forward(0) 


def left2(): 
    t2.speed(500) 
    t2.left(45) 
    t2.speed(3) 

def right2(): 
    t2.speed(500) 
    t2.right(45) 
    t2.speed(3) 

def backwards2(): 
    t2.left(180) 

def motion2(): 

    move = True 
    path1 = [] 
    path2 = [] 


#onkeys 

wn.onkey(left2, "Left") 
wn.onkey(right2, "Right") 
wn.onkey(backwards2, "Down") 

wn.onkey(left, "a") 
wn.onkey(right, "d") 
wn.onkey(backwards, "s") 

wn.onkey(motion, "t") 
wn.onkey(stop, "y") 
wn.onkey(motion2, "p") 



wn.listen() 
wn.mainloop() 
+3

ほとんどの場合、完全なコード/プロジェクトではなく、主要な問題のみを示す縮小された例を投稿する方がよいでしょう。 – linusg

答えて

3

ここで何をしたいですか?

def left(): 
    t1.speed(500) 
    t1.left(45) 
    t1.speed(3)  

速度を10以上(高速)に設定すると、0(最速)に設定されます。そして、操作が完了するとすぐに3(遅い)に設定しています。

私が知る限り、あなたは一時的に亀を飛ばすことができます。 left()しかし、それから恩恵を受けなければならない操作のために、かごをslowの速度にしておきます。 motion()

私は「すべてのあなたのspeed()通話を引き出し、それらを再考、好ましくは文字列の引数を使用して、「最も遅い」、文書何をあなたを助けるために、「最速」「速い」、「普通」、&を「遅い」ことをお勧めしたいですやり直し、範囲外になるのを避けてください。それはカメのスピードでの使用を変更するのと同じくらい簡単だ場合

0

turtle.speed(number) 

亀は亀の名前などです。 TestTurtle

1から10までの数であり、整数でなければならない。たとえば、数字として4.7を使用することはできません。

10を超えると速度が低下します。