Compare commits
4 Commits
999f28a405
...
9ca821bab8
Author | SHA1 | Date | |
---|---|---|---|
9ca821bab8 | |||
7ac1093231 | |||
911876e59a | |||
2dac7c64a9 |
20
App.py
20
App.py
@ -6,19 +6,22 @@ import time
|
|||||||
import displayControler as dCon
|
import displayControler as dCon
|
||||||
import Image
|
import Image
|
||||||
import Osprzet
|
import Osprzet
|
||||||
|
import Ui
|
||||||
|
|
||||||
|
|
||||||
pygame.init()
|
pygame.init()
|
||||||
screen = pygame.display.set_mode((dCon.getScreenWidth(), dCon.getScreenHeihgt()))
|
show_console=True
|
||||||
|
screen = pygame.display.set_mode((dCon.getScreenWidth(show_console), dCon.getScreenHeihgt()))
|
||||||
|
FPS=5
|
||||||
|
clock=pygame.time.Clock()
|
||||||
image_loader=Image.Image()
|
image_loader=Image.Image()
|
||||||
image_loader.load_images()
|
image_loader.load_images()
|
||||||
pole=Pole.Pole(screen,image_loader)
|
pole=Pole.Pole(screen,image_loader)
|
||||||
pole.draw_grid() #musi byc tutaj wywołane ponieważ inicjalizuje sloty do slownika
|
pole.draw_grid() #musi byc tutaj wywołane ponieważ inicjalizuje sloty do slownika
|
||||||
|
ui=Ui.Ui(screen)
|
||||||
#Tractor creation
|
#Tractor creation
|
||||||
traktor_slot = pole.get_slot_from_cord((0, 0))
|
traktor_slot = pole.get_slot_from_cord((0, 0))
|
||||||
traktor = Tractor.Tractor(traktor_slot, screen, Osprzet.plug)
|
traktor = Tractor.Tractor(traktor_slot, screen, Osprzet.plug,clock)
|
||||||
|
|
||||||
|
|
||||||
def init_demo(): #Demo purpose
|
def init_demo(): #Demo purpose
|
||||||
@ -27,8 +30,14 @@ def init_demo(): #Demo purpose
|
|||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
pole.randomize_colors()
|
pole.randomize_colors()
|
||||||
traktor.draw_tractor()
|
traktor.draw_tractor()
|
||||||
|
start_flag=True
|
||||||
while True:
|
while True:
|
||||||
time.sleep(0.5)
|
clock.tick(FPS)
|
||||||
|
if(start_flag):
|
||||||
|
ui.render_text_to_console(string_to_print="Przejazd inicjalizujacy- traktor sprawdza poziom nawodnienia")
|
||||||
|
traktor.initial_move(pole)
|
||||||
|
traktor.reset_pos(pole)
|
||||||
|
start_flag=False
|
||||||
demo_move()
|
demo_move()
|
||||||
old_info=get_info(old_info)
|
old_info=get_info(old_info)
|
||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
@ -42,6 +51,7 @@ def init(demo):
|
|||||||
#TODO: Implement
|
#TODO: Implement
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def demo_move():
|
def demo_move():
|
||||||
current_slot = traktor.slot
|
current_slot = traktor.slot
|
||||||
if current_slot:
|
if current_slot:
|
||||||
|
7
Pole.py
7
Pole.py
@ -55,5 +55,8 @@ class Pole:
|
|||||||
def check_collision(self,mouse_x,mouse_y):
|
def check_collision(self,mouse_x,mouse_y):
|
||||||
mouse_x=math.floor(mouse_x/dCon.CUBE_SIZE)
|
mouse_x=math.floor(mouse_x/dCon.CUBE_SIZE)
|
||||||
mouse_y=math.floor(mouse_y/dCon.CUBE_SIZE)
|
mouse_y=math.floor(mouse_y/dCon.CUBE_SIZE)
|
||||||
collided=self.get_slot_from_cord((mouse_x,mouse_y))
|
if(mouse_x<20):
|
||||||
return collided.print_status()
|
if(mouse_y<12):
|
||||||
|
collided=self.get_slot_from_cord((mouse_x,mouse_y))
|
||||||
|
return collided.print_status()
|
||||||
|
return ""
|
@ -78,5 +78,11 @@ class Roslina:
|
|||||||
self.stan.checkStan()
|
self.stan.checkStan()
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def return_stan(self):
|
||||||
|
return self.stan
|
||||||
|
|
||||||
|
def get_hydrate_stats(self):
|
||||||
|
return self.stan.return_hydrate()
|
||||||
|
|
||||||
def report_status(self):
|
def report_status(self):
|
||||||
return f"Nazwa rosliny: {self.nazwa} "+self.stan.report_all()
|
return f"Nazwa rosliny: {self.nazwa} "+self.stan.report_all()
|
9
Slot.py
9
Slot.py
@ -42,6 +42,13 @@ class Slot:
|
|||||||
|
|
||||||
def random_plant(self): #Probably will not be used later only for demo purpouse
|
def random_plant(self): #Probably will not be used later only for demo purpouse
|
||||||
return self.image_loader.return_random_plant()
|
return self.image_loader.return_random_plant()
|
||||||
|
|
||||||
|
def return_plant(self):
|
||||||
|
return self.plant
|
||||||
|
|
||||||
|
def get_hydrate_stats(self):
|
||||||
|
return self.plant.get_hydrate_stats()
|
||||||
|
|
||||||
def print_status(self):
|
def print_status(self):
|
||||||
return f"wspolrzedne: (X:{self.x_axis} Y:{self.y_axis}) "+self.plant.report_status()
|
return f"wspolrzedne: (X:{self.x_axis} Y:{self.y_axis}) "+self.plant.report_status()
|
||||||
|
|
3
Stan.py
3
Stan.py
@ -44,5 +44,8 @@ class Stan:
|
|||||||
self.akcja = None
|
self.akcja = None
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def return_hydrate(self):
|
||||||
|
return self.nawodnienie
|
||||||
|
|
||||||
def report_all(self):
|
def report_all(self):
|
||||||
return f"Nawodnienie: {self.nawodnienie} Zyznosc: {self.zyznosc} Wzrost: {self.wzrost} Choroba: {self.choroba}"
|
return f"Nawodnienie: {self.nawodnienie} Zyznosc: {self.zyznosc} Wzrost: {self.wzrost} Choroba: {self.choroba}"
|
34
Tractor.py
34
Tractor.py
@ -92,7 +92,7 @@ class Tractor:
|
|||||||
DIRECTION_SOUTH = 'S'
|
DIRECTION_SOUTH = 'S'
|
||||||
DIRECTION_WEST = 'W'
|
DIRECTION_WEST = 'W'
|
||||||
DIRECTION_EAST = 'E'
|
DIRECTION_EAST = 'E'
|
||||||
def __init__(self,slot,screen, osprzet):
|
def __init__(self,slot,screen, osprzet,clock):
|
||||||
self.tractor_images = {
|
self.tractor_images = {
|
||||||
Tractor.DIRECTION_NORTH: pygame.transform.scale(pygame.image.load('images/traktorN.png'),
|
Tractor.DIRECTION_NORTH: pygame.transform.scale(pygame.image.load('images/traktorN.png'),
|
||||||
(dCon.CUBE_SIZE, dCon.CUBE_SIZE)),
|
(dCon.CUBE_SIZE, dCon.CUBE_SIZE)),
|
||||||
@ -108,6 +108,8 @@ class Tractor:
|
|||||||
self.screen=screen
|
self.screen=screen
|
||||||
self.slot=slot
|
self.slot=slot
|
||||||
self.osprzet = osprzet
|
self.osprzet = osprzet
|
||||||
|
self.clock=clock
|
||||||
|
self.slot_hydrate_dict={}
|
||||||
|
|
||||||
|
|
||||||
def draw_tractor(self):
|
def draw_tractor(self):
|
||||||
@ -154,20 +156,48 @@ class Tractor:
|
|||||||
self.current_tractor_image = self.tractor_images[self.direction]
|
self.current_tractor_image = self.tractor_images[self.direction]
|
||||||
|
|
||||||
# sprawdzenie czy następny slot jest dobry
|
# sprawdzenie czy następny slot jest dobry
|
||||||
|
self.do_move_if_valid(pole,next_slot_coordinates)
|
||||||
|
|
||||||
|
def do_move_if_valid(self,pole, next_slot_coordinates):
|
||||||
if next_slot_coordinates and pole.is_valid_move(next_slot_coordinates):
|
if next_slot_coordinates and pole.is_valid_move(next_slot_coordinates):
|
||||||
next_slot = pole.get_slot_from_cord(next_slot_coordinates)
|
next_slot = pole.get_slot_from_cord(next_slot_coordinates)
|
||||||
self.slot.redraw_image()
|
self.slot.redraw_image()
|
||||||
self.slot = next_slot
|
self.slot = next_slot
|
||||||
self.draw_tractor()
|
self.draw_tractor()
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
def random_move(self, pole):
|
def random_move(self, pole):
|
||||||
|
self.clock.tick(2)
|
||||||
# losowanie skrętu
|
# losowanie skrętu
|
||||||
turn_direction = random.choice([self.turn_left, self.turn_right])
|
turn_direction = random.choice([self.turn_left, self.turn_right])
|
||||||
turn_direction()
|
turn_direction()
|
||||||
time.sleep(0.5)
|
self.clock.tick(5)
|
||||||
# wykonanie ruchu do przodu z uwzględnieniem aktualnej orientacji
|
# wykonanie ruchu do przodu z uwzględnieniem aktualnej orientacji
|
||||||
self.move_forward(pole)
|
self.move_forward(pole)
|
||||||
|
|
||||||
|
def reset_pos(self,pole):
|
||||||
|
self.do_move_if_valid(pole,(0,0))
|
||||||
|
|
||||||
|
def initial_move(self,pole):
|
||||||
|
for y in range (0,12):
|
||||||
|
if(y%2==0):
|
||||||
|
for x in range(0,20):
|
||||||
|
self.snake_move(pole,x,y)
|
||||||
|
else:
|
||||||
|
for x in range(20,0,-1):
|
||||||
|
self.snake_move(pole,x,y)
|
||||||
|
|
||||||
|
|
||||||
|
def snake_move(self,pole,x,y):
|
||||||
|
next_slot_coordinates=(x,y)
|
||||||
|
if(self.do_move_if_valid(pole,next_slot_coordinates)):
|
||||||
|
self.slot_hydrate_dict[(x,y)]= pole.get_slot_from_cord((x,y)).get_hydrate_stats() #Budowanie slownika slotow z poziomem nawodnienia dla traktorka
|
||||||
|
self.clock.tick(10)
|
||||||
|
for event in pygame.event.get():
|
||||||
|
if event.type == pygame.QUIT:
|
||||||
|
quit()
|
||||||
|
|
||||||
#to tak zrobiłam już na później, może się przyda
|
#to tak zrobiłam już na później, może się przyda
|
||||||
def change_osprzet(self, new_osprzet):
|
def change_osprzet(self, new_osprzet):
|
||||||
|
21
Ui.py
21
Ui.py
@ -7,10 +7,25 @@ class Ui:
|
|||||||
def __init__(self,screen):
|
def __init__(self,screen):
|
||||||
self.screen=screen
|
self.screen=screen
|
||||||
self.font='freesansbold.ttf' #Feel free to change it :D
|
self.font='freesansbold.ttf' #Feel free to change it :D
|
||||||
self.font_size=int(32)
|
self.font_size=int(16)
|
||||||
def render_text(self,string_to_print):
|
def render_text(self,string_to_print):
|
||||||
font=pygame.font.Font(self.font,self.font_size)
|
font=pygame.font.Font(self.font,self.font_size)
|
||||||
text=font.render(string_to_print,True,Colors.BLACK,Colors.WHITE)
|
text=font.render(string_to_print,True,Colors.BLACK,Colors.WHITE)
|
||||||
textRect=text.get_rect()
|
textRect=text.get_rect()
|
||||||
textRect.center=(dCon.getScreenWidth() // 2,dCon.getScreenHeihgt() // 2)
|
textRect.center=(dCon.getGameWidth() // 2,dCon.getScreenHeihgt() // 2)
|
||||||
self.screen.blit(text,textRect)
|
self.screen.blit(text,textRect)
|
||||||
|
|
||||||
|
def render_text_to_console(self,string_to_print):
|
||||||
|
font=pygame.font.Font(self.font,self.font_size)
|
||||||
|
self.break_string_to_console(string_to_print)
|
||||||
|
line=10
|
||||||
|
for string in self.to_print:
|
||||||
|
text=font.render(string,True,Colors.BLACK,Colors.WHITE)
|
||||||
|
textRect=text.get_rect()
|
||||||
|
textRect.center=(dCon.getGameWidth()+350/2,line)
|
||||||
|
textRect.scale_by(x=350,y=100)
|
||||||
|
self.screen.blit(text,textRect)
|
||||||
|
line=line+18
|
||||||
|
|
||||||
|
def break_string_to_console(self,string_to_print):
|
||||||
|
self.to_print=string_to_print.split(" ")
|
||||||
|
@ -10,8 +10,25 @@ def isValidMove(x, y):
|
|||||||
return False
|
return False
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def getScreenWidth():
|
|
||||||
|
def getGameWidth():
|
||||||
return NUM_X * CUBE_SIZE
|
return NUM_X * CUBE_SIZE
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def getScreenHeihgt():
|
def getScreenHeihgt():
|
||||||
return NUM_Y * CUBE_SIZE
|
return NUM_Y * CUBE_SIZE
|
||||||
|
|
||||||
|
|
||||||
|
def getScreenWidth(show_console):
|
||||||
|
screen_width=getGameWidth()
|
||||||
|
if(show_console):
|
||||||
|
screen_width=screen_width+350
|
||||||
|
return screen_width
|
||||||
|
|
||||||
|
def getConsoleWidth():
|
||||||
|
return 350
|
||||||
|
|
||||||
|
def getConsoleWidthCenter():
|
||||||
|
return getScreenWidth()+getConsoleWidth()/2
|
Loading…
Reference in New Issue
Block a user