diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..26d3352
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,3 @@
+# Default ignored files
+/shelf/
+/workspace.xml
diff --git a/.idea/WALL-E.iml b/.idea/WALL-E.iml
new file mode 100644
index 0000000..d0876a7
--- /dev/null
+++ b/.idea/WALL-E.iml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml
new file mode 100644
index 0000000..105ce2d
--- /dev/null
+++ b/.idea/inspectionProfiles/profiles_settings.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..d1e22ec
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..33d9c1a
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/SearchBfs.py b/SearchBfs.py
new file mode 100644
index 0000000..aa93eae
--- /dev/null
+++ b/SearchBfs.py
@@ -0,0 +1,50 @@
+class BreadthSearchAlgorithm:
+ def __init__(self, start, target):
+ self.graph = self.getData()
+ self.start = start
+ self.target = target
+
+ def bfs(self):
+ print("It's showtime")
+ can_go = [[self.start, 0]]
+ visited = []
+ visitedPrint = []
+ if self.start == self.target:
+ print("Start = Target")
+ return -1
+ while can_go != []:
+ node = can_go.pop(0)
+ if node[0] not in visited:
+ visited.append(node[0])
+ visitedPrint.append(node)
+ if node[0] == self.target:
+ print('final')
+ print(visitedPrint)
+ return visited
+ neighbours = self.graph.get(node[0], [])
+ for neighbour in neighbours:
+ can_go.append([neighbour, node[0]])
+ # print(visited)
+ return -1
+
+ def getData(self):
+ with open("data.txt", "r") as f:
+ matrix = [
+ [int(x) for x in line.split(",") if x != "\n"] for line in f.readlines()
+ ]
+ adj = {}
+ for yi, yvalue in enumerate(matrix):
+ for xi, xvalue in enumerate(matrix):
+ if xi - 1 >= 0 and matrix[yi][xi - 1] == 0:
+ adj[(xi, yi)] = adj.get((xi, yi), []) + [(xi - 1, yi)]
+
+ if xi + 1 < len(matrix[yi]) and matrix[yi][xi + 1] == 0:
+ adj[(xi, yi)] = adj.get((xi, yi), []) + [(xi + 1, yi)]
+
+ if yi - 1 >= 0 and matrix[yi - 1][xi] == 0:
+ adj[(xi, yi)] = adj.get((xi, yi), []) + [(xi, yi - 1)]
+
+ if yi + 1 < len(matrix) and matrix[yi + 1][xi] == 0:
+ adj[(xi, yi)] = adj.get((xi, yi), []) + [(xi, yi + 1)]
+
+ return adj
\ No newline at end of file
diff --git a/agent.py b/agent.py
index 4adc04f..1aa106f 100644
--- a/agent.py
+++ b/agent.py
@@ -1,30 +1,43 @@
import pygame.image
+
class trashmaster(pygame.sprite.Sprite):
-
- def __init__(self,x,y,img):
+
+ def __init__(self, x, y, img):
super().__init__()
-
- self.width=x
- self.height=y
+
+ self.width = x
+ self.height = y
self.x = 0
self.y = 0
-
+
self.image = pygame.image.load(img)
- self.image = pygame.transform.scale(self.image, (self.width,self.height))
+ self.image = pygame.transform.scale(self.image, (self.width, self.height))
self.rect = self.image.get_rect()
def movement(self, key, vel):
if key == pygame.K_LEFT:
self.x -= vel
-
+
if key == pygame.K_RIGHT:
self.x += vel
-
+
if key == pygame.K_UP:
self.y -= vel
-
+
if key == pygame.K_DOWN:
self.y += vel
- return (self.x, self.y)
\ No newline at end of file
+ return (self.x, self.y)
+
+ def move_up(self):
+ self.y -= 64
+
+ def move_down(self):
+ self.y += 64
+
+ def move_right(self):
+ self.x += 64
+
+ def move_left(self):
+ self.x -= 64
diff --git a/data.txt b/data.txt
new file mode 100644
index 0000000..1b0cfbe
--- /dev/null
+++ b/data.txt
@@ -0,0 +1,6 @@
+0,0,0,0,0,0
+0,1,1,0,0,0
+0,1,0,0,0,0
+0,1,0,0,0,0
+0,1,0,0,0,0
+0,1,0,0,0,0
\ No newline at end of file
diff --git a/main.py b/main.py
index 4dbbb4c..0fe1706 100644
--- a/main.py
+++ b/main.py
@@ -1,21 +1,25 @@
import pygame as pg
import sys
from os import path
+
+import SearchBfs
from map import *
# from agent import trashmaster
# from house import House
from sprites import *
from settings import *
+from SearchBfs import *
+
class Game():
-
+
def __init__(self):
pg.init()
self.screen = pg.display.set_mode((WIDTH, HEIGHT))
pg.display.set_caption("Trashmaster")
self.clock = pg.time.Clock()
self.load_data()
-
+
def load_data(self):
game_folder = path.dirname(__file__)
img_folder = path.join(game_folder, 'resources/textures')
@@ -24,8 +28,8 @@ class Game():
self.map_img = self.map.make_map()
self.map_rect = self.map_img.get_rect()
- self.player_img = pg.image.load(path.join(img_folder,PLAYER_IMG)).convert_alpha()
- self.player_img = pg.transform.scale(self.player_img, (PLAYER_WIDTH,PLAYER_HEIGHT) )
+ self.player_img = pg.image.load(path.join(img_folder, PLAYER_IMG)).convert_alpha()
+ self.player_img = pg.transform.scale(self.player_img, (PLAYER_WIDTH, PLAYER_HEIGHT))
self.wall_img = pg.image.load(path.join(img_folder, WALL_IMG)).convert_alpha()
self.wall_img = pg.transform.scale(self.wall_img, (TILESIZE, TILESIZE))
@@ -44,8 +48,8 @@ class Game():
# self.screen.blit(self.map_img, (0,0))
self.camera = Camera(self.map.width, self.map.height)
self.draw_debug = False
-
- #self.screen.blit(self.map_img, self.camera.apply_rect(self.map_rect))
+
+ # self.screen.blit(self.map_img, self.camera.apply_rect(self.map_rect))
def run(self):
# game loop - set self.playing = False to end the game
@@ -55,7 +59,7 @@ class Game():
self.events()
self.update()
self.draw()
-
+
def quit(self):
pg.quit()
sys.exit()
@@ -65,14 +69,13 @@ class Game():
self.all_sprites.update()
self.camera.update(self.player)
# pygame.display.update()
-
+
def draw_grid(self):
for x in range(0, WIDTH, TILESIZE):
pg.draw.line(self.screen, LIGHTGREY, (x, 0), (x, HEIGHT))
for y in range(0, HEIGHT, TILESIZE):
pg.draw.line(self.screen, LIGHTGREY, (0, y), (WIDTH, y))
-
# def draw(self, drawable_object, pos):
# # pos => (x, y)
# # drawable object must have .image field inside class
@@ -81,7 +84,7 @@ class Game():
def draw(self):
pg.display.set_caption("{:.2f}".format(self.clock.get_fps()))
self.screen.blit(self.map_img, self.camera.apply_rect(self.map_rect))
-
+
for sprite in self.all_sprites:
self.screen.blit(sprite.image, self.camera.apply(sprite))
if self.draw_debug:
@@ -89,7 +92,7 @@ class Game():
if self.draw_debug:
for wall in self.walls:
pg.draw.rect(self.screen, CYAN, self.camera.apply_rect(wall.rect), 1)
-
+
pg.display.flip()
def events(self):
@@ -111,11 +114,12 @@ class Game():
# def reloadMap(self):
# #self.screen.fill(pygame.Color(self.BACKGROUND_COLOR))
# self.screen.blit(self.map_img, (0,0))
-
+
+
# def main():
# game = WalleGame()
# game.update_window()
-
+
# smieciara_object = trashmaster(16,16,"./resources/textures/garbagetruck/trashmaster_blu.png")
# game.draw_object(smieciara_object, (100, 100))
@@ -126,7 +130,7 @@ class Game():
# game.update_window()
# running = True
-
+
# while running:
# for event in pygame.event.get():
# if event.type == pygame.QUIT:
@@ -134,19 +138,21 @@ class Game():
# if event.type == pygame.KEYDOWN:
# game.reloadMap()
# game.draw_object(smieciara_object, smieciara_object.movement(event.key, 16))
-
+
# game.update_window()
# pygame.quit()
# if __name__ == '__main__':
# main()
-
+start_node = (0, 0)
+target_node = (2, 2)
+find_path = BreadthSearchAlgorithm(start_node, target_node)
# create the game object
g = Game()
g.show_start_screen()
while True:
g.new()
+ path_found = find_path.bfs()
g.run()
g.show_go_screen()
-
diff --git a/mapa.py b/mapa.py
index ef58fb7..07581b1 100644
--- a/mapa.py
+++ b/mapa.py
@@ -2,7 +2,6 @@ import pygame as pg
import pytmx
-
# config
# TILE_SIZE = 16
@@ -16,15 +15,14 @@ import pytmx
# return surface
class TiledMap:
- #loading file
+ # loading file
def __init__(self, filename):
tm = pytmx.load_pygame(filename, pixelalpha=True)
self.width = tm.width * tm.tilewidth
self.height = tm.height * tm.tileheight
self.tmxdata = tm
-
- #rendering map
+ # rendering map
def render(self, surface):
ti = self.tmxdata.get_tile_image_by_gid
for layer in self.tmxdata.visible_layers:
@@ -33,8 +31,8 @@ class TiledMap:
tile = ti(gid)
if tile:
surface.blit(tile, (x * self.tmxdata.tilewidth, y * self.tmxdata.tilewidth))
-
+
def make_map(self):
temp_surface = pg.Surface((self.width, self.height))
self.render(temp_surface)
- return temp_surface
\ No newline at end of file
+ return temp_surface
diff --git a/ok b/ok
new file mode 100644
index 0000000..9e2dcce
--- /dev/null
+++ b/ok
@@ -0,0 +1,8 @@
+* [32mbfsAlgorithm[m
+ master[m
+ [31mremotes/origin/HEAD[m -> origin/master
+ [31mremotes/origin/Mapa[m
+ [31mremotes/origin/agent_movement[m
+ [31mremotes/origin/bfsAlgorithm[m
+ [31mremotes/origin/mapa2[m
+ [31mremotes/origin/master[m