Skip to content

Commit 6215685

Browse files
committed
moved thins around
1 parent afb8179 commit 6215685

9 files changed

Lines changed: 567 additions & 18 deletions

File tree

dumbdisplay/examples/sliding_puzzle/board_manager.py renamed to OLD_examples/sliding_puzzle/board_manager.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -34,16 +34,16 @@ def showBoard(self):
3434
#print()
3535
def randomizeBoardStepGetUndoMove(self) -> int:
3636
self.randomizeBoardStep()
37-
move = self.randomize_can_move_from_dir
38-
if move == 0:
39-
move = 1
40-
elif move == 2:
41-
move = 3
42-
elif move == 3:
43-
move = 2
37+
moved_from_dir = self.randomize_can_move_from_dir
38+
if moved_from_dir == 0:
39+
undo_move_from_dir = 1
40+
elif moved_from_dir == 2:
41+
undo_move_from_dir = 3
42+
elif moved_from_dir == 3:
43+
undo_move_from_dir = 2
4444
else:
45-
move = 0
46-
return move
45+
undo_move_from_dir = 0
46+
return undo_move_from_dir
4747
def randomizeBoardStep(self) -> tuple[int, int, int]:
4848
can_count = self.checkCanMoveFromDirs(self.randomize_can_move_from_dir)
4949
self.randomize_can_move_from_dir = self.randomize_can_move_from_dirs[random.randint(0, can_count - 1)]

dumbdisplay/examples/sliding_puzzle/sliding_puzzle_app.py renamed to OLD_examples/sliding_puzzle/sliding_puzzle_app.py

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import random
21
import time
32
from dumbdisplay.core import *
4-
from dumbdisplay.examples.sliding_puzzle.board_manager import BoardManager
3+
from dumbdisplay_examples.sliding_puzzle.board_manager import BoardManager
54
from dumbdisplay.layer_graphical import LayerGraphical
65
from dumbdisplay.layer_lcd import LayerLcd
76
from dumbdisplay.layer_selection import LayerSelection

dumbdisplay/examples/sliding_puzzle/sliding_puzzle_app_OLD.py renamed to OLD_examples/sliding_puzzle/sliding_puzzle_app_OLD.py

File renamed without changes.

dumbdisplay/examples/sliding_puzzle/sliding_puzzle_app_SIMPLE.py renamed to OLD_examples/sliding_puzzle/sliding_puzzle_app_SIMPLE.py

File renamed without changes.

_test.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import random
2+
import runpy
23
import time
34
import math
45

56

67
from dumbdisplay.core import *
7-
from dumbdisplay.examples.utils import create_example_wifi_dd
8+
from dumbdisplay_examples.utils import create_example_wifi_dd
89
from dumbdisplay.io_inet import *
910
#from dumbdisplay.layers import *
1011

@@ -15,24 +16,24 @@ def run_debug():
1516
test.runDebug()
1617

1718
def run_doodle():
18-
import samples.doodle.main
19+
runpy.run_path("samples/doodle/main.py")
1920

2021
def run_graphical():
21-
import samples.graphical.main
22+
runpy.run_path("samples/graphical/main.py")
2223

2324
def run_melody():
24-
import samples.melody.main
25+
runpy.run_path("samples/melody/main.py")
2526

2627

2728
def run_passive_blink_app():
28-
from dumbdisplay.examples.passive_blink.passive_blink_app import PassiveBlinkApp
29+
from dumbdisplay_examples.passive_blink.passive_blink_app import PassiveBlinkApp
2930
print(f"*** PassiveBlinkApp ***")
3031
app = PassiveBlinkApp(create_example_wifi_dd())
3132
app.run()
3233

3334

3435
def run_sliding_puzzle_app():
35-
from dumbdisplay.examples.sliding_puzzle.sliding_puzzle_app import SlidingPuzzleApp
36+
from dumbdisplay_examples.sliding_puzzle.sliding_puzzle_app import SlidingPuzzleApp
3637
print(f"*** SlidingPuzzleApp ***")
3738
suggest_move_from_dir_func = lambda board_manager: random.randint(0, 3)
3839
app = SlidingPuzzleApp(create_example_wifi_dd(), suggest_move_from_dir_func=suggest_move_from_dir_func)
@@ -94,7 +95,6 @@ def test_find_packages():
9495
#run_passive_blink_app()
9596
run_sliding_puzzle_app()
9697

97-
9898
#run_debug()
9999
#run_doodle()
100100
#run_graphical()

dumbdisplay/examples/passive_blink/passive_blink_app.py renamed to dumbdisplay_examples/passive_blink/passive_blink_app.py

