Jan-23-2019, 10:55 PM
(This post was last modified: Jan-23-2019, 10:56 PM by PythonSnake.)
i just need a bit of help because i just made a game called 'caterpillar' but when i tried running it it wouldnt work when i clicked space.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 |
import random import turtle as t t.bgcolor( 'yellow' ) caterpillar = t.Turtle() caterpillar.shape( 'square' ) caterpillar.color( 'red' ) caterpillar.speed( 0 ) caterpillar.penup() caterpillar.hideturtle() leaf = t.Turtle() leaf_shape = (( 0 , 0 ), ( 14 , 2 ), ( 18 , 6 ), ( 20 , 20 ), ( 6 , 18 ), ( 2 , 14 )) t.register_shape( 'leaf' , leaf_shape) leaf.shape( 'leaf' ) leaf.color( 'green' ) leaf.penup() leaf.hideturtle() leaf.speed( 0 ) game_started = False text_turtle = t.Turtle() text_turtle.write( 'Press SPACE to start' , align = 'center' , font = ( 'Arial' , 16 , 'bold' )) text_turtle.hideturtle() score_turtle = t.Turtle() score_turtle.hideturtle() score_turtle.speed( 0 ) def outside_window(): left_wall = - t.window_width() / 2 right_wall = t.window_width() / 2 top_wall = t.window_width() / 2 bottom_wall = - t.window_width() / 2 (x, y) = caterpiller.pos() outside = \ x< left_wall or \ x> right_wall or \ y< bottom_wall or \ y> top_wall return outside def game_over(): caterpillar.colour( 'yellow' ) leaf.colour( 'yellow' ) t.penup() t.hideturtle() t.write( 'GAME OVER!' , align = 'center' , font = ( 'Arial' , 30 , 'normal' )) def display_score(current_score): score_turtle.clear() score_turtle.penup() x = (t.window_width() / 2 ) - 50 y = (t.window_height() / 2 ) - 50 score_turtle.setpos(x, y) score_turtle.write( str (current_score), align = 'right' , font = ( 'Arail' , 40 , 'bold' )) def place_leaf(): leaf.ht() leaf.setx(random.randint( - 200 , 200 )) leaf.sety(random.randint( - 200 , 200 )) leaf.st() def start_game(): global game_started if game_started: return game_started = True score = 0 text_turtle.clear() caterpillar_speed = 2 caterpillar_length = 3 caterpillar.shapesize( 1 , caterpillar_length, 1 ) caterpillar.showturtle() display_score(score) place_leaf() while True : caterpillar.forward(caterpillar_speed) if caterpillar.distance(leaf) < 20 : place_leaf() caterpillar_length = caterpillar_length + 1 caterpillar.shapesize( 1 , caterpillar_length, 1 ) caterpillar_speed = caterpillar_speed + 1 score = score + 10 if outside_window(): game_over() display_score(score) break def move_up(): if caterpillar.heading() = = 0 or caterpillar.heading() = = 180 : caterpillar.setheading( 90 ) def move_down(): if caterpillar.heading() = = 0 or caterpillar.heading() = = 180 : caterpillar.setheading( 270 ) def move_left(): if caterpillar.heading() = = 90 or caterpillar.heading() = = 270 : caterpillar.setheading( 180 ) def move_right(): if caterpillar.heading() = = 90 or caterpillar.heading() = = 270 : caterpillar.setheading( 0 ) t.onkey(start_game, 'Space' ) t.onkey(move_up, 'Up' ) t.onkey(move_right, 'Right' ) t.onkey(move_down, 'Down' ) t.onkey(move_left, 'left' ) t.listen() t.mainloop() |