feat: add basic controls
This commit is contained in:
		
							
								
								
									
										34
									
								
								src/car.py
									
									
									
									
									
								
							
							
						
						
									
										34
									
								
								src/car.py
									
									
									
									
									
								
							| @@ -1,8 +1,42 @@ | ||||
| from math import radians | ||||
| from src.vec import Vec | ||||
|  | ||||
|  | ||||
| class Car: | ||||
|     MAX_SPEED = 0.05 | ||||
|     MAX_BACK_SPEED = -0.025 | ||||
|     ROTATE_SPEED = radians(1) | ||||
|  | ||||
|     def __init__(self, pos: Vec, direction: Vec) -> None: | ||||
|         self.pos: Vec = pos | ||||
|         self.direction: Vec = direction | ||||
|         self.speed: float = 0 | ||||
|         self.forward: bool = False | ||||
|         self.backward: bool = False | ||||
|         self.left: bool = False | ||||
|         self.right: bool = False | ||||
|  | ||||
|     def update(self): | ||||
|         if self.forward: | ||||
|             self.speed += 0.001 | ||||
|             self.speed = min(self.MAX_SPEED, self.speed) | ||||
|  | ||||
|         if self.backward: | ||||
|             self.speed -= 0.002 | ||||
|             self.speed = max(self.MAX_BACK_SPEED, self.speed) | ||||
|  | ||||
|         rotate_angle: float = 0 | ||||
|         if self.left: | ||||
|             rotate_angle -= self.ROTATE_SPEED | ||||
|         if self.right: | ||||
|             rotate_angle += self.ROTATE_SPEED | ||||
|  | ||||
|         # if self.backward: | ||||
|         #    rotate_angle *= -1 | ||||
|  | ||||
|         if rotate_angle != 0: | ||||
|             self.direction = self.direction.rotate(rotate_angle) | ||||
|  | ||||
|         self.speed *= 0.98 | ||||
|  | ||||
|         self.pos += self.direction * self.speed | ||||
|   | ||||
		Reference in New Issue
	
	Block a user