awacke1 commited on
Commit
5d36cc3
·
1 Parent(s): b03b8e6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +29 -29
app.py CHANGED
@@ -4,33 +4,20 @@ from PIL import Image
4
  from io import BytesIO
5
  import os
6
 
7
- DEFAULT_CARD_WIDTH = 75
8
- DEFAULT_CARD_HEIGHT = 100
9
 
10
- PARTS = {"background": ["white", "black", "red", "blue", "green", "yellow"],
11
- "suit": ["clubs", "diamonds", "hearts", "spades"],
12
- "value": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]}
 
 
13
 
14
- LEVELS = {"level 1": ["common", "uncommon", "rare"],
15
- "level 2": ["epic", "legendary", "mythic"],
16
- "level 3": ["godlike"]}
17
 
18
  def draw_card(background, suit, value, level, card_width, card_height):
19
- print(f"Background image: {background}")
20
  dwg = svgwrite.Drawing(size=(f"{card_width}px", f"{card_height}px"))
21
- dwg.add(dwg.rect((0, 0), (card_width, card_height), rx=10, ry=10, fill="white", stroke="black", stroke_width=2))
22
-
23
- # Add background image, if provided
24
- if background and os.path.exists(background):
25
- img = Image.open(background)
26
- print("Image opened successfully")
27
- img = img.resize((card_width, card_height))
28
- img_bytes = BytesIO()
29
- img.save(img_bytes, format="PNG")
30
- img_data = img_bytes.getvalue()
31
- img_href = "data:image/png;base64," + img_data.hex()
32
- img = svgwrite.image.Image(href=img_href, size=(f"{card_width}px", f"{card_height}px"))
33
- dwg.add(img)
34
 
35
  # Add suit and value labels
36
  suit = svgwrite.text.Text(suit.upper(), insert=(5, 15), fill="black", font_size="16px", font_weight="bold")
@@ -43,7 +30,6 @@ def draw_card(background, suit, value, level, card_width, card_height):
43
  svg_string = dwg.tostring()
44
  return svg_string
45
 
46
-
47
  def display_parts_selection():
48
  selected_parts = {}
49
  for part, options in PARTS.items():
@@ -51,7 +37,7 @@ def display_parts_selection():
51
  return selected_parts
52
 
53
  def display_level_selection():
54
- selected_level = st.sidebar.selectbox("Select Level", list(LEVELS.keys()))
55
  return selected_level
56
 
57
  def display_size_selection(default_width, default_height):
@@ -77,8 +63,13 @@ def display_card(selected_parts, selected_level, card_width, card_height, backgr
77
  img.save(img_bytes, format="PNG")
78
  img_data = img_bytes.getvalue()
79
  img_href = "data:image/png;base64," + img_data.hex()
 
 
80
  background = img_href
81
- card_svg = draw_card(background, selected_parts["suit"], selected_parts["value"], selected_level, card_width, card_height)
 
 
 
82
  st.write(f'<svg viewBox="0 0 {card_width} {card_height}">{card_svg}</svg>', unsafe_allow_html=True)
83
 
84
  # Create a download link for the card SVG
@@ -86,16 +77,25 @@ def display_card(selected_parts, selected_level, card_width, card_height, backgr
86
  st.download_button("Download Card as SVG", svg_content, "card.svg", "text/plain")
87
 
88
  # Create button to level up card
89
- if selected_level != "level 3":
90
  if st.button("Level Up"):
91
- current_level_index = list(LEVELS.keys()).index(selected_level)
92
- new_level = list(LEVELS.keys())[current_level_index + 1]
93
  selected_level = new_level
94
  st.sidebar.warning(f"Card has been leveled up to {selected_level}")
95
 
96
-
97
  st.set_page_config(page_title="Card Evolution Game", page_icon=":hearts:")
98
 
 
 
 
 
 
 
 
 
 
 
99
  selected_parts = display_parts_selection()
100
  selected_level = display_level_selection()
101
  card_width, card_height = display_size_selection(DEFAULT_CARD_WIDTH, DEFAULT_CARD_HEIGHT)
 
4
  from io import BytesIO
5
  import os
6
 
7
+ st.set_page_config(page_title="Card Evolution Game", page_icon=":hearts:")
 
8
 
9
+ def get_default_card_size():
10
+ return 75, 100
11
+
12
+ def get_default_parts():
13
+ return {"background": "white", "suit": "clubs", "value": "1"}
14
 
15
+ def get_default_levels():
16
+ return ["level 1", "common"]
 
17
 
18
  def draw_card(background, suit, value, level, card_width, card_height):
 
19
  dwg = svgwrite.Drawing(size=(f"{card_width}px", f"{card_height}px"))
20
+ dwg.add(dwg.rect((0, 0), (card_width, card_height), rx=10, ry=10, fill=background, stroke="black", stroke_width=2))
 
 
 
 
 
 
 
 
 
 
 
 
21
 
22
  # Add suit and value labels
23
  suit = svgwrite.text.Text(suit.upper(), insert=(5, 15), fill="black", font_size="16px", font_weight="bold")
 
30
  svg_string = dwg.tostring()
31
  return svg_string
32
 
 
33
  def display_parts_selection():
34
  selected_parts = {}
35
  for part, options in PARTS.items():
 
37
  return selected_parts
38
 
39
  def display_level_selection():
40
+ selected_level = st.sidebar.selectbox("Select Level", LEVELS)
41
  return selected_level
42
 
43
  def display_size_selection(default_width, default_height):
 
63
  img.save(img_bytes, format="PNG")
64
  img_data = img_bytes.getvalue()
65
  img_href = "data:image/png;base64," + img_data.hex()
66
+ background_name = os.path.basename(background)
67
+ st.sidebar.markdown(f"**Background Image:** {background_name}")
68
  background = img_href
69
+ else:
70
+ st.sidebar.markdown(f"**Background Image:** {selected_parts['background'].capitalize()}")
71
+
72
+ card_svg = draw_card(selected_parts["background"], selected_parts["suit"], selected_parts["value"], selected_level, card_width, card_height)
73
  st.write(f'<svg viewBox="0 0 {card_width} {card_height}">{card_svg}</svg>', unsafe_allow_html=True)
74
 
75
  # Create a download link for the card SVG
 
77
  st.download_button("Download Card as SVG", svg_content, "card.svg", "text/plain")
78
 
79
  # Create button to level up card
80
+ if selected_level != LEVELS[-1]:
81
  if st.button("Level Up"):
82
+ current_level_index = LEVELS.index(selected_level)
83
+ new_level = LEVELS[current_level_index + 1]
84
  selected_level = new_level
85
  st.sidebar.warning(f"Card has been leveled up to {selected_level}")
86
 
 
87
  st.set_page_config(page_title="Card Evolution Game", page_icon=":hearts:")
88
 
89
+ DEFAULT_CARD_WIDTH, DEFAULT_CARD_HEIGHT = get_default_card_size()
90
+ DEFAULT_PARTS = get_default_parts()
91
+ DEFAULT_LEVELS = get_default_levels()
92
+
93
+ PARTS = {"background": ["white", "black", "red", "blue", "green", "yellow"],
94
+ "suit": ["clubs", "diamonds", "hearts", "spades"],
95
+ "value": ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"]}
96
+
97
+ LEVELS = ["level 1", "common", "uncommon", "rare", "epic", "legendary", "mythic", "godlike"]
98
+
99
  selected_parts = display_parts_selection()
100
  selected_level = display_level_selection()
101
  card_width, card_height = display_size_selection(DEFAULT_CARD_WIDTH, DEFAULT_CARD_HEIGHT)