Skip to content

Commit eb24985

Browse files
authored
Merge pull request #184 from bharat13soni/feature2
Added turtle-crossing game written in python
2 parents e76089c + 867658d commit eb24985

File tree

4 files changed

+118
-0
lines changed

4 files changed

+118
-0
lines changed

T/turtle-crossing/car_manager.py

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import random
2+
from turtle import Turtle
3+
4+
COLORS = ["red", "orange", "yellow", "green", "blue", "purple"]
5+
STARTING_MOVE_DISTANCE = 5
6+
MOVE_INCREMENT = 10
7+
8+
9+
class CarManager:
10+
def __init__(self):
11+
self.all_cars = []
12+
self.car_speed = STARTING_MOVE_DISTANCE
13+
14+
def create_car(self):
15+
random_chance = random.randint(1, 6)
16+
if random_chance == 1:
17+
new_car = Turtle("square")
18+
new_car.shapesize(stretch_wid=1, stretch_len=2)
19+
new_car.penup()
20+
new_car.color(random.choice(COLORS))
21+
random_y = random.randint(-250, 250)
22+
new_car.goto(300, random_y)
23+
self.all_cars.append(new_car)
24+
25+
def move_cars(self):
26+
for car in self.all_cars:
27+
car.backward(self.car_speed)
28+
29+
def level_up(self):
30+
self.car_speed += MOVE_INCREMENT

T/turtle-crossing/main.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import time
2+
from turtle import Screen
3+
from player import Player
4+
from car_manager import CarManager
5+
from scoreboard import Scoreboard
6+
7+
screen = Screen()
8+
screen.setup(width=600, height=600)
9+
screen.tracer(0)
10+
11+
player = Player()
12+
car_manager = CarManager()
13+
score_board = Scoreboard()
14+
15+
screen.listen()
16+
screen.onkey(player.go_up, "Up")
17+
18+
game_is_on = True
19+
while game_is_on:
20+
time.sleep(0.1)
21+
screen.update()
22+
car_manager.create_car()
23+
car_manager.move_cars()
24+
25+
# Detect collision with car
26+
for car in car_manager.all_cars:
27+
if car.distance(player) < 20:
28+
game_is_on = False
29+
score_board.game_over()
30+
31+
# Detect successful crossing
32+
if player.is_at_finish_line():
33+
player.go_to_start()
34+
car_manager.level_up()
35+
score_board.increase_level()
36+
37+
screen.exitonclick()

T/turtle-crossing/player.py

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
from turtle import Turtle
2+
3+
STARTING_POSITION = (0, -280)
4+
MOVE_DISTANCE = 10
5+
FINISH_LINE_Y = 280
6+
7+
8+
class Player(Turtle):
9+
def __init__(self):
10+
super().__init__()
11+
self.shape("turtle")
12+
self.penup()
13+
self.go_to_start()
14+
self.setheading(90)
15+
16+
def go_to_start(self):
17+
self.goto(STARTING_POSITION)
18+
19+
def go_up(self):
20+
self.forward(MOVE_DISTANCE)
21+
22+
def is_at_finish_line(self):
23+
if self.ycor() > FINISH_LINE_Y:
24+
return True
25+
else:
26+
return False

T/turtle-crossing/scoreboard.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
from turtle import Turtle
2+
3+
FONT = ("Courier", 24, "normal")
4+
5+
6+
class Scoreboard(Turtle):
7+
def __init__(self):
8+
super().__init__()
9+
self.level = 1
10+
self.hideturtle()
11+
self.penup()
12+
self.goto(-280, 250)
13+
self.update_score_board()
14+
15+
def update_score_board(self):
16+
self.clear()
17+
self.write(f"Level : {self.level}", align="left", font=FONT)
18+
19+
def increase_level(self):
20+
self.level += 1
21+
self.update_score_board()
22+
23+
def game_over(self):
24+
self.goto(0, 0)
25+
self.write("GAME OVER", align="center", font=FONT)

0 commit comments

Comments
 (0)