From 317ebc35f94cd260adcb93a48335e81f871d6445 Mon Sep 17 00:00:00 2001 From: Arthur 'Grizzly' Grisel-Davy Date: Sun, 3 May 2020 13:20:48 -0400 Subject: [PATCH] Create basic rooms and map generator --- maps/rooms/RDL-1.png | Bin 0 -> 5926 bytes maps/rooms/RDL-2.png | Bin 0 -> 6177 bytes maps/rooms/TD-1.png | Bin 0 -> 6402 bytes maps/rooms/TD-2.png | Bin 0 -> 6435 bytes maps/rooms/TL-1.png | Bin 0 -> 6416 bytes maps/rooms/TL-2.png | Bin 0 -> 6405 bytes maps/rooms/TR-1.png | Bin 0 -> 6416 bytes maps/rooms/TR-2.png | Bin 0 -> 6414 bytes maps/rooms/TRDL-1.png | Bin 0 -> 6430 bytes maps/rooms/TRDL-2.png | Bin 0 -> 6461 bytes maps/rooms/back.png | Bin 0 -> 6289 bytes utils.py | 97 ++++++++++++++++++++++++++++++++++++++++++ 12 files changed, 97 insertions(+) create mode 100644 maps/rooms/RDL-1.png create mode 100644 maps/rooms/RDL-2.png create mode 100644 maps/rooms/TD-1.png create mode 100644 maps/rooms/TD-2.png create mode 100644 maps/rooms/TL-1.png create mode 100644 maps/rooms/TL-2.png create mode 100644 maps/rooms/TR-1.png create mode 100644 maps/rooms/TR-2.png create mode 100644 maps/rooms/TRDL-1.png create mode 100644 maps/rooms/TRDL-2.png create mode 100644 maps/rooms/back.png create mode 100644 utils.py diff --git a/maps/rooms/RDL-1.png b/maps/rooms/RDL-1.png new file mode 100644 index 0000000000000000000000000000000000000000..2822b6e89e12db2226e0d713da8e218dd66e689d GIT binary patch literal 5926 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3}TBt zT^vIy=DfWb=yfDO!1Z9?8L7=Da*XQuxSCd6NZ*jf`dxjG%+?-+q5hV9Me2T}|y zRzO09qXbBD2ml?&AfRvoD6inKfSG~8p}~QjfuVt+kq;=r$RrCSnZO!YMm3Cv65gay zk;DIBaq+Vo_YPb(EzZw>aPm7N!-wsE-f!D6ny^N56R;o|EkZ^M+96uIe7GUUkox@0 z#=VRTKjvmXyLXS_gRI_Y-8tG|pj9ggXznN&4S^9K0yRZ3#^1kj%sV$Txf)p7e6W9U zaN72_pzaK$qrx)UQ2}-5Mw?dDYg+ZcWeg}gd*`-vg;jdrTV94ea_=j9R zA5Chb!zH6*L_>C9>_8!~TvKMKumyKzR{e=*{2)BqjTs%DqFu#yz`E?cq`f9{R}ZKu N>*?y}vd$@?2>?f`#}ohn literal 0 HcmV?d00001 diff --git a/maps/rooms/RDL-2.png b/maps/rooms/RDL-2.png new file mode 100644 index 0000000000000000000000000000000000000000..0a4a660c012d344c576e5b29d438e9cff674e952 GIT binary patch literal 6177 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC4C3=V zT^vIy=DfXmF!ynQ0PDep3ne5~CNJr4;%5{4CUv=Kl~RTJC-Y}J(%vxwjSQ>J;RjL- zELK25g`)&WatHuj#~`3^0VuEFuz;C?!J)x{oq?f&p^*FB$>b(SVlFBh7#VS zQIW&{V0H1c8~1=|rvB-yo!iYFrgDSQ+Gx@l&0sVsRX*I1V>pn#EA8D|UYohb$G@>P z)IY4g`l$Ziqo&c~Yc%80tY)*>1}q5om!G|JTe`w3z3(kA!yY;D(fV|>5kae#6EH82 zf&mVJANhT689(@~n^|4W95VNxC&Pi+zk&4+5P)089-~d^(f$KtwQ|MOn<2kJ4SJzu;%-_fFf zwCJa9(LXw1K;;1g3sAd_g<<{kIhNai<5J&68SEd94ib!x&H-yt8V!HfFzpML*=eXZ RSs&C#@O1TaS?83{1OTfE9NPc@ literal 0 HcmV?d00001 diff --git a/maps/rooms/TD-1.png b/maps/rooms/TD-1.png new file mode 100644 index 0000000000000000000000000000000000000000..0b2b0bd30b5646afac6b3f4908a98346dc6cf01f GIT binary patch literal 6402 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=;L8 zE{-7;bKc(En9FP^;CgWBL#fCorj>lG>})BjHBD(+KO}!{cs*+;JHx-s^J^|kFF5s| zt0BB*t{l(;296RS;UNHY9)p0w1x5x21&0O93=9qp4(tpJ4GfKZKnX@BSs=;8Vg)2w zz#2G4HH?N5-lXxNwu)i@+nJ?R%ptMH-(T`Foc}QI@cli{KbVVyQru_)8qH=jDO(ai zsZG%44JhR?Fno~wlF-dPT5bVz+-T`OTBT8~9^bHT=I<{Y3@dIMzy8AZ!1Ukl1G@_x zM;i>Itt6V&?AJ_-=gS>DJTG#&IWUyxJMwSaG1>yd+X5SH%~RBc0d|=D`xz>Zfm58# zVNjQ8G{w=R$u`;&h6F1(#XU#_b(MAQ$8Wp1>TBGBB!)vg! zq4eyXb{+^+RM1=&w7T6*3t2g(Ns>mRQ`c^=X=%cStsQBffW^lr>mdKI;Vst E0HP;tDgXcg literal 0 HcmV?d00001 diff --git a/maps/rooms/TD-2.png b/maps/rooms/TD-2.png new file mode 100644 index 0000000000000000000000000000000000000000..698f752506a18e94262515d31d7fa636d49dd547 GIT binary patch literal 6435 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=#`G zT^vIy=DfY>*d^^K;CfK!a{3$RZ>qPw6?+nGnpUb?K4Ph#*&lQLj4i{5{&O?8Rx^j} zT+i^MFMc;W&mrY%|8^Jy|de#fnj}N{MH@oAH1&_O<1G330RQOrU+?B z{?4Fboqp{dF9XB;BehqHK#A|egXYnq3mD|11^j5OMzyLOT)@xTS)R}E!2kJ~TYDK9 ze&pDVR*HBlMXEKh4s5JuU^uYc5?s*jk(VD?4Y$6#%oSzl*4zcPk$+Tm(Qf87)8hAX2M=3rF3Sgo@<0Bn4M*8Q zy>!~Nm`B5VaExVudM*qPO0S>UTg}W5ZcsIRe>~c686B7c=6o8B#sQn~z;PK!Z}~v> z=)ers`bJc1=Tm#+H3C$;urR!T4rgTe~DWM4f_eO(O literal 0 HcmV?d00001 diff --git a/maps/rooms/TL-1.png b/maps/rooms/TL-1.png new file mode 100644 index 0000000000000000000000000000000000000000..33a1aba2693ebbf60594f4cf1d7dc0cb8538ce51 GIT binary patch literal 6416 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=+Mb zE{-7;bKc%O-FwGDfc4-a2kA_exl8((Wm$Ucnomtt(y3VPrv7S2`aH&l_>!|Sx1|@H z`p?yH|6^`7&0hjO}_{2x6QrcCe$VJVAJ?Zn_3hs$9KK_lZp}b-}1H(VP5f=F8-U5UA zgD0@C-^;iPoc;9mMtk4%8KXF`)0W{uEI8;H80<#75Tk=XqfM;QaY0~9V5km;HarG) q7TkdzIPiaT2yV1AqhV?GgYSKS+|Aiv-rNADHU>{uKbLh*2~7Yve|Z%E literal 0 HcmV?d00001 diff --git a/maps/rooms/TL-2.png b/maps/rooms/TL-2.png new file mode 100644 index 0000000000000000000000000000000000000000..76fb85df8568e4386d45efd93e22bfa3afbd8d5a GIT binary patch literal 6405 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=&PA zE{-7;bKc(E*n7u8!1bV9qoI+9+DYS1W3dTaj_ujIy6Zvo6Pqu)(%vyP)R&xFb60x7 zsoz`;|39XG2U@}4uz(pzG&!&{Ff=eU@&QE{nPh<^6N?p)WZ@_Qk{kj+_cI76Twr8i zP=IJ?7}YQuO8AmSL-Kcqeb(vM-tpS3n_2yxjlr(}zvZ51wXExRf>YdR0vgR`G$~tN z&)Qku|DX_5&@nW8uZZ7T5q~gyU%0N`Xc-17=|}S&P4eA=jnxbcANFNGySJB-p`xFA zwDKHnG0-fxZ7AahhHgSXD77`VkEXTJlAU%Xd%+tyh7a4pO*pydXKn#Yw+HHlj-$N= zUNFK8drttm2aEA Q0uvj9r>mdKI;Vst0CkFSYXATM literal 0 HcmV?d00001 diff --git a/maps/rooms/TR-1.png b/maps/rooms/TR-1.png new file mode 100644 index 0000000000000000000000000000000000000000..fa9b45595207194242fdebfb2c1fc9f343c43e8f GIT binary patch literal 6416 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=+Mb zE{-7;bKc%On0wbjfc4ho+f$)p+AJX+k6Vqr80wx;Tlrsl*+5*k~VYzN* zay7I5_cNRKHj0an7Gk3%H?V#icGcB6VC7xo4@%^W4{X6H{y_DP(fWDVw_*zN_<@C7 z!g15$ocsqzSqGrKX0e@};e&0g@$qkLaqniP1B=>w>y+l#X_H z22-YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=-X* zE{-7;bKc%O*n5Y8hsE(!Ko3`t=c)6D|6XIe_U3b#tAW2+#U11G3XGcY(bIIuG?G%z&s0VNojWPv0TixrS$ z0c+qG)i4@Lc#}o}Fu{G}SOHFO3=ALisx};DA5BHT3^bZ`Xj8ygY-j&)*R(h%9~j0D z?tgY1QN`DTJ8}#M&X=6Gxh>5QS9n$iL_KWAn?Xkl`_USXk^*_oZDxiaGuO>bu4ZO9 z@c+nY;SOp@(V=h$mUBRhHawnXxy}5;fYhlL?`Eb~vmDTd#682FZvN4RAuvito6ofA zGZf_UKiHl9?8dzV)2pA|yax>F8a8=4Wwz07&cJnZ&b^Av>9u|)huqfKTSva?#a;7P+($X@O1TaS?83{1OV>Z Bbdvx8 literal 0 HcmV?d00001 diff --git a/maps/rooms/TRDL-1.png b/maps/rooms/TRDL-1.png new file mode 100644 index 0000000000000000000000000000000000000000..41bcac533affacc1d1fb05d519442e4aea493f6a GIT binary patch literal 6430 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=*?F zT^vIy=DfXmFjvMRq#KmC_IMPYbV`7V|UwS!lc2FTX+S zzcz#2qvJ0bfmSp)umcH}Mm`{$kx3RvGO<_zNfwS0Aju&BbU1^6!UdpG1&0O93=9qs z4Gg0iMneg2(s(^Cw0Qo#1BY2hRDsrT{UxIV#OKN9*IWkHAU~}1Mho!KS__yjXj8Wzc>RTe;ok1F zcbBCr-pnkmVrKYIU+f5KQH(YaXy1&w2FvaYp|@vqGSnD}Q&N5oy+$6;{|tM|&)!*X z{^7a+V+3F{2$L`V{sJ!2auexr5MVO~ZRf z{%t!(R%Qn^ZyUaY8n=uL4eK8_jb?P(W%SXG*vM)~(7vfQYQtzhbb$MzYqFo&*)lcM zpPv`G+}vU6e^CbchoiN~=#V6^8l}+y{~wloA*Bo3wI|E~+QH!I>gTe~DWM4fk~o1k literal 0 HcmV?d00001 diff --git a/maps/rooms/TRDL-2.png b/maps/rooms/TRDL-2.png new file mode 100644 index 0000000000000000000000000000000000000000..be1d1de0ad32469c2cf082804ed86a4557f0606b GIT binary patch literal 6461 zcmeAS@N?(olHy`uVBq!ia0y~yV15C@9Be=l-^Ev+04bJYC(jTLAgJL;=>YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=+FM zT^vIy=DfXmuvgh#!1bU`quI8JZ&O~MIL$G^ZTE@eH#xZfwVtgyQGDKpnc@FM)8cLB z4pYC2GTi@o{Tt8@28RXAK%&Wkoq?f&p^*j?zVEp?zD5?fa(56>=*Vw#^R%iX*37XteknU)fSi_e-y_U zr&lxQe?PN%Z=?ALOL1|xnHhfgfV|GQYTZmA*>L`G(`cCvOctXR8EtCsJ=@qBWWfpU zf%*sA)XSju1;hQ(L`SdI)10@A4##aj=j1am{F{GTTHbCN_sD9ut$)kN@PQLt*fIRL z88g~M9c{=1i+h~Cmj^lg3=guwjf3r{>(v-O%-#v^0Fm6EIdD^s;lTBGGl6Z51N#dr zgPHya>5cZ1Kz&J)gOX$o2VT#s+~)qF?ChMkybKHn<~#Cl+d*C|l5F)L(eUAx90SAr z2eT}1OIPepp9c(v539*c$b-a3v}vA<4qs5MLIhQ`HE%&FZo#Sd%nkETu#OIZ;2QuL z9ZaKF8+bI6Q=Z8o!*vWlY_6ZVd5YOM3p^r= z85sDEfH31!Z9ZwBpk#?_L`iUdT1k0gQ7S`udAVL@UUqSEVnM22eo^}DcQ#TC3=({v zE{-7;bKYJzWIUk2aA1R>^N;XGL7N7iDiy9@Wp7N+vja`C`MRGENHOqO0SOg}5+KQ8 z0CW_CK*9w^1_p%#3z!)g92y*fY8x1uK}s3fWPv0TSOd$bhS5+OO&X*5VYJj3EhmdKI;Vst03eu|^#A|> literal 0 HcmV?d00001 diff --git a/utils.py b/utils.py new file mode 100644 index 0000000..63f1753 --- /dev/null +++ b/utils.py @@ -0,0 +1,97 @@ +# -*- coding: UTF-8 -*- + +### Tangled Mind +### Author: Arthur 'Grizzly' Grisel-Davy + +from glob import glob +import random + +def fetch_rooms(path): + """Fetch all the basic tiles asset from the path. + Return a dictionary + """ + + wildcard = '*-*.png' + filenames = glob(path+wildcard) + print(f"Found {len(filenames)} rooms") + + assembly = {'T':[], + 'R':[], + 'D':[], + 'L':[],} + + for filename in filenames: + label = filename.split("/")[-1].split('-')[0] + if 'T' in label: + assembly['D'].append((label,filename)) + if 'R' in label: + assembly['L'].append((label,filename)) + if 'D' in label: + assembly['T'].append((label,filename)) + if 'L' in label: + assembly['R'].append((label,filename)) + + return assembly + + + +def map_generator(n): + """Map generator generate a map with a main path of n rooms + """ + + room_side = 1000 + + assembly = fetch_rooms('./maps/rooms/') + #assembly = {'T/R/D/L':[(label1,path1),(label2,path2),...]} + + start_key = random.choice(list(assembly.keys())) + start_label,start_room = random.choice(assembly[start_key]) + + position = [0,0] + carte = [(start_room,position)] + + # Select an arbitrary first direction of arrival + dir_from = random.choice(start_label) + current_label = start_label + + for i in range(n): + # select the next direction, can't be the direction of arrival + dir_next = random.choice(current_label.replace(dir_from,'')) + + # Select the next room + next_label,next_room = random.choice(assembly[dir_next]) + + # Compute the position of the next tile + if dir_next == 'T': + next_position = [position[0],position[1]-room_side] + dir_from = 'D' + + if dir_next == 'R': + next_position = [position[0]+room_side,position[1]] + dir_from = 'L' + + if dir_next == 'D': + next_position = [position[0],position[1]+room_side] + dir_from = 'T' + + if dir_next == 'L': + next_position = [position[0]-room_side,position[1]] + dir_from = 'R' + + # Build the map + carte.append((next_room,next_position)) + + # Update the label for next turn + current_label = next_label + position = next_position + + # Display the result: + for room in carte: + print(f"Room {room[0].split('/')[-1]} at position {room[1]}") + + print('Done.') + + + + +