DSZI_2020_Projekt/final_evaluation.md
2020-06-14 20:03:18 +02:00

89 lines
3.9 KiB
Markdown

##### Raport przygotowały: Sara Kowalska, Marta Roszak, Kinga Molik i Natalia Plitta
##### Raportowany okres: 27 kwietnia - 15 czerwca
##### Niniejszy raport poświęcony jest przekazaniu informacji na temat końcowego stanu projektu grupowego realizowanego na przedmiot Sztuczna Inteligencja w roku akademickim 2019/2020.
W ramach projektu były realizowane 4 mini projekty:
- "Rozpoznawanie talerzy" - Sara Kowalska
- "Ocenianie ciężkostrawności potraw" - Marta Roszak
- "Rozpoznawanie banknotów" - Kinga Molik
- "Polecanie dań" - Natalia Plitta
## Integracja mini projektów w programie głównym ##
Działanie projektów indywidualnych zostało opisane w odpowiednich osobnych raportach. Sposób działania ("chodzenia") agenta został opisany w raporcie dotyczącym działania algorytmu A*. Wszystkie 4 podprojekty zostały zintegrowane w głównym programie w ten sam sposób. W oknie programu zostały umieszczone 4 przyciski uruchamiające poszczególne programy:
![alt text](https://git.wmi.amu.edu.pl/s444412/DSZI_2020_Projekt/raw/master/Restaurant/okno_z_przyciskami.png)
Naciśnięcie któregoś z nich wywołuje odpowiednią funkcję - *classify() / evaluate() / payment() / Tree_natalia()*, która wykonuje przykładowy ruch agenta prezentujący dane zagadnienie:
```python
flag = True
clock = pygame.time.Clock()
while flag:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
quit()
button("Rozpoznawanie talerzy", 0, width + 1, 150, 48, light_beige, white, classify)
button("Ciężkostrawność dań", 150, width + 1, 150, 48, light_beige, white, evaluate)
button("Rozpoznawanie banknotów", 300, width + 1, 150, 48, light_beige, white, payment)
button("Polecanie dań", 450, width + 1, 150, 48, light_beige, white, Tree_natalia)
redrawWindow(window)
```
Funkcja *button()* zdefiniowana jest następująco:
```python
def button(msg, x, y, w, h, ic, ac, action=None):
mouse = pygame.mouse.get_pos()
click = pygame.mouse.get_pressed()
if x+w > mouse[0] > x and y+h > mouse[1] > y:
pygame.draw.rect(window, ac, (x, y, w, h))
if click[0] == 1 and action != None:
print("pressed")
action(1)
else:
pygame.draw.rect(window, ic, (x, y, w, h))
smallText = pygame.font.Font("freesansbold.ttf", 15)
words = [msg.split(' ')]
textSurf, textRect = text_objects(words[0][0], smallText)
textRect.center = ((x+(w/2)), (y+(h/4)))
window.blit(textSurf, textRect)
textSurf, textRect = text_objects(words[0][1], smallText)
textRect.center = ((x + (w / 2)), (y + (3*h / 4)))
window.blit(textSurf, textRect)
```
Sczytywana jest tutaj pozycja myszki - "sprawdzane jest", czy został naciśnięty lewy przycisk myszy i jeśli tak, to na który przycisk kliknął użytkownik. Zdefiniowany jest również wygląd tekstu znajdującego się na przyciskach.
Funkcja *button()* wywoływana jest też w funkcji *redrawWindow()*, która odpowiada za odświeżanie wyświetlanego okna:
```python
def redrawWindow(surface):
surface.fill(beige)
bot.draw(surface)
kitchen.draw(surface)
for i in range(len(tables)):
tables[i].draw(surface)
for i in range(len(puddles)):
image = pygame.image.load(r'puddle.png')
image = pygame.transform.scale(image, (sizeBetween - 1, sizeBetween - 1))
surface.blit(image, (puddles[i][0] * sizeBetween + 1, puddles[i][1] * sizeBetween + 1))
drawGrid(width, rows, surface)
button("Rozpoznawanie talerzy", 0, width + 1, 150, 48, light_beige, white)
button("Ciężkostrawność dań", 150, width + 1, 150, 48, light_beige, white)
button("Rozpoznawanie banknotów", 300, width + 1, 150, 48, light_beige, white)
button("Polecanie dań", 450, width + 1, 150, 48, light_beige, white)
pygame.display.update()
```
Po bezawaryjnym wykonaniu funkcji - ruchu agenta, aplikacja zostaje wyłączona.