コード例 #1
0
def main():
    screen = Screen()
    screen.setup(width=WINDOW_WIDTH, height=WINDOW_HEIGHT)
    screen.tracer(0)
    draw_safe_zones()
    new_player = Player()
    level = Scoreboard((-(WINDOW_WIDTH / 2 - 80), WINDOW_HEIGHT / 2 - 40))
    car_man = CarManager((WINDOW_WIDTH, WINDOW_HEIGHT))
    screen.onkey(new_player.move, "Up")
    screen.onkey(screen.bye, "Escape")
    screen.colormode(255)
    screen.bgcolor((99, 98, 99))

    game_is_on = True
    while game_is_on:
        screen.listen()
        screen.update()
        time.sleep(0.1)
        car_man.move(level.get_level())
        if new_player.safe():
            new_player.restart()
            level.update_score()

        if car_man.check_collision(new_player):
            level.game_over()
            game_is_on = False

        if randint(0, 3) == 2:
            car_man.add_car()

    screen.exitonclick()
コード例 #2
0
def add_car():
    """ Adds a new car record """

    car_json = request.get_json()

    car_mgr = CarManager(DB_NAME)

    try:
        car_mgr.add_car(car_json['make'], car_json['model'], car_json['year'],
                        car_json['price'])

        response = app.response_class(status=200)
    except ValueError as e:
        response = app.response_class(response=str(e), status=400)

    return response
コード例 #3
0
screen.onkey(player.move_up, "Up")
screen.onkey(player.move_down, "Down")
screen.onkey(debug_mode, "d")

# Start game playing
game_is_on = True  # Looping variable to indicate if we want to keep the game still playing
frame = 0
level = 0
while game_is_on:  # Start the continuous game loop until this variable is set to False
    time.sleep(
        0.1)  # Pause by 0.1 seconds between frames to create animation effect
    frame += 1
    screen.update()  # Update screen and show user latest frame

    if frame % 6 == 0:
        car_manager.add_car()
    car_manager.move(level)

    for car in car_manager.cars_on_road:
        if player.distance(car) < 10:
            scoreboard.game_over(level)
            player.color("red")
            player.shape("circle")
            player.shapesize(3)
            screen.update()
            game_is_on = False

    if player.level_complete():
        level += 1
        scoreboard.refresh(level)
        player.next_level()
