awacke1 commited on
Commit
b73f288
·
1 Parent(s): a31a81d

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +84 -0
app.py ADDED
@@ -0,0 +1,84 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import streamlit as st
2
+ import random
3
+ import string
4
+
5
+ board_size = 15
6
+ words = []
7
+ board = [[' ' for _ in range(board_size)] for _ in range(board_size)]
8
+
9
+ def load_word_list():
10
+ global words
11
+ try:
12
+ with open("word_list.txt", "r") as f:
13
+ words = f.read().split("\n")
14
+ except FileNotFoundError:
15
+ pass
16
+ st.text_area("Enter a list of words (one per line)", "\n".join(words), key="words_area")
17
+ st.sidebar.subheader("Word List:")
18
+ for i, word in enumerate(words):
19
+ st.sidebar.write(f"{i+1}. {word}")
20
+
21
+ def save_word_list():
22
+ global words
23
+ with open("word_list.txt", "w") as f:
24
+ f.write("\n".join(words))
25
+ st.write("Word list saved successfully!")
26
+
27
+ def generate_board():
28
+ global board, words
29
+ board = [[' ' for _ in range(board_size)] for _ in range(board_size)]
30
+ for word in words:
31
+ word = word.upper()
32
+ row, col = random.randint(0, board_size - 1), random.randint(0, board_size - 1)
33
+ direction = random.choice(['horizontal', 'vertical', 'diagonal'])
34
+ if direction == 'horizontal' and col + len(word) <= board_size:
35
+ for i, letter in enumerate(word):
36
+ board[row][col+i] = letter
37
+ elif direction == 'vertical' and row + len(word) <= board_size:
38
+ for i, letter in enumerate(word):
39
+ board[row+i][col] = letter
40
+ elif direction == 'diagonal' and row + len(word) <= board_size and col + len(word) <= board_size:
41
+ for i, letter in enumerate(word):
42
+ board[row+i][col+i] = letter
43
+ for i in range(board_size):
44
+ for j in range(board_size):
45
+ if board[i][j] == ' ':
46
+ board[i][j] = random.choice(string.ascii_uppercase)
47
+
48
+ buttons = {
49
+ "Load Word List": load_word_list,
50
+ "Save Word List": save_word_list,
51
+ "Generate Board": generate_board
52
+ }
53
+
54
+ if "words_area" not in st.session_state:
55
+ try:
56
+ with open("word_list.txt", "r") as f:
57
+ words = f.read().split("\n")
58
+ except FileNotFoundError:
59
+ pass
60
+ st.text_area("Enter a list of words (one per line)", "\n".join(words), key="words_area")
61
+
62
+ for button_label, button_func in buttons.items():
63
+ if st.sidebar.button(button_label):
64
+ with open("word_list.txt", "w") as f:
65
+ f.write(st.session_state.words_area)
66
+ words = st.session_state.words_area.split("\n")
67
+ button_func()
68
+ st.sidebar.subheader("Word List:")
69
+ for i, word in enumerate(words):
70
+ st.sidebar.write(f"{i+1}. {word}")
71
+
72
+ with open("word_list.txt", "w") as f:
73
+ f.write(st.session_state.words_area)
74
+ words = st.session_state.words_area
75
+ if st.button("Save Word List", key="save_word_list_btn"):
76
+ words = words.split("\n")
77
+ save_word_list()
78
+
79
+ st.sidebar.subheader("Word List:")
80
+ for i, word in enumerate(words.split("\n")):
81
+ st.sidebar.write(f"{i+1}. {word}")
82
+
83
+ st.write("Word Search Board:")
84
+ st.table(board)