File renamed without changes.
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
import random
2+
3+
4+
class BoardManager:
5+
def __init__(self, tile_count: int):
6+
self.tile_count = tile_count
7+
self.board_tiles = [i for i in range(tile_count * tile_count)]
8+
self.hole_tile_col_idx = 0
9+
self.hole_tile_row_idx = 0
10+
self.randomize_can_move_from_dirs = [0, 0, 0, 0]
11+
self.randomize_can_move_from_dir = -1
12+
def clone(self):
13+
new_board_manager = BoardManager(self.tile_count)
14+
new_board_manager.board_tiles = self.board_tiles.copy()
15+
new_board_manager.hole_tile_col_idx = self.hole_tile_col_idx
16+
new_board_manager.hole_tile_row_idx = self.hole_tile_row_idx
17+
new_board_manager.randomize_can_move_from_dirs = self.randomize_can_move_from_dirs.copy()
18+
new_board_manager.randomize_can_move_from_dir = self.randomize_can_move_from_dir
19+
return new_board_manager
20+
def showBoard(self):
21+
for col_idx in range(self.tile_count):
22+
for row_idx in range(self.tile_count):
23+
#tile_idx = col_idx * self.tile_count + row_idx
24+
tile_id = self.board_tiles[col_idx * self.tile_count + row_idx]
25+
if row_idx == 0:
26+
if col_idx == 0:
27+
print(self.tile_count * "-----" + "-")
28+
print("|", end="")
29+
print(f" {tile_id:2} |", end="")
30+
if row_idx == (self.tile_count - 1):
31+
print()
32+
if col_idx == (self.tile_count - 1):
33+
print(self.tile_count * "-----" + "-")
34+
#print()
35+
def randomizeBoardStepGetUndoMove(self) -> int:
36+
self.randomizeBoardStep()
37+
moved_from_dir = self.randomize_can_move_from_dir
38+
if moved_from_dir == 0:
39+
undo_move_from_dir = 1
40+
elif moved_from_dir == 2:
41+
undo_move_from_dir = 3
42+
elif moved_from_dir == 3:
43+
undo_move_from_dir = 2
44+
else:
45+
undo_move_from_dir = 0
46+
return undo_move_from_dir
47+
def randomizeBoardStep(self) -> tuple[int, int, int]:
48+
can_count = self.checkCanMoveFromDirs(self.randomize_can_move_from_dir)
49+
self.randomize_can_move_from_dir = self.randomize_can_move_from_dirs[random.randint(0, can_count - 1)]
50+
(from_col_idx, from_row_idx) = self.canMoveFromDirToFromIdxes(self.randomize_can_move_from_dir)
51+
to_col_idx = self.hole_tile_col_idx
52+
to_row_idx = self.hole_tile_row_idx
53+
from_tile_id = self.board_tiles[from_row_idx * self.tile_count + from_col_idx]
54+
self.board_tiles[from_row_idx * self.tile_count + from_col_idx] = self.board_tiles[self.hole_tile_row_idx * self.tile_count + self.hole_tile_col_idx]
55+
self.board_tiles[self.hole_tile_row_idx * self.tile_count + self.hole_tile_col_idx] = from_tile_id
56+
self.hole_tile_col_idx = from_col_idx
57+
self.hole_tile_row_idx = from_row_idx
58+
return (to_col_idx, to_row_idx, from_tile_id)
59+
def moveTileByMove(self, move: int) -> int:
60+
(from_col_idx, from_row_idx) = self.canMoveFromDirToFromIdxes(move) # move is the same thing as move_from_dir
61+
return self.moveTileFromIdxes(from_col_idx, from_row_idx)
62+
def moveTileFromIdxes(self, from_col_idx: int, from_row_idx: int) -> int:
63+
prev_hole_tile_id = self.board_tiles[self.hole_tile_row_idx * self.tile_count + self.hole_tile_col_idx]
64+
self.board_tiles[self.hole_tile_row_idx * self.tile_count + self.hole_tile_col_idx] = self.board_tiles[from_row_idx * self.tile_count + from_col_idx]
65+
self.board_tiles[from_row_idx * self.tile_count + from_col_idx] = prev_hole_tile_id
66+
self.hole_tile_col_idx = from_col_idx
67+
self.hole_tile_row_idx = from_row_idx
68+
return prev_hole_tile_id
69+
def checkBoardSolved(self) -> bool:
70+
for row_tile_idx in range(0, self.tile_count):
71+
for col_tile_idx in range(0, self.tile_count):
72+
tile_id = col_tile_idx + row_tile_idx * self.tile_count
73+
board_tile_id = self.board_tiles[row_tile_idx * self.tile_count + col_tile_idx]
74+
if board_tile_id != tile_id:
75+
return False
76+
return True
77+
def checkCanMoveFromDirs(self, prev_can_move_from_dir: int) -> int:
78+
can_count = 0
79+
if self.hole_tile_col_idx > 0 and prev_can_move_from_dir != 1:
80+
self.randomize_can_move_from_dirs[can_count] = 0; # 0: left
81+
can_count += 1
82+
if self.hole_tile_col_idx < (self.tile_count - 1) and prev_can_move_from_dir != 0:
83+
self.randomize_can_move_from_dirs[can_count] = 1 # 1: right
84+
can_count += 1
85+
if self.hole_tile_row_idx > 0 and prev_can_move_from_dir != 3:
86+
self.randomize_can_move_from_dirs[can_count] = 2 # 2: up
87+
can_count += 1
88+
if self.hole_tile_row_idx < (self.tile_count - 1) and prev_can_move_from_dir != 2:
89+
self.randomize_can_move_from_dirs[can_count] = 3 # 3: down
90+
can_count += 1
91+
return can_count
92+
def canMoveFromDirToFromIdxes(self, can_move_from_dir: int):
93+
if can_move_from_dir == 0:
94+
from_col_idx = self.hole_tile_col_idx - 1
95+
from_row_idx = self.hole_tile_row_idx
96+
elif can_move_from_dir == 1:
97+
from_col_idx = self.hole_tile_col_idx + 1
98+
from_row_idx = self.hole_tile_row_idx
99+
elif can_move_from_dir == 2:
100+
from_col_idx = self.hole_tile_col_idx
101+
from_row_idx = self.hole_tile_row_idx - 1
102+
else:
103+
from_col_idx = self.hole_tile_col_idx
104+
from_row_idx = self.hole_tile_row_idx + 1
105+
return (from_col_idx, from_row_idx)

0 commit comments

Comments
 (0)