nowe klasy i drzewo fix
This commit is contained in:
parent
b9fee0a480
commit
47465989b2
@ -3,6 +3,6 @@
|
|||||||
"",
|
"",
|
||||||
"\\decisionTree"
|
"\\decisionTree"
|
||||||
],
|
],
|
||||||
"SelectedNode": "\\decisionTree\\decisionTree.sav",
|
"SelectedNode": "\\decisionTree\\treemaker.py",
|
||||||
"PreviewInSolutionExplorer": false
|
"PreviewInSolutionExplorer": false
|
||||||
}
|
}
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
.vs/slnx.sqlite
BIN
.vs/slnx.sqlite
Binary file not shown.
26
classes.py
26
classes.py
@ -1,11 +1,13 @@
|
|||||||
class Field:
|
class Field:
|
||||||
def __init__(self, fieldType, plantType, isWet, wetTime, isFertilized, fertilizedTime):
|
def __init__(self, fieldType, plantType, isWet, wetTime, isFertilized, fertilizedTime):
|
||||||
self.fieldType =fieldType # good/bad
|
self.fieldType = fieldType # good/bad
|
||||||
self.plantType =plantType # wheat/carrot/cabbage
|
self.plantType = plantType # wheat/carrot/cabbage
|
||||||
self.isWet =isWet # yes/no
|
self.isWet = isWet # yes/no
|
||||||
self.wetTime =wetTime # number
|
self.wetTime = wetTime # number
|
||||||
self.isFertilized =isFertilized # yes/no
|
self.isFertilized = isFertilized # yes/no
|
||||||
self.fertilizedTime =fertilizedTime # number
|
self.fertilizedTime = fertilizedTime # number
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
class Plant:
|
class Plant:
|
||||||
def __init__(self, plantType, growthState):
|
def __init__(self, plantType, growthState):
|
||||||
@ -22,3 +24,15 @@ class Player:
|
|||||||
x = 0
|
x = 0
|
||||||
y = 0
|
y = 0
|
||||||
rotation = 0
|
rotation = 0
|
||||||
|
|
||||||
|
|
||||||
|
class Watering:
|
||||||
|
def __init__(self, rain, planted, temperature, sunny, snowy, moist, rotten, dayTime ):
|
||||||
|
self.rain = rain # yes/no
|
||||||
|
self.planted = planted # yes/no
|
||||||
|
self.temperature = temperature # good/bad
|
||||||
|
self.sunny = sunny
|
||||||
|
self.snowy = snowy # yes/no
|
||||||
|
self.moist = moist # yes/no
|
||||||
|
self.rotten = rotten # yes/no
|
||||||
|
self.dayTime = dayTime # 1 2 3 4
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
|
|
||||||
#from sklearn.datasets import load_iris
|
# from sklearn.datasets import load_iris
|
||||||
from sklearn.tree import export_text
|
from sklearn.tree import export_text
|
||||||
|
|
||||||
from sklearn.tree import DecisionTreeClassifier
|
from sklearn.tree import DecisionTreeClassifier
|
||||||
@ -8,7 +9,7 @@ import joblib
|
|||||||
|
|
||||||
X1 = []
|
X1 = []
|
||||||
view = []
|
view = []
|
||||||
with open("decisionTree/database.txt", 'r') as f:
|
with open("database.txt", 'r') as f:
|
||||||
for line in f:
|
for line in f:
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
test_list = [int(i) for i in line]
|
test_list = [int(i) for i in line]
|
||||||
@ -52,14 +53,14 @@ with open("decisionTree/database.txt", 'r') as f:
|
|||||||
view.append(x)
|
view.append(x)
|
||||||
X1.append(test_list)
|
X1.append(test_list)
|
||||||
|
|
||||||
f = open("decisionTree/learning_set.txt", "w") #zapisuje atrybuty s³ownie
|
f = open("learning_set.txt", "w") # zapisuje atrybuty s?ownie
|
||||||
for i in view:
|
for i in view:
|
||||||
f.write(str(i)+"\n")
|
f.write(str(i)+"\n")
|
||||||
f.close()
|
f.close()
|
||||||
|
|
||||||
|
|
||||||
Y1 = []
|
Y1 = []
|
||||||
with open("decisionTree/decissions.txt", 'r') as f: #czyta decyzje
|
with open("decissions.txt", 'r') as f: # czyta decyzje
|
||||||
for line in f:
|
for line in f:
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
test = int(line)
|
test = int(line)
|
||||||
@ -67,9 +68,9 @@ with open("decisionTree/decissions.txt", 'r') as f: #czyta decyzje
|
|||||||
|
|
||||||
dataset = X1
|
dataset = X1
|
||||||
decision = Y1
|
decision = Y1
|
||||||
labels = ['Rain','Plant','Temperature','Sun','Snow','Moisture','Rotten','Time']
|
labels = ['Rain', 'Plant', 'Temperature', 'Sun', 'Snow', 'Moisture', 'Rotten', 'Time']
|
||||||
model = DecisionTreeClassifier(random_state=0, max_depth=20).fit(dataset, decision)
|
model = DecisionTreeClassifier(random_state=0, max_depth=20).fit(dataset, decision)
|
||||||
filename = 'decisionTree/decisionTree.sav'
|
filename = 'decisionTree.sav'
|
||||||
print("Model trained")
|
print("Model trained")
|
||||||
print("Decision tree:")
|
print("Decision tree:")
|
||||||
print(export_text(model, feature_names=labels))
|
print(export_text(model, feature_names=labels))
|
||||||
|
556
main.py
556
main.py
@ -1,9 +1,19 @@
|
|||||||
|
import joblib
|
||||||
|
import numpy as np
|
||||||
import pygame
|
import pygame
|
||||||
|
import random
|
||||||
|
|
||||||
|
from genetic_algorithm import genetic_algorithm
|
||||||
|
|
||||||
|
import torch
|
||||||
|
from torch import nn
|
||||||
|
from torchvision import datasets, transforms
|
||||||
|
from torchvision.transforms import Lambda
|
||||||
|
from PIL import Image
|
||||||
|
|
||||||
import astar
|
import astar
|
||||||
from classes import Field, Plant, Fertilizer, Player
|
from classes import Field, Player, Watering
|
||||||
from bfs import Node
|
from bfs import Istate, succ
|
||||||
from bfs import Istate, print_moves, succ
|
|
||||||
from bfs import graphsearch
|
from bfs import graphsearch
|
||||||
from board import Grid, Box, Obstacle, getGridBoxes, gridObjects
|
from board import Grid, Box, Obstacle, getGridBoxes, gridObjects
|
||||||
from screen import SCREEN
|
from screen import SCREEN
|
||||||
@ -14,8 +24,81 @@ from screen import SCREEN
|
|||||||
Ucelu = False
|
Ucelu = False
|
||||||
SCREENX = 500
|
SCREENX = 500
|
||||||
SCREENY = 500
|
SCREENY = 500
|
||||||
|
device = torch.device('cpu')
|
||||||
|
model1 = nn.Sequential(nn.Linear(30000, 10000), nn.ReLU(), nn.Linear(10000, 10000), nn.ReLU(), nn.Linear(10000, 10000), nn.Linear(10000, 4), nn.LogSoftmax(dim=-1)).to(device)
|
||||||
|
# model1.load_state_dict(torch.load("./NN/trained"))
|
||||||
|
|
||||||
pygame.display.set_caption('Inteligentny Traktor')
|
pygame.display.set_caption('Inteligentny Traktor')
|
||||||
|
plants = [[], [], []]
|
||||||
|
plants[0].append(Image.open("NN/w1.png"))
|
||||||
|
plants[0].append(Image.open("NN/w2.png"))
|
||||||
|
plants[0].append(Image.open("NN/w3.png"))
|
||||||
|
plants[1].append(Image.open("NN/c1.png"))
|
||||||
|
plants[1].append(Image.open("NN/c2.png"))
|
||||||
|
plants[1].append(Image.open("NN/c3.png"))
|
||||||
|
plants[2].append(Image.open("NN/ca1.png"))
|
||||||
|
plants[2].append(Image.open("NN/ca2.png"))
|
||||||
|
plants[2].append(Image.open("NN/ca3.png"))
|
||||||
|
b = [Image.open("NN/b1.png").convert('RGBA'), Image.open("NN/b2.png").convert('RGBA'), Image.open("NN/b3.png").convert('RGBA')]
|
||||||
|
|
||||||
|
|
||||||
|
def generate(water, fertilizer, plantf):
|
||||||
|
if water == 1:
|
||||||
|
new_im = Image.new('RGB', (100, 100),
|
||||||
|
(160 + random.randint(-10, 10), 80 + random.randint(-10, 10), 40 + random.randint(-10, 10)))
|
||||||
|
tmp = plants[plantf][random.randint(0, 2)].resize(
|
||||||
|
(25 + random.randint(-10, 25), 25 + random.randint(-10, 25))).rotate(random.randint(0, 359))
|
||||||
|
new_im.paste(tmp, (random.randint(0, 50), random.randint(0, 50)), tmp)
|
||||||
|
if fertilizer:
|
||||||
|
tmp = b[random.randint(0, 2)].resize(
|
||||||
|
(20 + random.randint(0, 25), 20 + random.randint(0, 25))).rotate(random.randint(0, 359))
|
||||||
|
new_im.paste(tmp, (random.randint(25, 75), random.randint(25, 75)), tmp)
|
||||||
|
else:
|
||||||
|
if fertilizer:
|
||||||
|
new_im = Image.new('RGB', (100, 100),
|
||||||
|
(
|
||||||
|
50 + random.randint(-10, 10), 25 + random.randint(-10, 10),
|
||||||
|
0 + random.randint(-10, 10)))
|
||||||
|
tmp = plants[plantf][random.randint(0, 2)].resize(
|
||||||
|
(25 + random.randint(-10, 25), 25 + random.randint(-10, 25))).rotate(random.randint(0, 359))
|
||||||
|
new_im.paste(tmp, (random.randint(0, 50), random.randint(0, 50)), tmp)
|
||||||
|
tmp = b[random.randint(0, 2)].resize(
|
||||||
|
(20 + random.randint(0, 25), 20 + random.randint(0, 25))).rotate(random.randint(0, 359))
|
||||||
|
new_im.paste(tmp, (random.randint(25, 75), random.randint(25, 75)), tmp)
|
||||||
|
|
||||||
|
else:
|
||||||
|
if random.randint(0, 1) == 1:
|
||||||
|
new_im = Image.new('RGB', (100, 100),
|
||||||
|
(50 + random.randint(-10, 10), 25 + random.randint(-10, 10),
|
||||||
|
0 + random.randint(-10, 10)))
|
||||||
|
else:
|
||||||
|
new_im = Image.new('RGB', (100, 100),
|
||||||
|
(160 + random.randint(-10, 10), 80 + random.randint(-10, 10),
|
||||||
|
40 + random.randint(-10, 10)))
|
||||||
|
if random.randint(0, 1) == 1: # big
|
||||||
|
tmp = plants[plantf][random.randint(0, 2)].resize(
|
||||||
|
(75 + random.randint(-10, 25), 75 + random.randint(-10, 25))).rotate(random.randint(0, 359))
|
||||||
|
new_im.paste(tmp, (random.randint(0, 15), random.randint(0, 15)), tmp)
|
||||||
|
else:
|
||||||
|
tmp = plants[plantf][random.randint(0, 2)].resize(
|
||||||
|
(random.randint(10, 80), random.randint(10, 80))).rotate(random.randint(0, 359))
|
||||||
|
datas = tmp.getdata()
|
||||||
|
|
||||||
|
new_image_data = []
|
||||||
|
for item in datas:
|
||||||
|
# change all white (also shades of whites) pixels to yellow
|
||||||
|
if item[0] in list(range(190, 256)):
|
||||||
|
new_image_data.append(
|
||||||
|
(random.randint(0, 10), 255 + random.randint(-150, 0), random.randint(0, 10)))
|
||||||
|
else:
|
||||||
|
new_image_data.append(item)
|
||||||
|
|
||||||
|
# update image data
|
||||||
|
tmp.putdata(new_image_data)
|
||||||
|
new_im.paste(tmp, (random.randint(0, 30), random.randint(0, 30)), tmp)
|
||||||
|
|
||||||
|
return new_im
|
||||||
|
|
||||||
|
|
||||||
# COLORS
|
# COLORS
|
||||||
WHITE = (255, 255, 255)
|
WHITE = (255, 255, 255)
|
||||||
@ -43,18 +126,19 @@ obstacles = 1
|
|||||||
|
|
||||||
# BFS Variables
|
# BFS Variables
|
||||||
|
|
||||||
|
startNode = Istate(1, 1, 1)
|
||||||
|
goalNode = [1, 1]
|
||||||
startNode = Istate( 1,1,1)
|
|
||||||
goalNode = [1,1]
|
|
||||||
|
|
||||||
graph = dict()
|
graph = dict()
|
||||||
pathFound = [] # Store the path in a list box index to draw on later
|
pathFound = [] # Store the path in a list box index to draw on later
|
||||||
|
|
||||||
def drawGrid(sizex,sizey):
|
wheat_path = []
|
||||||
|
carrot_path = []
|
||||||
|
cabbage_path = []
|
||||||
|
|
||||||
|
def drawGrid(sizex, sizey):
|
||||||
spaceX = SCREENX // sizex
|
spaceX = SCREENX // sizex
|
||||||
spaceY = SCREENY // sizey
|
spaceY = SCREENY // sizey
|
||||||
width = 2
|
|
||||||
|
|
||||||
counter = 1
|
counter = 1
|
||||||
for i in range(sizex):
|
for i in range(sizex):
|
||||||
@ -63,16 +147,18 @@ def drawGrid(sizex,sizey):
|
|||||||
g = Grid(50 + i*50, 50 + j*50, spaceX, spaceY)
|
g = Grid(50 + i*50, 50 + j*50, spaceX, spaceY)
|
||||||
gridObjects[counter] = g
|
gridObjects[counter] = g
|
||||||
counter += 1
|
counter += 1
|
||||||
def generateGraph(row,col):
|
|
||||||
|
|
||||||
|
def generateGraph(row, col):
|
||||||
# This function generates a graph based on the gridObjects instantiated!
|
# This function generates a graph based on the gridObjects instantiated!
|
||||||
sample_graph = {'A':['B','C','E'],
|
# sample_graph = {'A': ['B', 'C', 'E'],
|
||||||
'B':['A','D','E'],
|
# 'B': ['A', 'D', 'E'],
|
||||||
'C':['A','F','G'],
|
# 'C': ['A', 'F', 'G'],
|
||||||
'D':['B'],
|
# 'D': ['B'],
|
||||||
'E':['A','B','D'],
|
# 'E': ['A', 'B', 'D'],
|
||||||
'F':['C'],
|
# 'F': ['C'],
|
||||||
'G':['C']
|
# 'G': ['C']
|
||||||
}
|
# }
|
||||||
|
|
||||||
miniG = {}
|
miniG = {}
|
||||||
for grid in range(len(gridObjects)):
|
for grid in range(len(gridObjects)):
|
||||||
@ -133,12 +219,13 @@ def generateGraph(row,col):
|
|||||||
|
|
||||||
return miniG2
|
return miniG2
|
||||||
|
|
||||||
def drawGraph(pathF):
|
|
||||||
#Draws the path given the path-list
|
|
||||||
global Ucelu
|
|
||||||
#print(pathF)
|
|
||||||
|
|
||||||
if (Ucelu == False):
|
def drawGraph(pathF):
|
||||||
|
# Draws the path given the path-list
|
||||||
|
global Ucelu
|
||||||
|
# print(pathF)
|
||||||
|
|
||||||
|
if not Ucelu:
|
||||||
for grid in pathF:
|
for grid in pathF:
|
||||||
# g = gridObjects[grid] # Get the grid-box object mentioned in the path
|
# g = gridObjects[grid] # Get the grid-box object mentioned in the path
|
||||||
# x = g.x
|
# x = g.x
|
||||||
@ -151,9 +238,9 @@ def drawGraph(pathF):
|
|||||||
if grid == 'rotate_right':
|
if grid == 'rotate_right':
|
||||||
player.rotation = (player.rotation - 90) % 360
|
player.rotation = (player.rotation - 90) % 360
|
||||||
if grid == 'rotate_left':
|
if grid == 'rotate_left':
|
||||||
player.rotation = (player.rotation + 90) %360
|
player.rotation = (player.rotation + 90) % 360
|
||||||
|
|
||||||
#( player.rotation)
|
# (player.rotation)
|
||||||
|
|
||||||
if grid == 'move':
|
if grid == 'move':
|
||||||
if player.rotation == 0:
|
if player.rotation == 0:
|
||||||
@ -169,49 +256,11 @@ def drawGraph(pathF):
|
|||||||
if player.y > 0:
|
if player.y > 0:
|
||||||
player.y = player.y - 1
|
player.y = player.y - 1
|
||||||
|
|
||||||
|
|
||||||
# if player.x < (x/50 - 1):
|
|
||||||
# a = 1
|
|
||||||
# if player.x > (x/50 - 1):
|
|
||||||
# a =2
|
|
||||||
# if player.y < (y/50 - 1):
|
|
||||||
# a =3
|
|
||||||
# if player.y > (y/50 - 1):
|
|
||||||
# a =4
|
|
||||||
#
|
|
||||||
# if a==1:
|
|
||||||
# # player.x = x/50 - 1
|
|
||||||
# player.rotation = 0
|
|
||||||
# if a==2:
|
|
||||||
# # player.x = x/50 - 1
|
|
||||||
# player.rotation = 180
|
|
||||||
# if a==3:
|
|
||||||
# # player.y = y/50 - 1
|
|
||||||
# player.rotation = 270
|
|
||||||
# if a==4:
|
|
||||||
# # player.y = y/50 - 1
|
|
||||||
# player.rotation = 90
|
|
||||||
|
|
||||||
|
|
||||||
# tmpImg = pygame.transform.rotate(imgPlayer, player.rotation)
|
|
||||||
# if player.rotation == 180:
|
|
||||||
# tmpImg = pygame.transform.flip(tmpImg, True, True)
|
|
||||||
# tmpImg = pygame.transform.flip(tmpImg, True, False)
|
|
||||||
#
|
|
||||||
# #player is seen on the way
|
|
||||||
# SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y))
|
|
||||||
# pygame.display.update()
|
|
||||||
# # pygame.time.wait(300)
|
|
||||||
|
|
||||||
# player.y = y/50 - 1
|
|
||||||
# player.x = x/50 - 1
|
|
||||||
|
|
||||||
# -----------------------------
|
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(T):
|
while i < len(T):
|
||||||
j = 0
|
j = 0
|
||||||
while j < len(T[i]):
|
while j < len(T[i]):
|
||||||
#color = (255, 255, 255, 0)
|
# color = (255, 255, 255, 0)
|
||||||
if T[i][j].isWet == 0:
|
if T[i][j].isWet == 0:
|
||||||
# a = 1
|
# a = 1
|
||||||
color = (160, 80, 40, 0)
|
color = (160, 80, 40, 0)
|
||||||
@ -219,7 +268,7 @@ def drawGraph(pathF):
|
|||||||
# a = 1
|
# a = 1
|
||||||
color = (50, 25, 0, 0)
|
color = (50, 25, 0, 0)
|
||||||
|
|
||||||
#Covers 'player' on the way
|
# Covers 'player' on the way
|
||||||
pygame.draw.rect(SCREEN, color, pygame.Rect(50 + 50 * i, 50 + 50 * j, 50, 50))
|
pygame.draw.rect(SCREEN, color, pygame.Rect(50 + 50 * i, 50 + 50 * j, 50, 50))
|
||||||
if T[i][j].plantType == 1:
|
if T[i][j].plantType == 1:
|
||||||
SCREEN.blit(imgWheat, (50 + 50 * i, 50 + 50 * j))
|
SCREEN.blit(imgWheat, (50 + 50 * i, 50 + 50 * j))
|
||||||
@ -237,7 +286,6 @@ def drawGraph(pathF):
|
|||||||
for obs in obstacleObjects:
|
for obs in obstacleObjects:
|
||||||
obstacleObjects[obs].draw()
|
obstacleObjects[obs].draw()
|
||||||
|
|
||||||
|
|
||||||
for bx in boxObjects:
|
for bx in boxObjects:
|
||||||
boxObjects[bx].draw()
|
boxObjects[bx].draw()
|
||||||
|
|
||||||
@ -252,30 +300,21 @@ def drawGraph(pathF):
|
|||||||
tmpImg = pygame.transform.flip(tmpImg, True, True)
|
tmpImg = pygame.transform.flip(tmpImg, True, True)
|
||||||
tmpImg = pygame.transform.flip(tmpImg, True, False)
|
tmpImg = pygame.transform.flip(tmpImg, True, False)
|
||||||
|
|
||||||
#player is seen on the way
|
# player is seen on the way
|
||||||
SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y))
|
SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y))
|
||||||
|
|
||||||
# --------------------------------------
|
|
||||||
|
|
||||||
# tmpImg = pygame.transform.rotate(imgPlayer, player.rotation)
|
|
||||||
# # if flip:
|
|
||||||
# # if flip == True:
|
|
||||||
# if player.rotation == 180:
|
|
||||||
# tmpImg = pygame.transform.flip(tmpImg, True, True)
|
|
||||||
# tmpImg = pygame.transform.flip(tmpImg, True, False)
|
|
||||||
#
|
|
||||||
# SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y))
|
|
||||||
|
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
pygame.time.wait(300)
|
pygame.time.wait(300)
|
||||||
SCREEN.fill((WHITE))
|
SCREEN.fill(WHITE)
|
||||||
# pygame.time.wait(50)
|
# pygame.time.wait(50)
|
||||||
# pygame.draw.rect(SCREEN, WHITE, pygame.Rect(x, y, sx, sy))
|
# pygame.draw.rect(SCREEN, WHITE, pygame.Rect(x, y, sx, sy))
|
||||||
Ucelu = True
|
Ucelu = True
|
||||||
def UIHandler(mouseObj):
|
|
||||||
|
|
||||||
|
def UIHandler():
|
||||||
# drawGrid(GRIDX, GRIDY)
|
# drawGrid(GRIDX, GRIDY)
|
||||||
global Ucelu
|
global Ucelu
|
||||||
drawGrid(10,10)
|
drawGrid(10, 10)
|
||||||
|
|
||||||
for grid in gridObjects:
|
for grid in gridObjects:
|
||||||
gridObjects[grid].draw()
|
gridObjects[grid].draw()
|
||||||
@ -288,9 +327,9 @@ def UIHandler(mouseObj):
|
|||||||
|
|
||||||
if pathFound:
|
if pathFound:
|
||||||
drawGraph(pathFound)
|
drawGraph(pathFound)
|
||||||
# Ucelu = False
|
|
||||||
|
|
||||||
def eventHandler(kbdObj,mouseObj):
|
|
||||||
|
def eventHandler(kbdObj, mouseObj):
|
||||||
global boxes
|
global boxes
|
||||||
global obstacles
|
global obstacles
|
||||||
global startNode
|
global startNode
|
||||||
@ -299,7 +338,7 @@ def eventHandler(kbdObj,mouseObj):
|
|||||||
global Ucelu
|
global Ucelu
|
||||||
|
|
||||||
if event.type == pygame.QUIT:
|
if event.type == pygame.QUIT:
|
||||||
running = False
|
pygame.quit()
|
||||||
|
|
||||||
if event.type == pygame.KEYDOWN:
|
if event.type == pygame.KEYDOWN:
|
||||||
pygame.time.wait(DELAY)
|
pygame.time.wait(DELAY)
|
||||||
@ -345,15 +384,10 @@ def eventHandler(kbdObj,mouseObj):
|
|||||||
# If Key_f is pressed, set goal node
|
# If Key_f is pressed, set goal node
|
||||||
if kbdObj[pygame.K_f]:
|
if kbdObj[pygame.K_f]:
|
||||||
gBox = getGridBoxes(int(len(gridObjects)))
|
gBox = getGridBoxes(int(len(gridObjects)))
|
||||||
# gBox = getGridBoxes()
|
|
||||||
|
|
||||||
#x = mouseObj[0]
|
|
||||||
#y = mouseObj[1]
|
|
||||||
# x = gBox.x
|
|
||||||
# y = gBox.y
|
|
||||||
sx = gBox.sx
|
sx = gBox.sx
|
||||||
sy = gBox.sy
|
sy = gBox.sy
|
||||||
# ----------------------------------------
|
|
||||||
mseX = mouseObj[0]
|
mseX = mouseObj[0]
|
||||||
mseY = mouseObj[1]
|
mseY = mouseObj[1]
|
||||||
|
|
||||||
@ -363,42 +397,71 @@ def eventHandler(kbdObj,mouseObj):
|
|||||||
y = g.y
|
y = g.y
|
||||||
sx = g.sx
|
sx = g.sx
|
||||||
sy = g.sy
|
sy = g.sy
|
||||||
if mseX > x and mseX < x + sx:
|
if x < mseX < x + sx:
|
||||||
if mseY > y and mseY < y + sy:
|
if y < mseY < y + sy:
|
||||||
posX = x
|
posX = x
|
||||||
posY = y
|
posY = y
|
||||||
gridBox = grid
|
|
||||||
|
|
||||||
# SCREEN.blit(imgTree, (posX, posY))
|
|
||||||
|
|
||||||
# ---------------------------------------
|
|
||||||
bo = Box(posX, posY, sx, sy, BLUE)
|
bo = Box(posX, posY, sx, sy, BLUE)
|
||||||
boxObjects[boxes] = bo
|
boxObjects[boxes] = bo
|
||||||
# boxes += 1
|
|
||||||
boxes = 1
|
boxes = 1
|
||||||
# goalNode = GRIDX*GRIDX
|
|
||||||
# goalNode = (10 * (x + 1) + (y + 1) - 10)
|
|
||||||
|
|
||||||
# goalNode.state = int(10 * (posX/50 ) + (posY/50) - 10)
|
|
||||||
|
|
||||||
# goalNode[0] = int((posX/50)
|
|
||||||
# goalNode[1] = int(posY/50) - 10
|
|
||||||
|
|
||||||
goalNode = [int(posX/50), int(posY/50)]
|
goalNode = [int(posX/50), int(posY/50)]
|
||||||
# goalNode = [10,10]
|
|
||||||
|
|
||||||
print(' goalNode x=', goalNode[0], 'goalNode y=', goalNode[1])
|
# drzewo decyzyjne:
|
||||||
|
W = np.random.randint(2, size=(10, 10, 8))
|
||||||
|
|
||||||
|
# Wczytywanie modelu z pliku
|
||||||
|
labels = ['Rain', 'Planted', 'Temperature', 'Sun', 'Snow', 'Moisture', 'Rotten', 'Time']
|
||||||
|
loaded_model = joblib.load('decisionTree/decisionTreeFinal.sav')
|
||||||
|
sample = W[goalNode[0]-1][goalNode[1]-1]
|
||||||
|
|
||||||
|
# Klasyfikacja przy użyciu wczytanego modelu
|
||||||
|
predicted_class = loaded_model.predict([sample])
|
||||||
|
print(labels)
|
||||||
|
print(sample)
|
||||||
|
print('Predicted class:', predicted_class)
|
||||||
|
|
||||||
|
# Decyzja dotycząca podlania grządek na podstawie przewidzianej etykiety
|
||||||
|
if predicted_class == [1]:
|
||||||
|
print('Podlej grządkę')
|
||||||
|
else:
|
||||||
|
print('Nie podlewaj grządki')
|
||||||
|
|
||||||
# pygame.display.update()
|
print('goalNode x = ', goalNode[0], 'goalNode y = ', goalNode[1])
|
||||||
|
|
||||||
# goalNode = (x/sx) * (y/sy)
|
|
||||||
# Delay to avoid multiple spawning of objects
|
# Delay to avoid multiple spawning of objects
|
||||||
pygame.time.wait(DELAY)
|
pygame.time.wait(DELAY)
|
||||||
|
|
||||||
# If Key_x is pressed, spawn tree
|
if kbdObj[pygame.K_t]:
|
||||||
|
w = random.randint(0, 1)
|
||||||
|
f = random.randint(0, 1)
|
||||||
|
print(w)
|
||||||
|
print(f)
|
||||||
|
img = generate(w, f, random.randint(0, 2))
|
||||||
|
img.save('./test/00/test.png')
|
||||||
|
|
||||||
|
data_transform = transforms.Compose([
|
||||||
|
transforms.Resize(size=(100, 100)),
|
||||||
|
transforms.RandomHorizontalFlip(p=0.5),
|
||||||
|
transforms.ToTensor(),
|
||||||
|
Lambda(lambda x: x.flatten())
|
||||||
|
])
|
||||||
|
datasets.ImageNet
|
||||||
|
train_data = datasets.ImageFolder(root="./test",
|
||||||
|
transform=data_transform,
|
||||||
|
target_transform=None)
|
||||||
|
model1.eval()
|
||||||
|
res = model1(train_data[0][0])
|
||||||
|
if res[0] == res.max():
|
||||||
|
print("0 0")
|
||||||
|
if res[1] == res.max():
|
||||||
|
print("0 1")
|
||||||
|
if res[2] == res.max():
|
||||||
|
print("1 0")
|
||||||
|
if res[3] == res.max():
|
||||||
|
print("1 1")
|
||||||
|
# img.show()
|
||||||
if kbdObj[pygame.K_x]:
|
if kbdObj[pygame.K_x]:
|
||||||
obs = Obstacle(mouseObj)
|
obs = Obstacle(mouseObj)
|
||||||
obstacleObjects[obstacles] = obs
|
obstacleObjects[obstacles] = obs
|
||||||
@ -417,44 +480,22 @@ def eventHandler(kbdObj,mouseObj):
|
|||||||
y = g.y
|
y = g.y
|
||||||
sx = g.sx
|
sx = g.sx
|
||||||
sy = g.sy
|
sy = g.sy
|
||||||
if mseX > x and mseX < x + sx:
|
if x < mseX < x + sx:
|
||||||
if mseY > y and mseY < y + sy:
|
if y < mseY < y + sy:
|
||||||
posX = x
|
posX = x
|
||||||
posY = y
|
posY = y
|
||||||
|
|
||||||
T[int((posX/50)-1)][int((posY/50)-1)].plantType=4
|
T[int((posX/50)-1)][int((posY/50)-1)].plantType = 4
|
||||||
|
|
||||||
|
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
pygame.time.wait(DELAY)
|
pygame.time.wait(DELAY)
|
||||||
|
|
||||||
|
|
||||||
# if Key_SPACE is pressed, start the magic
|
# if Key_SPACE is pressed, start the magic
|
||||||
if kbdObj[pygame.K_SPACE]:
|
if kbdObj[pygame.K_SPACE]:
|
||||||
Ucelu = False
|
Ucelu = False
|
||||||
gBox = getGridBoxes(1)
|
|
||||||
|
|
||||||
x = gBox.x
|
|
||||||
y = gBox.y
|
|
||||||
sx = gBox.sx
|
|
||||||
sy = gBox.sy
|
|
||||||
|
|
||||||
x = (player.x +1) * 50
|
|
||||||
y = (player.y +1) * 50
|
|
||||||
|
|
||||||
# tmpImg = pygame.transform.rotate(imgPlayer, player.rotation)
|
|
||||||
# SCREEN.blit(tmpImg, (50 + 50 * player.x, 50 + 50 * player.y))
|
|
||||||
# pygame.display.update()
|
|
||||||
|
|
||||||
#when on it keeps flashing - among others
|
|
||||||
#bo = Box(x, y, sx, sy, RED)
|
|
||||||
#boxObjects[boxes] = bo
|
|
||||||
|
|
||||||
# boxes += 1
|
|
||||||
boxes = 1
|
boxes = 1
|
||||||
|
|
||||||
# startNode.state = (10 * (player.x + 1) + (player.y + 1) - 10)
|
|
||||||
|
|
||||||
startNode.x = player.x + 1
|
startNode.x = player.x + 1
|
||||||
startNode.y = player.y + 1
|
startNode.y = player.y + 1
|
||||||
|
|
||||||
@ -467,17 +508,14 @@ def eventHandler(kbdObj,mouseObj):
|
|||||||
elif player.rotation == 270:
|
elif player.rotation == 270:
|
||||||
startNode.direction = 4
|
startNode.direction = 4
|
||||||
|
|
||||||
print(' startNode x=', startNode.x, 'startNode y= ', startNode.y, 'startNode direction =', startNode.direction)
|
print('startNode x = ', startNode.x, 'startNode y = ', startNode.y, 'startNode direction = ', startNode.direction)
|
||||||
|
|
||||||
graph = generateGraph(GRIDY,GRIDX)
|
graph = generateGraph(GRIDY, GRIDX)
|
||||||
print(graph)
|
print(graph)
|
||||||
|
|
||||||
# if startNode != goalNode:
|
|
||||||
if startNode.x != goalNode[0] or startNode.y != goalNode[1]:
|
if startNode.x != goalNode[0] or startNode.y != goalNode[1]:
|
||||||
elem = []
|
|
||||||
|
|
||||||
|
move_list = (graphsearch(goalNode, startNode)) # przeszukiwanie grafu wszerz
|
||||||
move_list = (graphsearch([], [], goalNode, startNode)) # przeszukiwanie grafu wszerz
|
|
||||||
|
|
||||||
pathFound = move_list
|
pathFound = move_list
|
||||||
|
|
||||||
@ -489,32 +527,11 @@ def eventHandler(kbdObj,mouseObj):
|
|||||||
pygame.time.wait(DELAY)
|
pygame.time.wait(DELAY)
|
||||||
# startNode = goalNode
|
# startNode = goalNode
|
||||||
|
|
||||||
|
|
||||||
if kbdObj[pygame.K_b]:
|
if kbdObj[pygame.K_b]:
|
||||||
|
|
||||||
Ucelu = False
|
Ucelu = False
|
||||||
gBox = getGridBoxes(1)
|
|
||||||
|
|
||||||
x = gBox.x
|
|
||||||
y = gBox.y
|
|
||||||
sx = gBox.sx
|
|
||||||
sy = gBox.sy
|
|
||||||
|
|
||||||
x = (player.x +1) * 50
|
|
||||||
y = (player.y +1) * 50
|
|
||||||
|
|
||||||
# tmpImg = pygame.transform.rotate(imgPlayer, player.rotation)
|
|
||||||
# SCREEN.blit(tmpImg, (50 + 50 * player.x, 50 + 50 * player.y))
|
|
||||||
# pygame.display.update()
|
|
||||||
|
|
||||||
#when on it keeps flashing - among others
|
|
||||||
#bo = Box(x, y, sx, sy, RED)
|
|
||||||
#boxObjects[boxes] = bo
|
|
||||||
|
|
||||||
# boxes += 1
|
|
||||||
boxes = 1
|
boxes = 1
|
||||||
|
|
||||||
# startNode.state = (10 * (player.x + 1) + (player.y + 1) - 10)
|
|
||||||
|
|
||||||
startNode.x = player.x + 1
|
startNode.x = player.x + 1
|
||||||
startNode.y = player.y + 1
|
startNode.y = player.y + 1
|
||||||
|
|
||||||
@ -527,24 +544,12 @@ def eventHandler(kbdObj,mouseObj):
|
|||||||
elif player.rotation == 270:
|
elif player.rotation == 270:
|
||||||
startNode.direction = 4
|
startNode.direction = 4
|
||||||
|
|
||||||
print(' startNode x=', startNode.x, 'startNode y= ', startNode.y, 'startNode direction =', startNode.direction)
|
print('startNode x = ', startNode.x, 'startNode y = ', startNode.y, 'startNode direction = ', startNode.direction)
|
||||||
|
|
||||||
# startNode = (((player.x + 1)*10 - 9) * (player.y + 1) )
|
graph = generateGraph(GRIDY, GRIDX)
|
||||||
# startNode = 2
|
|
||||||
|
|
||||||
# tmpImg = pygame.transform.rotate(imgPlayer, player.rotation)
|
|
||||||
# SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y))
|
|
||||||
# pygame.display.update()
|
|
||||||
|
|
||||||
# Delay to avoid multiple spawning of objects
|
|
||||||
#pygame.time.wait(DELAY)
|
|
||||||
|
|
||||||
graph = generateGraph(GRIDY,GRIDX)
|
|
||||||
print(graph)
|
print(graph)
|
||||||
|
|
||||||
# if startNode != goalNode:
|
|
||||||
if startNode.x != goalNode[0] or startNode.y != goalNode[1]:
|
if startNode.x != goalNode[0] or startNode.y != goalNode[1]:
|
||||||
elem = []
|
|
||||||
|
|
||||||
move_list = (astar.graphsearch([], astar.f, [], goalNode, startNode, T, succ)) # przeszukiwanie grafu wszerz
|
move_list = (astar.graphsearch([], astar.f, [], goalNode, startNode, T, succ)) # przeszukiwanie grafu wszerz
|
||||||
|
|
||||||
@ -555,17 +560,150 @@ def eventHandler(kbdObj,mouseObj):
|
|||||||
print(move_list)
|
print(move_list)
|
||||||
print('\n')
|
print('\n')
|
||||||
|
|
||||||
|
# Delay to avoid multiple spawning of objects
|
||||||
|
pygame.time.wait(DELAY)
|
||||||
|
|
||||||
# else:
|
if kbdObj[pygame.K_g]:
|
||||||
# startNode = (10 * (player.x + 1) + (player.y + 1) - 10)
|
|
||||||
# Ucelu = True
|
global wheat_path
|
||||||
|
|
||||||
|
if not wheat_path:
|
||||||
|
wheat = [(player.x+1, player.y+1), (4, 3), (6, 3), (7, 3), (9, 3), (10, 3), (5, 4), (5, 5), (6, 5), (10, 5), (3, 6), (4, 6), (6, 7), (7, 7), (8, 7)]
|
||||||
|
wheat_path = genetic_algorithm(wheat, player)
|
||||||
|
print("Best wheat path:", wheat_path)
|
||||||
|
|
||||||
|
if T[player.x][player.y].plantType != 0:
|
||||||
|
T[player.x][player.y].plantType = 0
|
||||||
|
|
||||||
|
if len(wheat_path) > 1:
|
||||||
|
|
||||||
|
Ucelu = False
|
||||||
|
boxes = 1
|
||||||
|
|
||||||
|
startNode.x = player.x + 1
|
||||||
|
startNode.y = player.y + 1
|
||||||
|
|
||||||
|
if player.rotation == 0:
|
||||||
|
startNode.direction = 1
|
||||||
|
elif player.rotation == 90:
|
||||||
|
startNode.direction = 2
|
||||||
|
elif player.rotation == 180:
|
||||||
|
startNode.direction = 3
|
||||||
|
elif player.rotation == 270:
|
||||||
|
startNode.direction = 4
|
||||||
|
|
||||||
|
generateGraph(GRIDY, GRIDX)
|
||||||
|
|
||||||
|
goalNode = [wheat_path[1][0], wheat_path[1][1]]
|
||||||
|
|
||||||
|
if startNode.x != goalNode[0] or startNode.y != goalNode[1]:
|
||||||
|
|
||||||
|
move_list = astar.graphsearch([], astar.f, [], goalNode, startNode, T, succ) # przeszukiwanie grafu wszerz
|
||||||
|
pathFound = move_list
|
||||||
|
|
||||||
|
wheat_path.pop(0)
|
||||||
|
|
||||||
# Delay to avoid multiple spawning of objects
|
# Delay to avoid multiple spawning of objects
|
||||||
pygame.time.wait(DELAY)
|
pygame.time.wait(DELAY)
|
||||||
|
|
||||||
#With it it keeps going, if without it turns off
|
else:
|
||||||
|
|
||||||
|
print("All wheat collected!")
|
||||||
|
|
||||||
|
if kbdObj[pygame.K_h]:
|
||||||
|
|
||||||
|
global carrot_path
|
||||||
|
|
||||||
|
if not carrot_path:
|
||||||
|
carrot = [(player.x+1, player.y+1), (3, 1), (9, 2), (1, 3), (5, 3), (4, 4), (6, 4), (7, 4), (8, 4), (3, 5), (9, 5), (6, 6), (10, 10)]
|
||||||
|
carrot_path = genetic_algorithm(carrot, player)
|
||||||
|
print("Best carrot path:", carrot_path)
|
||||||
|
|
||||||
|
if T[player.x][player.y].plantType != 0:
|
||||||
|
T[player.x][player.y].plantType = 0
|
||||||
|
|
||||||
|
if len(carrot_path) > 1:
|
||||||
|
|
||||||
|
Ucelu = False
|
||||||
|
boxes = 1
|
||||||
|
|
||||||
|
startNode.x = player.x + 1
|
||||||
|
startNode.y = player.y + 1
|
||||||
|
|
||||||
|
if player.rotation == 0:
|
||||||
|
startNode.direction = 1
|
||||||
|
elif player.rotation == 90:
|
||||||
|
startNode.direction = 2
|
||||||
|
elif player.rotation == 180:
|
||||||
|
startNode.direction = 3
|
||||||
|
elif player.rotation == 270:
|
||||||
|
startNode.direction = 4
|
||||||
|
|
||||||
|
generateGraph(GRIDY, GRIDX)
|
||||||
|
|
||||||
|
goalNode = [carrot_path[1][0], carrot_path[1][1]]
|
||||||
|
|
||||||
|
if startNode.x != goalNode[0] or startNode.y != goalNode[1]:
|
||||||
|
|
||||||
|
move_list = astar.graphsearch([], astar.f, [], goalNode, startNode, T, succ) # przeszukiwanie grafu wszerz
|
||||||
|
pathFound = move_list
|
||||||
|
|
||||||
|
carrot_path.pop(0)
|
||||||
|
|
||||||
|
# Delay to avoid multiple spawning of objects
|
||||||
|
pygame.time.wait(DELAY)
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print("All carrot collected!")
|
||||||
|
|
||||||
|
if kbdObj[pygame.K_j]:
|
||||||
|
|
||||||
|
global cabbage_path
|
||||||
|
|
||||||
|
if not cabbage_path:
|
||||||
|
cabbage = [(player.x+1, player.y+1), (5, 1), (5, 2), (8, 3), (1, 4), (2, 4), (1, 5), (4, 5), (9, 6), (1, 8), (2, 8), (3, 8), (4, 8), (5, 8)]
|
||||||
|
cabbage_path = genetic_algorithm(cabbage, player)
|
||||||
|
print("Best cabbage path:", cabbage_path)
|
||||||
|
|
||||||
|
if T[player.x][player.y].plantType != 0:
|
||||||
|
T[player.x][player.y].plantType = 0
|
||||||
|
|
||||||
|
if len(cabbage_path) > 1:
|
||||||
|
|
||||||
|
Ucelu = False
|
||||||
|
boxes = 1
|
||||||
|
|
||||||
|
startNode.x = player.x + 1
|
||||||
|
startNode.y = player.y + 1
|
||||||
|
|
||||||
|
if player.rotation == 0:
|
||||||
|
startNode.direction = 1
|
||||||
|
elif player.rotation == 90:
|
||||||
|
startNode.direction = 2
|
||||||
|
elif player.rotation == 180:
|
||||||
|
startNode.direction = 3
|
||||||
|
elif player.rotation == 270:
|
||||||
|
startNode.direction = 4
|
||||||
|
|
||||||
|
generateGraph(GRIDY, GRIDX)
|
||||||
|
|
||||||
|
goalNode = [cabbage_path[1][0], cabbage_path[1][1]]
|
||||||
|
|
||||||
|
if startNode.x != goalNode[0] or startNode.y != goalNode[1]:
|
||||||
|
|
||||||
|
move_list = astar.graphsearch([], astar.f, [], goalNode, startNode, T, succ) # przeszukiwanie grafu wszerz
|
||||||
|
pathFound = move_list
|
||||||
|
|
||||||
|
cabbage_path.pop(0)
|
||||||
|
|
||||||
|
# Delay to avoid multiple spawning of objects
|
||||||
|
pygame.time.wait(DELAY)
|
||||||
|
|
||||||
|
else:
|
||||||
|
|
||||||
|
print("All cabbage collected!")
|
||||||
|
|
||||||
# Ucelu = False
|
|
||||||
|
|
||||||
T = [[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,2,1,0,0,0),Field(1,3,0,0,0,0),Field(0,3,0,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
T = [[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,2,1,0,0,0),Field(1,3,0,0,0,0),Field(0,3,0,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
||||||
[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,0,1,0,0,0),Field(1,3,1,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,0,1,0,0,0),Field(1,3,1,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,3,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
||||||
@ -576,20 +714,7 @@ T = [[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,2,1,0,0,0),Field(1,3,0,0,0,0
|
|||||||
[Field(1,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,0,1,0,0,0),Field(0,0,1,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
[Field(1,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,0,1,0,0,0),Field(0,0,1,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
||||||
[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,3,1,0,0,0),Field(1,2,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,3,1,0,0,0),Field(1,2,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
||||||
[Field(1,0,0,0,0,0),Field(0,2,0,0,0,0),Field(1,1,0,0,0,0),Field(1,0,1,0,0,0),Field(0,2,1,0,0,0),Field(0,3,0,0,0,0),Field(0,0,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
[Field(1,0,0,0,0,0),Field(0,2,0,0,0,0),Field(1,1,0,0,0,0),Field(1,0,1,0,0,0),Field(0,2,1,0,0,0),Field(0,3,0,0,0,0),Field(0,0,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)],
|
||||||
[Field(1,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,0,0,0,0,0),Field(0,1,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,1,0,0,0)]]
|
[Field(1,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,0,0,0,0,0),Field(0,1,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,2,1,0,0,0)]]
|
||||||
|
|
||||||
|
|
||||||
#T = [[Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,2,1,0,0,0),Field(1,3,0,0,0,0),Field(0,3,0,0,0,0),Field(0,0,1,0,0,0),Field(0,3,0,0,0,0),Field(1,0,1,0,0,0),Field(1,3,0,0,0,0),Field(1,2,1,0,0,0)],
|
|
||||||
# [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,0,1,0,0,0),Field(1,3,1,0,0,0),Field(0,0,0,0,0,0),Field(0,0,0,0,0,0),Field(0,2,0,0,0,0),Field(1,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,1,0,0,0,0)],
|
|
||||||
# [Field(0,2,1,0,0,0),Field(0,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,0,0,0,0,0),Field(0,2,1,0,0,0),Field(0,1,1,0,0,0),Field(0,2,0,0,0,0),Field(1,0,0,0,0,0),Field(1,0,0,0,0,0),Field(1,1,0,0,0,0)],
|
|
||||||
# [Field(1,0,1,0,0,0),Field(0,0,1,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,3,1,0,0,0),Field(0,1,0,0,0,0),Field(0,0,0,0,0,0),Field(1,2,0,0,0,0),Field(1,0,0,0,0,0),Field(1,0,0,0,0,0)],
|
|
||||||
# [Field(1,3,0,0,0,0),Field(0,3,1,0,0,0),Field(1,2,1,0,0,0),Field(1,1,1,0,0,0),Field(0,1,1,0,0,0),Field(0,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,0,1,0,0,0),Field(1,3,0,0,0,0),Field(1,0,1,0,0,0)],
|
|
||||||
# [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,1,0,0,0,0),Field(0,2,0,0,0,0),Field(0,1,0,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0),Field(1,1,1,0,0,0)],
|
|
||||||
# [Field(1,0,0,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,2,0,0,0,0),Field(0,0,1,0,0,0),Field(0,0,1,0,0,0),Field(0,1,0,0,0,0),Field(1,2,1,0,0,0),Field(1,2,1,0,0,0),Field(1,0,0,0,0,0)],
|
|
||||||
# [Field(1,0,0,0,0,0),Field(0,0,1,0,0,0),Field(1,3,1,0,0,0),Field(1,2,1,0,0,0),Field(0,0,1,0,0,0),Field(0,0,0,0,0,0),Field(0,1,1,0,0,0),Field(1,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,1,1,0,0,0)],
|
|
||||||
# [Field(1,0,0,0,0,0),Field(0,2,0,0,0,0),Field(1,1,0,0,0,0),Field(1,0,1,0,0,0),Field(0,2,1,0,0,0),Field(0,3,0,0,0,0),Field(0,0,0,0,0,0),Field(1,0,0,0,0,0),Field(1,2,1,0,0,0),Field(1,2,1,0,0,0)],
|
|
||||||
# [Field(1,0,1,0,0,0),Field(0,0,0,0,0,0),Field(1,1,1,0,0,0),Field(1,0,0,0,0,0),Field(0,1,1,0,0,0),Field(0,0,1,0,0,0),Field(0,1,0,0,0,0),Field(1,1,1,0,0,0),Field(1,0,1,0,0,0),Field(1,0,0,0,0,0)]]
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
# =========================================================================================
|
# =========================================================================================
|
||||||
@ -608,12 +733,12 @@ while running:
|
|||||||
for event in pygame.event.get():
|
for event in pygame.event.get():
|
||||||
kbd = pygame.key.get_pressed()
|
kbd = pygame.key.get_pressed()
|
||||||
mse = pygame.mouse.get_pos()
|
mse = pygame.mouse.get_pos()
|
||||||
UIHandler(mse)
|
UIHandler()
|
||||||
eventHandler(kbd, mse)
|
eventHandler(kbd, mse)
|
||||||
pygame.display.update()
|
pygame.display.update()
|
||||||
# CLOCK.tick(FPS)
|
# CLOCK.tick(FPS)
|
||||||
|
|
||||||
#screen.fill((175, 255, 50, 0))
|
# screen.fill((175, 255, 50, 0))
|
||||||
|
|
||||||
# SCREEN.fill((WHITE))
|
# SCREEN.fill((WHITE))
|
||||||
imgWheat = pygame.image.load('img/wheat.png')
|
imgWheat = pygame.image.load('img/wheat.png')
|
||||||
@ -635,7 +760,9 @@ while running:
|
|||||||
else:
|
else:
|
||||||
# a = 1
|
# a = 1
|
||||||
color = (50, 25, 0, 0)
|
color = (50, 25, 0, 0)
|
||||||
#colour from the beginning
|
# colour from the beginning
|
||||||
|
pygame.draw.rect(SCREEN, color, pygame.Rect(50 + 50 * i, 50 + 50 * j, 50, 50))
|
||||||
|
if T[i][j].plantType == 0:
|
||||||
pygame.draw.rect(SCREEN, color, pygame.Rect(50 + 50 * i, 50 + 50 * j, 50, 50))
|
pygame.draw.rect(SCREEN, color, pygame.Rect(50 + 50 * i, 50 + 50 * j, 50, 50))
|
||||||
if T[i][j].plantType == 1:
|
if T[i][j].plantType == 1:
|
||||||
SCREEN.blit(imgWheat, (50 + 50 * i, 50 + 50 * j))
|
SCREEN.blit(imgWheat, (50 + 50 * i, 50 + 50 * j))
|
||||||
@ -646,10 +773,13 @@ while running:
|
|||||||
if T[i][j].plantType == 4:
|
if T[i][j].plantType == 4:
|
||||||
SCREEN.blit(imgTree, (50 + 50 * i, 50 + 50 * j))
|
SCREEN.blit(imgTree, (50 + 50 * i, 50 + 50 * j))
|
||||||
|
|
||||||
|
|
||||||
j = j + 1
|
j = j + 1
|
||||||
i = i + 1
|
i = i + 1
|
||||||
|
|
||||||
|
font = pygame.font.SysFont('comicsans', 22)
|
||||||
|
labelx = font.render('temp:22 |rain:none |snow:none |sun:cloudy |time:evening', True, (0, 0, 0))
|
||||||
|
SCREEN.blit(labelx, (10, 10))
|
||||||
|
|
||||||
i = 0
|
i = 0
|
||||||
while i < len(T)+1:
|
while i < len(T)+1:
|
||||||
pygame.draw.line(SCREEN, (0, 0, 0), (50 + i * 50, 50), (50 + i * 50, 50 + len(T) * 50), 1)
|
pygame.draw.line(SCREEN, (0, 0, 0), (50 + i * 50, 50), (50 + i * 50, 50 + len(T) * 50), 1)
|
||||||
@ -660,35 +790,29 @@ while running:
|
|||||||
obstacleObjects[obs].draw()
|
obstacleObjects[obs].draw()
|
||||||
|
|
||||||
# if startNode.state != goalNode.state:
|
# if startNode.state != goalNode.state:
|
||||||
if startNode.x != goalNode[0] or startNode.y != goalNode[1] :
|
if startNode.x != goalNode[0] or startNode.y != goalNode[1]:
|
||||||
for bx in boxObjects:
|
for bx in boxObjects:
|
||||||
boxObjects[bx].draw()
|
boxObjects[bx].draw()
|
||||||
|
|
||||||
|
|
||||||
tmpImg = pygame.transform.rotate(imgPlayer, player.rotation)
|
tmpImg = pygame.transform.rotate(imgPlayer, player.rotation)
|
||||||
if player.rotation == 180:
|
if player.rotation == 180:
|
||||||
tmpImg = pygame.transform.flip(tmpImg, True, True)
|
tmpImg = pygame.transform.flip(tmpImg, True, True)
|
||||||
tmpImg = pygame.transform.flip(tmpImg, True, False)
|
tmpImg = pygame.transform.flip(tmpImg, True, False)
|
||||||
|
|
||||||
#player seen at the beginning
|
# player seen at the beginning
|
||||||
SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y))
|
SCREEN.blit(tmpImg, (55 + 50 * player.x, 55 + 50 * player.y))
|
||||||
|
|
||||||
|
|
||||||
|
label = font.render('F - cel | X - drzewo', True, (0, 0, 0))
|
||||||
# if Ucelu == False:
|
label1 = font.render('ARROWS - ręczne poruszanie', True, (0, 0, 0))
|
||||||
# for bx in boxObjects:
|
label2 = font.render('A - lewo | D - prawo | W - ruch', True, (0, 0, 0))
|
||||||
# boxObjects[bx].draw()
|
label3 = font.render('SPACE - BFS | B - A*', True, (0, 0, 0))
|
||||||
|
label4 = font.render('G - GA pszenica | H - GA marchewki | J - GA kapusty', True, (0, 0, 0))
|
||||||
|
SCREEN.blit(label, (10, 555))
|
||||||
font = pygame.font.SysFont('comicsans', 18)
|
SCREEN.blit(label1, (10, 580))
|
||||||
label = font.render('f- punkt końcowy, x- drzewa, spacja- uruchomienie', 1, (0, 0, 0))
|
SCREEN.blit(label2, (10, 605))
|
||||||
label1 = font.render('strzałki-ręczne poruszanie traktorem,', 1, (0, 0, 0))
|
|
||||||
label2 = font.render('a- obrót w lewo, d- w prawo, w-ruch naprzód', 1, (0, 0, 0))
|
|
||||||
label3 = font.render('b - uruchom A*', 1, (0, 0, 0))
|
|
||||||
SCREEN.blit(label, (10, 570))
|
|
||||||
SCREEN.blit(label1, (10, 590))
|
|
||||||
SCREEN.blit(label2, (10, 610))
|
|
||||||
SCREEN.blit(label3, (10, 630))
|
SCREEN.blit(label3, (10, 630))
|
||||||
|
SCREEN.blit(label4, (10, 655))
|
||||||
|
|
||||||
# pygame.display.flip()
|
# pygame.display.flip()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user