AI_PROJECT/Tractor.py

103 lines
4.4 KiB
Python
Raw Normal View History

2024-04-12 09:12:38 +02:00
import time
import pygame
import random
import displayControler as dCon
import Slot
2024-03-23 21:00:08 +01:00
import Osprzet
class Tractor:
DIRECTION_NORTH = 'N'
DIRECTION_SOUTH = 'S'
DIRECTION_WEST = 'W'
DIRECTION_EAST = 'E'
2024-03-23 21:00:08 +01:00
def __init__(self,slot,screen, osprzet):
self.tractor_images = {
Tractor.DIRECTION_NORTH: pygame.transform.scale(pygame.image.load('images/traktorN.png'),
(dCon.CUBE_SIZE, dCon.CUBE_SIZE)),
Tractor.DIRECTION_SOUTH: pygame.transform.scale(pygame.image.load('images/traktorS.png'),
(dCon.CUBE_SIZE, dCon.CUBE_SIZE)),
Tractor.DIRECTION_WEST: pygame.transform.scale(pygame.image.load('images/traktorW.png'),
(dCon.CUBE_SIZE, dCon.CUBE_SIZE)),
Tractor.DIRECTION_EAST: pygame.transform.scale(pygame.image.load('images/traktor.png'),
(dCon.CUBE_SIZE, dCon.CUBE_SIZE))
}
self.direction = Tractor.DIRECTION_EAST # początkowy kierunek wschód
self.current_tractor_image = self.tractor_images[self.direction]
self.screen=screen
2024-03-23 21:00:08 +01:00
self.slot=slot
self.osprzet = osprzet
def draw_tractor(self):
self.screen.blit(self.current_tractor_image, (self.slot.x_axis * dCon.CUBE_SIZE, self.slot.y_axis * dCon.CUBE_SIZE))
pygame.display.update()
def turn_left(self):
# zmiana kierunku w lewo
direction_map = {
Tractor.DIRECTION_EAST: Tractor.DIRECTION_NORTH,
Tractor.DIRECTION_NORTH: Tractor.DIRECTION_WEST,
Tractor.DIRECTION_WEST: Tractor.DIRECTION_SOUTH,
Tractor.DIRECTION_SOUTH: Tractor.DIRECTION_EAST
}
self.direction = direction_map[self.direction]
self.current_tractor_image = self.tractor_images[self.direction]
2024-04-12 09:12:38 +02:00
self.draw_tractor()
def turn_right(self):
# zmiana kierunku w prawo
direction_map = {
Tractor.DIRECTION_EAST: Tractor.DIRECTION_SOUTH,
Tractor.DIRECTION_SOUTH: Tractor.DIRECTION_WEST,
Tractor.DIRECTION_WEST: Tractor.DIRECTION_NORTH,
Tractor.DIRECTION_NORTH: Tractor.DIRECTION_EAST
}
self.direction = direction_map[self.direction]
self.current_tractor_image = self.tractor_images[self.direction]
2024-04-12 09:12:38 +02:00
self.draw_tractor()
def move_forward(self, pole):
next_slot_coordinates = None
if self.direction == Tractor.DIRECTION_EAST:
next_slot_coordinates = (self.slot.x_axis + 1, self.slot.y_axis)
self.current_tractor_image = self.tractor_images[self.direction]
elif self.direction == Tractor.DIRECTION_WEST:
next_slot_coordinates = (self.slot.x_axis - 1, self.slot.y_axis)
self.current_tractor_image = self.tractor_images[self.direction]
elif self.direction == Tractor.DIRECTION_SOUTH:
next_slot_coordinates = (self.slot.x_axis, self.slot.y_axis + 1)
self.current_tractor_image = self.tractor_images[self.direction]
elif self.direction == Tractor.DIRECTION_NORTH:
next_slot_coordinates = (self.slot.x_axis, self.slot.y_axis - 1)
self.current_tractor_image = self.tractor_images[self.direction]
# sprawdzenie czy następny slot jest dobry
if next_slot_coordinates and pole.is_valid_move(next_slot_coordinates):
next_slot = pole.get_slot_from_cord(next_slot_coordinates)
2024-04-12 09:12:38 +02:00
self.slot.redraw_image()
2024-03-23 21:00:08 +01:00
self.slot = next_slot
self.draw_tractor()
def random_move(self, pole):
# losowanie skrętu
turn_direction = random.choice([self.turn_left, self.turn_right])
turn_direction()
2024-04-12 09:12:38 +02:00
time.sleep(0.5)
# wykonanie ruchu do przodu z uwzględnieniem aktualnej orientacji
self.move_forward(pole)
2024-03-23 21:00:08 +01:00
#to tak zrobiłam już na później, może się przyda
def change_osprzet(self, new_osprzet):
self.osprzet = new_osprzet
def print_osprzet_info(self):
print("ID:", self.osprzet.id)
print("Marka:", self.osprzet.marka)
print("Model:", self.osprzet.model)
if self.osprzet.akcje:
print("Akcje:")
for akcja in self.osprzet.akcje:
print("- Typ:", akcja.typ)
2024-03-23 21:00:08 +01:00
else:
print("Brak akcji przypisanych do tego sprzętu.")