コード例 #4
0
class TestCarManager(TestCase):
    """ Tests the CarManager class """

    TEST_DB = 'test_carlot.sqlite'

    def setUp(self):
        """ Set up test environment """
        self.logPoint()

        conn = sqlite3.connect(TestCarManager.TEST_DB)

        c = conn.cursor()
        c.execute('''
                  CREATE TABLE cars
                  (id INTEGER PRIMARY KEY ASC,
                   timestamp DATETIME NOT NULL,
                   make VARCHAR(250) NOT NULL,
                   model VARCHAR(250) NOT NULL,           
                   year INTEGER NOT NULL,
                   price REAL NOT NULL
                  )
                  ''')

        conn.commit()
        conn.close()

        self.car_mgr = CarManager("sqlite:///" + TestCarManager.TEST_DB)

    def tearDown(self):
        """ call log message for test"""
        self.logPoint()
        os.remove(TestCarManager.TEST_DB)

    def logPoint(self):
        """ Log out testing information """
        current_test = self.id().split('.')[-1]
        calling_function = inspect.stack()[1][3]
        print('in %s - %s()' % (current_test, calling_function))

    def test_add_car_success(self):
        """ TP-01 - Success test on add_car """

        cars_before = self.car_mgr.get_all_cars()
        self.assertEqual(len(cars_before), 0)

        self.car_mgr.add_car("Honda", "Civic", 2010, 5999.0)
        self.car_mgr.add_car("Ford", "Explorer", 2017, 32500.99)

        cars_after = self.car_mgr.get_all_cars()
        self.assertEqual(len(cars_after), 2)

    def test_add_car_invalid(self):
        """ TP-02 - Validation test on add_car """

        with self.assertRaisesRegex(ValueError, "Make must be defined"):
            self.car_mgr.add_car("", "civic", 2010, 5999.0)

        with self.assertRaisesRegex(ValueError, "Model must be defined"):
            self.car_mgr.add_car("honda", "", 2010, 5999.0)

        with self.assertRaisesRegex(ValueError, "Year must be defined"):
            self.car_mgr.add_car("honda", "civic", "2010", 5999.0)

        with self.assertRaisesRegex(ValueError, "Price must be defined"):
            self.car_mgr.add_car("honda", "civic", 2010, "5999.0")

        with self.assertRaisesRegex(ValueError, "Make must be defined"):
            self.car_mgr.add_car(None, "civic", 2010, 5999.0)

        with self.assertRaisesRegex(ValueError, "Model must be defined"):
            self.car_mgr.add_car("honda", None, 2010, 5999.0)

        with self.assertRaisesRegex(ValueError, "Year must be defined"):
            self.car_mgr.add_car("honda", "civic", None, 5999.0)

        with self.assertRaisesRegex(ValueError, "Price must be defined"):
            self.car_mgr.add_car("honda", "civic", 2010, None)

        with self.assertRaisesRegex(ValueError,
                                    "Year must be between 1980 and 2019"):
            self.car_mgr.add_car("honda", "civic", 1979, 5999.0)

        with self.assertRaisesRegex(ValueError,
                                    "Year must be between 1980 and 2019"):
            self.car_mgr.add_car("honda", "civic", 2020, 5999.0)

        with self.assertRaisesRegex(ValueError,
                                    "Price must be a positive value"):
            self.car_mgr.add_car("Vancouver", "Edmonton", 2010, -9999.99)

    def test_delete_car_success(self):
        """ TP-04 - Success test on delete_car """

        cars_before = self.car_mgr.get_all_cars()
        self.assertEqual(len(cars_before), 0)

        self.car_mgr.add_car("Honda", "Civic", 2010, 5999.0)
        self.car_mgr.add_car("Ford", "Explorer", 2017, 32500.99)

        cars_between = self.car_mgr.get_all_cars()
        self.assertEqual(len(cars_between), 2)

        for car in cars_between:
            self.car_mgr.delete_car(car.id)

        cars_after = self.car_mgr.get_all_cars()
        self.assertEqual(len(cars_after), 0)

    def test_delete_cart_invalid(self):
        """ TP-05 - Validation test on delete_car """

        with self.assertRaisesRegex(ValueError, "Id must be defined"):
            self.car_mgr.delete_car(None)

        with self.assertRaisesRegex(ValueError, "Id must be defined"):
            self.car_mgr.delete_car("")

        with self.assertRaisesRegex(ValueError, "Id must be positive"):
            self.car_mgr.delete_car(-100)

    def test_get_all_cars_success(self):
        """ TP-06 - Success test on get_all_cars """

        cars_before = self.car_mgr.get_all_cars()
        self.assertEqual(len(cars_before), 0)

        self.car_mgr.add_car("Honda", "Civic", 2010, 5999.0)

        cars_between = self.car_mgr.get_all_cars()
        self.assertEqual(len(cars_between), 1)

        self.car_mgr.add_car("Ford", "Explorer", 2017, 32500.99)

        cars_after = self.car_mgr.get_all_cars()
        self.assertEqual(len(cars_after), 2)
コード例 #5
0
screen = Screen()
screen.setup(width=600, height=600)
screen.tracer(0)

player = Player()
manager = CarManager()
scoreboard = Scoreboard()

game_is_on = True
screen.listen()
screen.onkey(player.move, "Up")

while game_is_on:
    time.sleep(0.1)
    manager.add_car()
    manager.move_cars(scoreboard.get_level())
    screen.update()

    # detect collision with car
    for car in manager.cars:
        if player.distance(car) < 20:
            game_is_on = False
            scoreboard.game_over()

    # detect successful crossing
    if player.at_finish_line():
        scoreboard.increment()
        player.go_home()

screen.exitonclick()
コード例 #6
0
p1 = Player()
cars = CarManager()

screen.listen()
screen.onkey(p1.up, 'w')
screen.onkey(p1.down, 's')

game_is_on = True
while game_is_on:
    time.sleep(0.1)
    screen.update()
    score.display_score()
    cars.move()
    positions = [
        car.position() for car in cars.cars if car.distance(p1.position()) < 23
    ]

    if cars.loop_count % 6 == 0:
        cars.add_car()

    if len(positions) > 0:
        break

    if p1.ycor() >= 280:
        score.update_score()
        p1.lvl_up()
        cars.add_level()

score.game_over()
screen.exitonclick()