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()
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
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()
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)
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()
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()