From 43ef67be161766d85300e4fbcdfbb54bffb43ebe Mon Sep 17 00:00:00 2001 From: Skullheadx <94652084+Skullheadx@users.noreply.github.com> Date: Mon, 21 Nov 2022 16:10:04 -0500 Subject: [PATCH] import puzzle --- Main/__pycache__/board.cpython-310.pyc | Bin 1769 -> 1826 bytes Main/__pycache__/game.cpython-310.pyc | Bin 1422 -> 1861 bytes Main/__pycache__/tile.cpython-310.pyc | Bin 1994 -> 1963 bytes Main/board.py | 19 ++++++++---------- Main/game.py | 26 ++++++++++++++++--------- Main/main.py | 2 +- Main/puzzle_generator.py | 0 Main/puzzles/templates/puzzle.txt | 2 ++ Main/tile.py | 6 +++--- 9 files changed, 31 insertions(+), 24 deletions(-) create mode 100644 Main/puzzle_generator.py create mode 100644 Main/puzzles/templates/puzzle.txt diff --git a/Main/__pycache__/board.cpython-310.pyc b/Main/__pycache__/board.cpython-310.pyc index 67a9d2c52d920244ccaa20bf7fc05002dbf3439f..f25d6f4acb44f9f7d072e741791a136d3a620e7d 100644 GIT binary patch delta 869 zcmaFKyNHiBpO=@5fq{YH?2GE;Clh&P4b>PJ7*ZHg7;_jxKr~YhV=hw^6C;B=Lke>W zOAA8^OEXgxa|&xPgC^Tckj{xIk@c(~1{AY1Ffgz&FfcGPFfbHXF)%QcFf3rKVO+@A z!5Gg}!_>hT&s@XY!5Gid&d|=7#+1UC!qmc1!rH-@#oWy3!q5y-$Cl2}!5Ghu5RDbB zWd-wCKx$%nYuP#&v)C7KbTDSI)vyXlGSsk1GAv|dWGK`uR7zp!V4Up3s4Qo|z`&5s zP{R-_(#g=y*v`<-l*SD5TMI`CLkH93Zbl;?7nl;cT1Jpy7GoAu4PyyI7PAP0I70_h z7GoAm2b`bA)WOif*uj*=D#B31D9#|s(9ATEsgNm{VI_km+vJ~&N=mm_%QI6-GBlZP zG3goHVouJ_(PX~Go|9Tql3G-Ji@7Mje6l7}fG9U8bU-1`#=yj=@?U_F@i!(1Z zGd&|Izo@uKWb$MdMMnO~TUpf9Kt>iRFfcHPfIKb3z`(%5$i>LTD8MMd#KFkH$i~Rj zAiy-4k##Af$mHd$TG65)hk(-0E!L#es?;2an>j$DV26Wj)?^0z=@v_IX;E5{I!F%e z2`~Y+QHz0r0hF4Hc^DWNR2UT)IsS7oP1azu@RS9q205q*qz2-7us$#W*381dzyRVE zgKXts;9%n5++rPO2Rv$d90a=3wAq H6k-MdF7l)! delta 812 zcmZ3)_mY=4pO=@5fq{X+{!w*u-$Y(nD?J7Vh7^Vr#vFzy5Y3ds7y_c1bC`0OqnH^P z+!<0>QdnCUQdparqF7QGgBdj0UV=>Un;0Eg&jMmWF&hH|0|+xSFfbHXFfcHbFf3rK zVO+@A!4S_>!_>hL&s@XY!4S{V&XC5K!kEI;!coH7!H~t=%;>_<3{u6G&d|XS&yEm{ z6|H3f^H@M?VtH#p>e&}?bTDMG)v!o12-L7jGAv|dWGK`qR7_#$V3_R6s4N5WQaVEo zL#%KoLpwt|V;U34gDo5-3>}P<+Zc^(Oc)p#zzW1_89{}PF zj9Dx-j4*y0Q#0d4rb4D*hLsGOtdm)ol=w86ZZYW@++xhqWV*$eIoX3LfSVWOYbFK; z1`~$KtC=i~Z?TqVrj%r8G8TctdnIELNP#9}5f1|cLlGZ{;Adc900|a@bm=ivDNSC> zq%_%sS&>Z;BrPyGpIOtJ4Xm#S6s|?0AYrf^*br_ImlZ?^fe4V9w>aYCGxIV_;^R3% z&Jkf?VBle7V`O8LVq{~Q{DS#}oH$6SBm)D(Ew<8vl*E$MTby~Rnduox`9;M=!jsRj zC^GU+{=lN91~RTlmVto*WNWbu0|NsKBNrnVqX3ft69*#)BO4=Ag8=hn8`hvsw5`fmDJVQv{MP0xL%lV2z-Z$PUxU!N9@9!NVg`1QOL`EfNNKn6)^y hq_m(&W%3I)S$UA2TO2mI`6;D2sdkLW8hIFnm;r=JksAO2 diff --git a/Main/__pycache__/game.cpython-310.pyc b/Main/__pycache__/game.cpython-310.pyc index 260740c39f690dfb3099bd6b09850640ccf13c7c..fc0e4e0d83b010c1b93d1e6b65be3402f45887c1 100644 GIT binary patch delta 1222 zcmeC+f3R?<$3qurp z3P%cO3quq~3Ue@nCilb}8ufn3Odu^#%*MdLz`?-4;LO0lP<(}ffuV*mg`t$8NHm2p zhN+gRmN|tfg}H^HgrSD1hFOH6nbC!znX!f;o-t3agsFxxg{7IPU$K^@hGhZsLWTt_ zDXa?_YgtQJOV~=-Ygkj*BpDX4EM#bAYKEFt!&;xhF3A8gAes;X^I}}`lS^|a z%P}d}bJ^r%7MCRF=N8!UfNTXhL5!hF(LFIYRWCk1GcU6wK3>lzCqFqcr`S#pq52kM z(Je-+$-7Bfd~V!&7(00}WCrlb@pgH))3xNMQGK0f~8w^-eSTwVQ&6hRV7AVLL1s4*}wXfhXRf>g4m zq~??)MsX&k$0z6KD5&&$ijz`($8>~VE+ILkyn88<5i28I-d6viBeC=kt*!x#dhnRA$OnWLB) zL2Q;BmR!~-Rz?PQh7{HmwibpIwq~X%wiL!-22J*tAmjWdrW;roF)%QsGDI<^Fhnt> zGH0v4vbamQvUnD<)G);Jmhd$*)G);Jr!WLFXtMgfWMW`oc*(-Rz;KHpL{p#$ z#G0(iT+PjRi={X2FyDt$po>FrMR>x4c!h^1_lNNPy~R&hlf#(v5M0@F*j8YWQm_9=Pi!-_`Jl)Eo}1j z+#n}`ymO1iEkCcMND9OUIk5<229mi553n*YFtCFR2RV#`fsc`ciGz(tpa>+c$zB99 z@fK@wYDsB96iZ2FPHGV|$V^Z`gQE+q4rZ_>0|SH!3YuFSHo5sJr8%i~phQ#*F`k2o KhmnU-hzS5Zte3?A diff --git a/Main/__pycache__/tile.cpython-310.pyc b/Main/__pycache__/tile.cpython-310.pyc index cb06862dd7b5790041213e73295340b0949e932f..450e962d029f0b585c829ba98dccdcdf9d60f1b1 100644 GIT binary patch delta 704 zcmX@bznY&fpO=@5fq{X6^;vZ?EBi#gtE?|M7#J8PzEQ4c28ly4D+2=qNS!kS14D5g z0|P?|!ve+{#)XVE4Dn1UAdCI$uuO}@zo8Pz8#df0eDvRsq>n4LA?3N@LFBtYs}Q&MwE5{pDYN~Gb0 z%;cTS5#k_yD;dG+ijd_rSfW)y;d6^6C^fkRV!1d-uNsIzR=I+u+LjaKWVRxZh9V7+ z0eykda(Ip6(tY@$Ny6kwuyy0TwV*2*hMfO07!Gxy6!{lUY(E3^E_&lv|7yU0kdQ#2e8{Jf{eJuTAW%^T2KT^hH#4+AS{{5>)2%gO+k@G delta 734 zcmZ3@e~OxC{((4ijG}*E2ylV3LJ_fdQn}nSp_! zxP^g%p@d-pV-4d%#u|orrW6p#T*9(|wS)~U!d}CW#j$|1h9QeRg{g!qi+dq+4MRLn zIztUZJZ}kK3UdleGm{HLtZXe45>K?2xrQN&cL9G5Ll#pBgYg2!8m1bCECCUQ8jys5 z2*W}qafXGAj0}aEg-R(5!3>(Ler_Qz|NsC0|0T$=nu3$JGpb7zCFZ5%=iXvV&dAS9 zPQAsEm{X9En3P&F`3_^S7|Sh|;?$h9B5no-hFgr8w-~clG8D;9_F@WR>p-LL8)TB_mi}5waX7 zOSCE{NHa@NYH|tK-XckmUJVd|tg@4(+Li-k8(R@bLy;Cp0oVrU=tW`u_dSGm82GF3KW4H1~%{(OG;5<`7M?rkUNAyPU74YE^2^EtaI5%#tEekoh2|++wT%JKz>$r6v>Dv$t4^ON-LrUglsZ zk^?E$n>?G%(--VfBM@H)M1Z{|2r`|;EkCcMNFF4p4k9!`1jq?R${>~=h(Lr5m?bya Yklj`hWW+7j;?$DTf+A+Ds`}Yw0GZpKEdT%j diff --git a/Main/board.py b/Main/board.py index 1c2c042..89f5f8b 100644 --- a/Main/board.py +++ b/Main/board.py @@ -1,16 +1,15 @@ -import pygame - from setup import * from tile import Tile class Board: - def __init__(self,position, length, width): + def __init__(self, position, length, width, letters): self.position = pygame.Vector2(position) self.length = length self.width = width - self.board = [[Tile((self.position.x + i * Tile.side_length,self.position.y + j * Tile.side_length)) for j in range(self.width)][:] for i in range(self.length)] + self.board = [[Tile((self.position.x + col * Tile.side_length, self.position.y + row * Tile.side_length), + letters[row * self.width + col]) for col in range(self.width)][:] for row in range(self.length)] self.tiles = [] for i in range(self.length): @@ -22,16 +21,14 @@ class Board: letter = "" for tile in self.tiles: if self.last_selected is None: - - l = tile.update(delta,tile.neighbors) + l = tile.update(delta, tile.neighbors) else: - l = tile.update(delta,self.last_selected.neighbors) + l = tile.update(delta, self.last_selected.neighbors) if l != "": letter += l self.last_selected = tile - - if not pygame.mouse.get_pressed(3)[0]: # mouse not down + if not pygame.mouse.get_pressed(3)[0]: # mouse not down for tile in self.tiles: tile.reset() self.last_selected = None @@ -39,11 +36,11 @@ class Board: return letter def draw(self, surf): - pygame.draw.rect(surf,Colour.BLACK,pygame.Rect(self.position-pygame.Vector2(Tile.bezel/2), (self.length * Tile.side_length+Tile.bezel, self.width*Tile.side_length +Tile.bezel))) + pygame.draw.rect(surf, Colour.BLACK, pygame.Rect(self.position - pygame.Vector2(Tile.bezel / 2), ( + self.length * Tile.side_length + Tile.bezel, self.width * Tile.side_length + Tile.bezel))) for tile in self.tiles: tile.draw(surf) # debug # if self.last_selected is not None: # for i in self.last_selected.neighbors: # pygame.draw.rect(surf,Colour.BLUE,pygame.Rect(i,(Tile.side_length,Tile.side_length)),3) - diff --git a/Main/game.py b/Main/game.py index 9f8e11e..712ab32 100644 --- a/Main/game.py +++ b/Main/game.py @@ -1,21 +1,30 @@ -import pygame - from setup import * from tile import Tile from board import Board + class Game: font = pygame.font.Font("font/Silkscreen-Regular.ttf", 40) - def __init__(self): - self.board = Board(center - pygame.Vector2(2 * Tile.side_length),4,4) + def __init__(self, imported_file_name=None): + if imported_file_name is None: + length, width = 4,4 + self.letters = [random.choice(alphabet) for i in range(length * width)] + else: + with open(imported_file_name,"r") as f: + file_contents = f.read().split("\n") + length, width = tuple(map(int,file_contents[0].split())) + self.letters = file_contents[1] + + self.board = Board(center - pygame.Vector2(2 * Tile.side_length), length, width, self.letters) + self.word = "" - self.word_display = self.font.render(self.word,True,Colour.BLACK,Colour.LIGHT_GRAY) + self.word_display = self.font.render(self.word, True, Colour.BLACK, Colour.LIGHT_GRAY) self.seen = set() def update(self, delta): self.word += self.board.update(delta) - if not pygame.mouse.get_pressed(3)[0]: # mouse not down + if not pygame.mouse.get_pressed(3)[0]: # mouse not down if self.word in word_list: self.seen.add(self.word) self.word = "" @@ -26,9 +35,8 @@ class Game: elif self.word in word_list: bg_colour = Colour.GREEN - self.word_display = self.font.render(self.word,True,Colour.BLACK,bg_colour) - + self.word_display = self.font.render(self.word, True, Colour.BLACK, bg_colour) def draw(self, surf): self.board.draw(surf) - surf.blit(self.word_display, self.word_display.get_rect(center=(center.x,SCREEN_HEIGHT/5))) + surf.blit(self.word_display, self.word_display.get_rect(center=(center.x, SCREEN_HEIGHT / 5))) diff --git a/Main/main.py b/Main/main.py index beee3c6..3c0238c 100644 --- a/Main/main.py +++ b/Main/main.py @@ -4,7 +4,7 @@ from setup import * from game import Game -scene = Game() +scene = Game("puzzles/templates/puzzle.txt") is_running = True delta = 1000/fps diff --git a/Main/puzzle_generator.py b/Main/puzzle_generator.py new file mode 100644 index 0000000..e69de29 diff --git a/Main/puzzles/templates/puzzle.txt b/Main/puzzles/templates/puzzle.txt new file mode 100644 index 0000000..14c84b0 --- /dev/null +++ b/Main/puzzles/templates/puzzle.txt @@ -0,0 +1,2 @@ +4 4 +abcdefghijklmnop \ No newline at end of file diff --git a/Main/tile.py b/Main/tile.py index 82cd3de..fb21c0a 100644 --- a/Main/tile.py +++ b/Main/tile.py @@ -5,13 +5,13 @@ from setup import * class Tile: side_length = 80 bezel = 5 - cutoff = 7.5 + cutoff = 8 font = pygame.font.Font("font/Silkscreen-Regular.ttf", 20) - def __init__(self, position): + def __init__(self, position, letter): self.position = pygame.Vector2(position) self.selected = False - self.letter = random.choice(alphabet) + self.letter = letter #random.choice(alphabet) self.text = self.font.render(self.letter,True, Colour.BLACK) self.neighbors = [] for i in range(-1,2): -- 2.54.0