Ejemplo n.º 1
0
    all_turtles = []

    race_on = True

    for _ in range(6):
        new_turtle = Turtle(shape="turtle")
        new_turtle.penup()
        new_turtle.color(colors[_])
        new_turtle.goto(x=-230, y=(90 - (_ * 30)))
        all_turtles.append(new_turtle)

    while race_on:
        for turtle in all_turtles:
            turtle.forward(randint(0, 10))
            if turtle.xcor() > 230:
                race_on = False
                winner = turtle.pencolor()

    if winner == user_choice:
        play_again = screen.textinput(title="You win!", prompt="Would you like to play again? (Type 'yes' or 'no'): ")
        if play_again == 'no':
            game_over = True
    else:
        play_again = screen.textinput(title=f"You lose! The {winner} turtle finished first",
                                      prompt="Would you like to play again? (Type 'yes' or 'no'): ")
        if play_again == 'no':
            game_over = True
    screen.clearscreen()

screen.exitonclick()
Ejemplo n.º 2
0
class TurtleRace:

    def __init__(self):

        self.game_setup()
        self.winner = None

    def game_setup(self):
        """Resets the screen and asks for how many turtles to send to the races"""

        self.screen = Screen()

        self.screen.setup(width=500, height=400)

        self.screen.clearscreen()

        self.num_turtles = int(self.screen.numinput("num_turtle", "How many turtles race today?", 2, 2, 5))

        # Sets initial parameters for the turtles - 5 options
        self.names = ["Bob", "John", "Sally", "Rufus", "Marvin"]
        self.colors = ["red", "purple", "green", "yellow", "orange"]
        self.turtley = [-150, -50, 0, 50, 150]
        self.start = -230
        self.is_winner = False

        self.turtles = {}

        self.create_turtles()

        self.play()

    def create_turtles(self):
        """Generates the turtles!!"""
        for turtle_ind in range(self.num_turtles):
            self.turtles[self.names[turtle_ind]]=(Turtle(shape="turtle"))
            self.turtles[self.names[turtle_ind]].color(self.colors[turtle_ind])
            self.turtles[self.names[turtle_ind]].penup()
            self.turtles[self.names[turtle_ind]].goto(x=self.start,y=self.turtley[turtle_ind])



    def start_race(self):

        while not self.is_winner:

            for turtle in self.turtles:
                this_turtle = self.turtles[turtle]
                xchange=randint(1,10)
                next_x = this_turtle.xcor()+xchange
                this_turtle.goto(x=next_x,y=this_turtle.ycor())
                if next_x>=230:
                    self.winner = turtle
                    self.is_winner = True
                    break
                # self.is_winner(next_x)
        self.end_race()

    def end_race(self):

        print(f"We have a winner! Great job, {self.winner}!!!")
        print("Replay? Press r")

    def play(self):
        """Listens for player input"""
        self.screen.listen()
        self.screen.onkeypress(key="g", fun=self.start_race)
        self.screen.onkeypress(key="r", fun=self.game_setup)
        self.screen.exitonclick()
Ejemplo n.º 3
0
class Game:
    def __init__(self):
        self.init_screen()
        self.is_game_on = True
        self.is_game_exited = True
        self.snake = Snake()
        self.food = Food()
        self.scoreboard = Scoreboard()
        self.define_keys()

    def init_screen(self):
        self.screen = Screen()
        self.screen.setup(width=SCREEN_WIDTH, height=SCREEN_HEIGHT)
        self.screen.bgcolor(BG_COLOR)
        self.screen.title(TITLE)

    def set_game_on(self):
        self.is_game_on = True

    def set_game_off(self):
        self.is_game_on = False

    def reset(self):
        self.snake.reset()
        self.food.reset()
        self.scoreboard.reset()
        self.screen.clearscreen()
        self.__init__()
        self.start_game()

    def define_keys(self):
        self.screen.listen()
        self.screen.onkey(key="Up", fun=self.snake.up)
        self.screen.onkey(key="Down", fun=self.snake.down)
        self.screen.onkey(key="Left", fun=self.snake.left)
        self.screen.onkey(key="Right", fun=self.snake.right)
        self.screen.onkey(key="c", fun=self.set_game_off)
        self.screen.onkey(key="r", fun=self.reset)
        self.screen.onkey(key="x", fun=self.exit_game)
        self.screen.onkey(key="s", fun=self.start_game)

    def exit_game(self):
        self.screen.bye()

    def is_snake_on_edge(self):
        xcor = self.snake.xcor()
        ycor = self.snake.ycor()
        edge_up = SCREEN_HEIGHT / 2 - 10
        edge_down = -SCREEN_HEIGHT / 2 - 10
        edge_left = -SCREEN_WIDTH / 2 - 10
        edge_right = SCREEN_WIDTH / 2 - 10

        if xcor < edge_left or \
                xcor > edge_right or \
                ycor < edge_down or \
                ycor > edge_up:
            self.set_game_off()
            self.scoreboard.game_over()

    def start_game(self):
        self.screen.tracer(0)
        while self.is_game_on:
            self.screen.update()
            time.sleep(0.1)
            self.snake.move()
            self.is_snake_on_edge()

            if self.snake.snake_head.distance(self.food) < 20:
                self.food.refresh()
                self.snake.grow_snake()
                self.scoreboard.increase_score()

            for segment in self.snake.segments[2:]:
                if self.snake.snake_head.distance(segment) < 10:
                    self.set_game_off()
                    self.scoreboard.game_over()