From c1424a53440157611e4922df5e6034169eb19d85 Mon Sep 17 00:00:00 2001 From: jbiesek Date: Tue, 5 Apr 2022 14:05:38 +0200 Subject: [PATCH] added neighbours list for bfs and fields to search --- __pycache__/agent.cpython-38.pyc | Bin 1851 -> 1855 bytes __pycache__/common.cpython-38.pyc | Bin 694 -> 698 bytes __pycache__/field.cpython-38.pyc | Bin 4224 -> 4228 bytes __pycache__/settings.cpython-38.pyc | Bin 1690 -> 1694 bytes bfs.py | 51 ++++++++++++++++++++++++++++ main.py | 17 ++++++---- 6 files changed, 62 insertions(+), 6 deletions(-) create mode 100644 bfs.py diff --git a/__pycache__/agent.cpython-38.pyc b/__pycache__/agent.cpython-38.pyc index 851941efcd1bab5035dcb7cc5129218e6ab88517..7c1838f58d35ab95f7c317046a22fbffc4d5547b 100644 GIT binary patch delta 67 zcmdnZx1WzYl$V!_0SKn*`)uUSXVf&(&&bbB)z3=GOf62$)(I@ delta 63 zcmdnbx0{bUl$V!_0SIDqZ8vh~Gpg$8XXNLm>KB)krljVT6zdn8m|7YenCq7mC1#i8 R7wP9F7MG-MUd%X$6#yx*6L$ar diff --git a/__pycache__/common.cpython-38.pyc b/__pycache__/common.cpython-38.pyc index 64eca0d9d66ace3a8a42ae603eb47a2ed2f238ef..9acdfc73e8b600b00ce43cad734df2b0edac61f7 100644 GIT binary patch delta 66 zcmdnSx{H-Nl$V!_0SKn*`%L7%qG_z3k)NBYpOuuETAZ4#A5fZ8kXfQ1TveHroS9z~ UoSRrw5>k|yU6Q|e%j0G1CG*8l(j delta 62 zcmdnRx{Z}Pl$V!_0SIDqZ6|VHQPtPa$j?pHFD@xfNzE%M)-N_OwKO&`*Donb%r40< Q($7sSE=k?Y!MKSL04N|67XSbN diff --git a/__pycache__/field.cpython-38.pyc b/__pycache__/field.cpython-38.pyc index 6acf55c70eea0afd01a1fe0f91c8efae9eb3b4b4..a95ddf48efeb360a21fe6f0fa2e247a923d50e9e 100644 GIT binary patch delta 1631 zcma)+OHUI~6vvs)bUJ-Zfk3qaLMuinP>SFK0s#~w#0OwNVwzxW%K%e4Ex9u+=mrw~ z1~)ETxpIL!SAGDO>cWMaiHRG(fLm9dbEb4!Y>1QGe%3QS>s6!f!0rj@nyyrEgUJMyQvD@6E` z)YsDqp@fHB#1UO*hrN^rpR{6U8%jG$6y*|%52Xj?GK!m+{#5Mi0Kwd*45A2%q=>A8 zf0H|ToAriLUfM~Ey0KH|r}9NPxp{_T5T>yKl&dHr3Y9E| ze+iUkM7V zM5l7jR0z~1r3ys(SKq)wBfBlaIvrxFW;4zq@Jc~5Js^s}hJbKh@!l<#^LuQVA1UjL z#HdsmG4%+DEw3K#WDU(JO^uhK7aK!yvsD4R{DVW+8zVG^!V?g<4egX;f_CrNe@jU6 z6>o%p@vkf*tBYYvmR{5tPPDx_;>BZ-4mewE9qw!YoJTZ>@?7BYHCmL&V%X#E=|AW9 zdtm%oV^Qly(`4EaD(@tExvO^9mW04OwCY)q1<9j$S(5(_KjiO&(>EO!+iM;GGMhph zGDMma!S-h|`C`^IGa1MIw49;Xi)Ltam1Ag9L$lSYMP4fwPi=^A2FH;hrd@_sy+R1d zrU3B){}q}au9j;WhtHwZ02x`hi;eOX^~y#wFnnH|g4e*C&)-6IsUCWlXMl%_` zq+75N3plyi^3io0=Q$4=?FRNGT5U;7mktbu_m#y_Mo{RHq=Sr?fZ_AQ=)O$gAD%$x TVA1AL$q3xdO@At1Z5#Uwk!c4p delta 1576 zcma)6OHUI~6!y+c+v#JbpcJV*Y9T7+HCSj+2?T8fUQmUH;%clDH=S(W`CZ&3op4i1^u*Yw zlt8<1M|bnKXVT!EHVn2S97l*FoI(g7^dj^jc*Oio#aIUe6kz%p$V8T8k#;=yeIZf! z>bo|8q$`p2l3p(6OpBH(8@5<7HtJHTaKk^k&?F(nj?qDcGYBFAcPoi+!w9X!B;dV2 zMiTHr=!Io@K$VtCW&J>Kl0;x2u&DH~v#FpHNy2`h`vRxogqYX%SJ$@mf^{G|hH?H# zBOxz54xa+&vW>cJk=5v^|k#~%N?Z3UZ zkvDY5lbTq19yg>BJStaRUvO|}qVbE@wG8_(#nz#S4D1B26Aj)4iwh{wqqilCc}Veq z?OQ8X3){TqD=h!l31~TyzNsxV1WA=7|5}klI;pvQ{$M%`KOg5cn8=YxKMF+$V=5mE{-ZXPL zhvCr5$ms{IMZR2UYqT_H^>7Q>U4u2_*@ilRD4r88oo+Ko>4?oluh^ey;^jSRe7y5lQd8HM- zcU%91J`3N}6C~?;P-ze_{|^DLqkWIA{;4iJyv|m=)fh`fZAq`}8Wb-f?ME0x;6FS* isQ6!_2?Ty0aQ-Pym@_oIDcl;&)?VkS(;8T68~+VURRDVc diff --git a/__pycache__/settings.cpython-38.pyc b/__pycache__/settings.cpython-38.pyc index ca9dbf7d2f28fd49ceed7ddaf07a33c82625a419..45c8227285d9c4e6db6cdea3eb2dd62221629a20 100644 GIT binary patch delta 66 zcmbQmJCBz;l$V!_0SKn*`%L71rfI65k)NBYpOuuETAZ4#A5fZ8kXfQ1TveHroS9z~ UoSRrw5>k|yU6Q|9jIo6k0FQ$es{jB1 delta 62 zcmbQoJByb)l$V!_0SIDqZ6|U+Q#I7j$j?pHFD@xfNzE%M)-N_OwKO&`*Donb%r40< Q($7sSE=k=i#n{3M03qZO>i_@% diff --git a/bfs.py b/bfs.py new file mode 100644 index 0000000..bd42ea7 --- /dev/null +++ b/bfs.py @@ -0,0 +1,51 @@ +import settings +import math + + +def generate_neighbours_list(): + width = settings.Field.horizontal_count() + height = settings.Field.vertical_count() + keys = [width for width in range(height * width)] + neighbours_list = {key: [] for key in keys} + for i in range(height): + for j in range(width): + point = i * width + j + # point_row = math.floor(point/width) + # point_column = point % width + point_left = i * width + j - 1 + point_left_column = point_left - width * i + point_right = i * width + j + 1 + point_right_column = point_right % width + point_up = (i - 1) * width + j + point_up_row = math.floor(point_up / width) + point_down = (i + 1) * width + j + point_down_row = math.floor(point_down / width) + if point_left_column >= 0: + neighbours_list[point].append(point_left) + if point_right_column > 0: + neighbours_list[point].append(point_right) + if point_up_row >= 0: + neighbours_list[point].append(point_up) + if point_down_row < height: + neighbours_list[point].append(point_down) + return neighbours_list + + +def generate_fields_lists(fields): + width = settings.Field.horizontal_count() + height = settings.Field.vertical_count() + fields_to_visit = [] + for i in range(height): + for j in range(width): + point = i * width + j + if fields[j][i] == 'dirt': + fields_to_visit.append(point) + return fields_to_visit + + +def generate_all(fields): + neighbours_list = generate_neighbours_list() + fields_to_visit = generate_fields_lists(fields) + print(neighbours_list) + print(fields_to_visit) + diff --git a/main.py b/main.py index d13a5cd..a7834e9 100644 --- a/main.py +++ b/main.py @@ -1,6 +1,6 @@ import pygame import random - +import bfs import field import settings import common @@ -21,21 +21,25 @@ def randomize_map(): fields_array = [] for i in possibleFields: fields_array.append(possibleFields[i].tile.object) - field_array_big = [] field_array_small = [] + field_array_big_2 = [] + field_array_small_2 = [] for i in range(settings.Field.horizontal_count()): for j in range(settings.Field.vertical_count()): - field_array_small.append(random.choice(fields_array)) + k = random.choice(list(possibleFields.keys())) + field_array_small.append(possibleFields[k].tile.object) + field_array_small_2.append(k) field_array_big.append(field_array_small) + field_array_big_2.append(field_array_small_2) field_array_small = [] - return field_array_big + field_array_small_2 = [] + return field_array_big, field_array_big_2 def read_img(agent, fields): window = common.get('window') current_field = fields[agent.x()][agent.y()] - if current_field == possibleFields['grass'].tile.object: window.blit(possibleFields['grass'].block.object, (0, 0)) elif current_field == possibleFields['dirt'].tile.object: @@ -80,7 +84,8 @@ def main(): pygame.display.set_caption(settings.Pygame.display_name()) - fields = randomize_map() + fields, fields_2 = randomize_map() + bfs.generate_all(fields_2) while common.get('game_running'): pygame.time.Clock().tick(settings.Pygame.fps())