def main(): # Loop until the user clicks the close button. running = True # Used to manage how fast the screen updates clock = pygame.time.Clock() cam = camera.Camera() # traffic_lamp1 = traffic_lamp.TrafficLamp(1610, 420, 90, 0) # traffic_lamp2 = traffic_lamp.TrafficLamp(2710, 1520, 90, 1) stone_impediment = stone.Stone(200, 200, 90, 0) map_s = pygame.sprite.Group() map_s.add(maps.Map(0, 0, 2)) start_x = maps.MAP_NAVS[0][0] start_y = maps.MAP_NAVS[0][1] maps.FINISH_INDEX = len(maps.MAP_NAVS) - 2 traffic_lamp1 = traffic_lamp.TrafficLamp(maps.TRAFFIC_LAMP_COORDINATES[0]) traffic_lamp2 = traffic_lamp.TrafficLamp(maps.TRAFFIC_LAMP_COORDINATES[1]) print(maps.TRAFFIC_LAMP_COORDINATES[0]) print(maps.TRAFFIC_LAMP_COORDINATES[1]) start_angle = calculate_angle(maps.MAP_NAVS[0][0], maps.MAP_NAVS[0][1], maps.MAP_NAVS[1][0], maps.MAP_NAVS[1][1]) # print("Start angle: ", start_angle) # print("Finish index: ", maps.FINISH_INDEX) controlled_car = car.Car(start_x, start_y, start_angle) cars = pygame.sprite.Group() cars.add(controlled_car) traffic_lamps = pygame.sprite.Group() traffic_lamps.add(traffic_lamp1) traffic_lamps.add(traffic_lamp2) stones = pygame.sprite.Group() stones.add(stone_impediment) stone_status = (stone_impediment.status, len(maps.MAP_NAVS) - 1) cam.set_pos(controlled_car.x, controlled_car.y) flag = 0 # -------- Main Program Loop ----------- while running: flag += 1 keys = pygame.key.get_pressed() # --- Main event loop for event in pygame.event.get(): if event.type == pygame.QUIT: running = False break if event.type == pygame.KEYUP: if keys[K_p]: pass if keys[K_q]: pygame.quit() sys.exit(0) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False break # mouse event if event.type == pygame.MOUSEBUTTONDOWN: pressed1, pressed2, pressed3 = pygame.mouse.get_pressed() if pressed1: print("left click") current_index = controlled_car.current_nav_index random_index = random.randrange(current_index + 3, current_index + 6) if random_index <= (len(maps.MAP_NAVS) - 3) and stone_impediment.status == 0: x = maps.MAP_NAVS[random_index][0] y = maps.MAP_NAVS[random_index][1] stone_impediment.switch_status(x, y) stone_status = (stone_impediment.status, random_index) else: stone_impediment.switch_status(0, 0) stone_status = (0, len(maps.MAP_NAVS) - 1) cam.set_pos(controlled_car.x, controlled_car.y) screen.blit(background, (0, 0)) # update and render map # map_s.update(start_x, start_y) # map_s.update(cam.x, cam.y) map_s.draw(screen) # update and render traffic lamps traffic_lamps_status = [] traffic_lamps.update(cam.x, cam.y) traffic_lamps.draw(screen) # stones.update(cam.x, cam.y) stones.draw(screen) # for lamp in traffic_lamps: # lamp_status = lamp.render(screen) # traffic_lamps_status.append(lamp_status) lamp_status1 = traffic_lamp1.render(screen) lamp_status2 = traffic_lamp2.render(screen) traffic_lamps_status.append(lamp_status1) traffic_lamps_status.append(lamp_status2) # update and render car cars.update(cam.x, cam.y, traffic_lamps_status, stone_status, flag) # screen.blit(cars.sprites[-1],[cam.x, cam.y]) cars.draw(screen) # --- Go ahead and update the screen with what we've drawn. pygame.display.flip() # --- Limit to 60 frames per second clock.tick(60)
def main(): clock = pygame.time.Clock() running = True cam = camera.Camera() # traffic_lamp1 = traffic_lamp.TrafficLamp(1610, 420, 90, 0) # traffic_lamp2 = traffic_lamp.TrafficLamp(2710, 1520, 90, 1) stone_impediment = stone.Stone(20, 20, 90, 0) map_s = pygame.sprite.Group() map_s.add(maps.Map(0, 0, 1)) start_x = maps.MAP_NAVS[0][0] start_y = maps.MAP_NAVS[0][1] maps.FINISH_INDEX = len(maps.MAP_NAVS) - 2 traffic_lamp1 = traffic_lamp.TrafficLamp(maps.TRAFFIC_LAMP_COORDINATES[0]) traffic_lamp2 = traffic_lamp.TrafficLamp(maps.TRAFFIC_LAMP_COORDINATES[1]) print(maps.TRAFFIC_LAMP_COORDINATES[0]) print(maps.TRAFFIC_LAMP_COORDINATES[1]) start_angle = calculate_angle(maps.MAP_NAVS[0][0], maps.MAP_NAVS[0][1], maps.MAP_NAVS[1][0], maps.MAP_NAVS[1][1]) print(maps.MAP_NAVS) # print("Start angle: ", start_angle) # print("Finish index: ", maps.FINISH_INDEX) controlled_car = car.Car(start_x, start_y, start_angle) cars = pygame.sprite.Group() cars.add(controlled_car) traffic_lamps = pygame.sprite.Group() traffic_lamps.add(traffic_lamp1) traffic_lamps.add(traffic_lamp2) stones = pygame.sprite.Group() stones.add(stone_impediment) stone_status = (stone_impediment.status, len(maps.MAP_NAVS) - 1) cam.set_pos(controlled_car.x, controlled_car.y) flag = 0 while running: flag += 1 keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: running = False break if event.type == pygame.KEYUP: if keys[K_p]: pass if keys[K_q]: pygame.quit() sys.exit(0) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False break # mouse event # if event.type == pygame.MOUSEBUTTONDOWN: # pressed1, pressed2, pressed3 = pygame.mouse.get_pressed() # if pressed1: # print("left click") # current_index = controlled_car.current_nav_index # random_index = random.randrange(current_index + 3, current_index + 6) # if random_index <= (len(maps.MAP_NAVS) - 3) and stone_impediment.status == 0: # x = maps.MAP_NAVS[random_index][0] # y = maps.MAP_NAVS[random_index][1] # stone_impediment.switch_status(x, y) # stone_status = (stone_impediment.status, random_index) # else: # stone_impediment.switch_status(0, 0) # stone_status = (0, len(maps.MAP_NAVS) - 1) cam.set_pos(controlled_car.x, controlled_car.y) screen.blit(background, (0, 0)) # update and render map map_s.update(cam.x, cam.y) map_s.draw(screen) # update and render traffic lamps traffic_lamps_status = [] traffic_lamps.update(cam.x, cam.y) traffic_lamps.draw(screen) # update and render stone stones.update(cam.x, cam.y) stones.draw(screen) # for lamp in traffic_lamps: # lamp_status = lamp.render(screen) # traffic_lamps_status.append(lamp_status) lamp_status1 = traffic_lamp1.render(screen) lamp_status2 = traffic_lamp2.render(screen) traffic_lamps_status.append(lamp_status1) traffic_lamps_status.append(lamp_status2) # update and render car cars.update(cam.x, cam.y, traffic_lamps_status, stone_status, flag) cars.draw(screen) # update thay doi pygame.display.flip() # Toc do Frame rate clock.tick(100000)
def main(): clock = pygame.time.Clock() running = True cam = camera.Camera() # traffic_lamp1 = traffic_lamp.TrafficLamp(1610, 420, 90, 0) # traffic_lamp2 = traffic_lamp.TrafficLamp(2710, 1520, 90, 1) stone_impediment = stone.Stone(200, 200, 90, 0) map_s = pygame.sprite.Group() map_s.add(maps.Map(0, 0, 2)) start_x = maps.MAP_NAVS[0][0] start_y = maps.MAP_NAVS[0][1] maps.FINISH_INDEX = len(maps.MAP_NAVS) - 2 traffic_lamp1 = traffic_lamp.TrafficLamp(maps.TRAFFIC_LAMP_COORDINATES[0]) traffic_lamp2 = traffic_lamp.TrafficLamp(maps.TRAFFIC_LAMP_COORDINATES[1]) print('________') print(maps.TRAFFIC_LAMP_COORDINATES[0]) print(maps.TRAFFIC_LAMP_COORDINATES[1]) start_angle = calculate_angle(maps.MAP_NAVS[0][0], maps.MAP_NAVS[0][1], maps.MAP_NAVS[1][0], maps.MAP_NAVS[1][1]) # print("Start angle: ", start_angle) # print("Finish index: ", maps.FINISH_INDEX) controlled_car = car.Car(start_x, start_y, start_angle) cars = pygame.sprite.Group() cars.add(controlled_car) traffic_lamps = pygame.sprite.Group() traffic_lamps.add(traffic_lamp1) traffic_lamps.add(traffic_lamp2) stones = pygame.sprite.Group() stones.add(stone_impediment) stone_status = (stone_impediment.status, len(maps.MAP_NAVS) - 1) cam.set_pos(controlled_car.x, controlled_car.y) flag = 0 ## start = pygame.time.get_ticks() while running: flag += 1 keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: running = False break if event.type == pygame.KEYUP: if keys[K_p]: pass if keys[K_q]: pygame.quit() sys.exit(0) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False break cam.set_pos(controlled_car.x, controlled_car.y) screen.blit(background, (0, 0)) # update and render map map_s.update(cam.x, cam.y) map_s.draw(screen) # update and render traffic lamps traffic_lamps_status = [] traffic_lamps.update(cam.x, cam.y) traffic_lamps.draw(screen) stones.update(cam.x, cam.y) stones.draw(screen) # for lamp in traffic_lamps: # lamp_status = lamp.render(screen) # traffic_lamps_status.append(lamp_status) lamp_status1 = traffic_lamp1.render(screen) lamp_status2 = traffic_lamp2.render(screen) traffic_lamps_status.append(lamp_status1) traffic_lamps_status.append(lamp_status2) # update and render car cars.update(cam.x, cam.y, traffic_lamps_status, stone_status, flag) cars.draw(screen) ##### Add for timer ~~~ font_preferences = [ "Bizarre-Ass Font Sans Serif", "They definitely dont have this installed Gothic", "Papyrus", "Comic Sans MS" ] counting_time = pygame.time.get_ticks() - start # change milliseconds into minutes, seconds, milliseconds counting_minutes = str(int(counting_time / 60000)).zfill(2) counting_seconds = str(int((counting_time % 60000) / 1000)).zfill(2) counting_string = "%s:%s" % (counting_minutes, counting_seconds) counting_text = font.render(str(counting_string), 1, (0, 0, 0)) font_preferences = ["Comic Sans MS"] text = create_text(str(counting_string), font_preferences, 72, (0, 0, 0)) screen.blit(text, (500, 0)) text_x = create_text('X ->' + str(controlled_car.x), font_preferences, 20, (3, 252, 78)) text_y = create_text('Y ->' + str(controlled_car.y), font_preferences, 20, (3, 252, 78)) text_speed = create_text('Speed ->' + str(controlled_car.speed), font_preferences, 20, (3, 252, 78)) screen.blit(text_x, (0, 0)) screen.blit(text_y, (0, 20)) screen.blit(text_speed, (0, 40)) ###### pygame.display.flip() clock.tick(60)
def main(): clock = pygame.time.Clock() running = True cam = camera.Camera() stone_impediment = stone.Stone(200, 200, 90, 0) map_s = pygame.sprite.Group() map_obj = maps.Map(0, 0) map_s.add(map_obj) position, alpha = map_obj.getInitProp() # position = map_obj.position # alpha = map_obj.alpha print("LECH TRAI:", map_obj.do_lech_trai(position)) print("------------------------------------------------------------") print("TỌA ĐỘ TẤT CẢ CÁC ĐIỂM: ", map_obj.pos) print("------------------------------------------------------------") print("LIST ĐIỂM ĐƯỜNG ĐI: ", map_obj.listPoint) print("------------------------------------------------------------") print("TẬP ĐIỂM KỀ: ", map_obj.margin) print("------------------------------------------------------------") print("TẬP CẠNH: ", map_obj.margin_path) print("------------------------------------------------------------") print("ID ĐIỂM LỀ TRÁI: ", map_obj.left_point_index) print("------------------------------------------------------------") print("ID ĐIỂM LỀ PHẢI: ", map_obj.right_point_index) print("------------------------------------------------------------") start_x = maps.MAP_NAVS[0][0] start_y = maps.MAP_NAVS[0][1] maps.FINISH_INDEX = len(maps.MAP_NAVS) - 1 alpha_update = alpha_to_car_angle(alpha / math.pi * 180) start_angle = calculate_angle(maps.MAP_NAVS[0][0], maps.MAP_NAVS[0][1], maps.MAP_NAVS[1][0], maps.MAP_NAVS[1][1]) # khởi tạo đối tượng car với tọa độ x, y và góc hướng controlled_car = car.Car(start_x, start_y, start_angle) cars = pygame.sprite.Group() # nhóm đối tượng car cars.add(controlled_car) # sprite: 1 đối tượng trong game # sprite.group: nhóm các đối tượng vào cùng 1 group để thực hiện việc vẽ lại đồng thời traffic_lamps = pygame.sprite.Group() # nhóm các đối tượng đèn for lamp_pos in maps.TRAFFIC_LAMP_COORDINATES: traffic_lamps.add(traffic_lamp.TrafficLamp(lamp_pos)) stones = pygame.sprite.Group() # nhóm đối tượng stone stones.add(stone_impediment) stone_status = (stone_impediment.status, len(maps.MAP_NAVS) - 1) # di chuyển camera theo car cam.set_pos(controlled_car.x, controlled_car.y) flag = 0 pygame.display.flip() while running: flag += 1 keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: running = False break if event.type == pygame.KEYUP: if keys[K_p]: pass if keys[K_q]: pygame.quit() sys.exit(0) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False break # mouse event if event.type == pygame.MOUSEBUTTONDOWN: pressed1, pressed2, pressed3 = pygame.mouse.get_pressed() if pressed1: print("left click") current_index = controlled_car.current_nav_index random_index = random.randrange( current_index + 3, current_index + 6) if random_index <= (len(maps.MAP_NAVS) - 3) and stone_impediment.status == 0: x = maps.MAP_NAVS[random_index][0] y = maps.MAP_NAVS[random_index][1] stone_impediment.switch_status(x, y) stone_status = (stone_impediment.status, random_index) else: stone_impediment.switch_status(0, 0) stone_status = (0, len(maps.MAP_NAVS) - 1) cam.set_pos(controlled_car.x, controlled_car.y) screen.blit(background, (0, 0)) # update and render map map_s.update(cam.x, cam.y) map_s.draw(screen) # update and render traffic lamps traffic_lamps_status = [] traffic_lamps.update(cam.x, cam.y) traffic_lamps.draw(screen) stones.update(cam.x, cam.y) stones.draw(screen) for lamp in traffic_lamps: lamp_status = lamp.render(screen) traffic_lamps_status.append(lamp_status) # update and render car deviation = map_obj.do_lech_trai( (cam.x, cam.y)) # print('do lech trai:', deviation) cars.update(cam.x, cam.y, traffic_lamps_status, stone_status, deviation, flag) cars.draw(screen) pygame.display.flip() clock.tick(60)
def main(): clock = pygame.time.Clock() running = True cam = camera.Camera() stone_impediment = stone.Stone(200, 200, 90, 0) map_s = pygame.sprite.Group() map_s.add(maps.Map(0, 0, 2)) start_x = maps.MAP_NAVS[0][0] start_y = maps.MAP_NAVS[0][1] maps.FINISH_INDEX = len(maps.MAP_NAVS) - 1 start_angle = calculate_angle(maps.MAP_NAVS[0][0], maps.MAP_NAVS[0][1], maps.MAP_NAVS[1][0], maps.MAP_NAVS[1][1]) # tính góc của xe: input x1, y1, x2, y2 print("Start angle: ", start_angle) print("Finish index: ", maps.FINISH_INDEX) # khởi tạo đối tượng car với tọa độ x, y và góc hướng controlled_car = car.Car(start_x, start_y, start_angle) cars = pygame.sprite.Group() # nhóm đối tượng car cars.add(controlled_car) # sprite: 1 đối tượng trong game # sprite.group: nhóm các đối tượng vào cùng 1 group để thực hiện việc vẽ lại đồng thời traffic_lamps = pygame.sprite.Group() # nhóm các đối tượng đèn for lamp_pos in maps.TRAFFIC_LAMP_COORDINATES: traffic_lamps.add(traffic_lamp.TrafficLamp(lamp_pos)) stones = pygame.sprite.Group() # nhóm đối tượng stone stones.add(stone_impediment) stone_status = (stone_impediment.status, len(maps.MAP_NAVS) - 1) # di chuyển camera theo car cam.set_pos(controlled_car.x, controlled_car.y) flag = 0 pygame.display.flip() while running: flag += 1 keys = pygame.key.get_pressed() for event in pygame.event.get(): if event.type == pygame.QUIT: running = False break if event.type == pygame.KEYUP: if keys[K_p]: pass if keys[K_q]: pygame.quit() sys.exit(0) if event.type == pygame.KEYDOWN and event.key == pygame.K_ESCAPE: running = False break # mouse event if event.type == pygame.MOUSEBUTTONDOWN: pressed1, pressed2, pressed3 = pygame.mouse.get_pressed() if pressed1: print("left click") current_index = controlled_car.current_nav_index random_index = random.randrange(current_index + 3, current_index + 6) if random_index <= (len(maps.MAP_NAVS) - 3) and stone_impediment.status == 0: x = maps.MAP_NAVS[random_index][0] y = maps.MAP_NAVS[random_index][1] stone_impediment.switch_status(x, y) stone_status = (stone_impediment.status, random_index) else: stone_impediment.switch_status(0, 0) stone_status = (0, len(maps.MAP_NAVS) - 1) cam.set_pos(controlled_car.x, controlled_car.y) screen.blit(background, (0, 0)) # update and render map map_s.update(cam.x, cam.y) map_s.draw(screen) # update and render traffic lamps traffic_lamps_status = [] traffic_lamps.update(cam.x, cam.y) traffic_lamps.draw(screen) stones.update(cam.x, cam.y) stones.draw(screen) for lamp in traffic_lamps: lamp_status = lamp.render(screen) traffic_lamps_status.append(lamp_status) # update and render car cars.update(cam.x, cam.y, traffic_lamps_status, stone_status, flag) cars.draw(screen) # blue = 230, 30, 30 # point1 = 635, 525 # point2 = 165, 167 # pygame.draw.lines(screen, blue, False, [(100,100), (150,200), (200,100), point1, point2], 5) pygame.display.flip() clock.tick(60)