|
- from memory_Context import *
- from llm import *
-
- # Detect mismatched items
- #
- # Conditions:
- # 0. Two items has just been selected
- # 1. The same item has been selected twice
- # 2. Selected items are of different groups
- @llm_by_value
- def memory_detectMismatchedItems(
- c: memory_Context
- ) -> memory_Context:
- if not (
- c.recentField == "selectedItems" and
- len(c.selectedItems) == 2
- ):
- c.recentField = "none"
- return c
- #}
- if (
- c.selectedItems[0] == c.selectedItems[1]
- ):
- c.mismatchedItems.clear()
- c.mismatchedItems.append(c.selectedItems[0])
- c.recentField = "mismatchedItems"
- return c
- #}
- if (
- c.playfieldItems[c.selectedItems[0]] != c.playfieldItems[c.selectedItems[1]]
- ):
- c.mismatchedItems.clear()
- c.mismatchedItems.append(c.selectedItems[0])
- c.mismatchedItems.append(c.selectedItems[1])
- c.recentField = "mismatchedItems"
- return c
- #}
- c.recentField = "none"
- return c
- #}
-
- # Detect victory
- #
- # Conditions:
- # 1. Matching items have just been hidden and all items are hidden now
- @llm_by_value
- def memory_detectVictory(
- c: memory_Context
- ) -> memory_Context:
- if (
- c.recentField == "hiddenItems" and
- len(c.hiddenItems) == len(c.playfieldItems)
- ):
- c.victory = True
- c.recentField = "victory"
- return c
- #}
- c.recentField = "none"
- return c
- #}
-
- # Generate constant playfield
- #
- # Conditions:
- # 1. Size has just been specified
- #
- # Both ids and group ids start with 0
- @llm_by_value
- def memory_generateConstPlayfield(
- c: memory_Context
- ) -> memory_Context:
- if not (
- c.recentField == "playfieldSize"
- ):
- c.recentField = "none"
- return c
- #}
-
- idGroups: dict[int, int] = { }
- id = 0
- for gid in range(0, c.playfieldSize):
- idGroups[id] = gid
- id += 1
- idGroups[id] = gid
- id += 1
- #}
- c.playfieldItems = idGroups
- c.recentField = "playfieldItems"
- return c
- #}
-
- # Hide matching selected items
- #
- # Conditions:
- # 1. Two items are selected and they are of the same group
- @llm_by_value
- def memory_hideMatchingItems(
- c: memory_Context
- ) -> memory_Context:
- if (
- c.recentField == "selectedItems" and
- len(c.selectedItems) == 2 and
- c.playfieldItems[c.selectedItems[0]] == c.playfieldItems[c.selectedItems[1]]
- ):
- c.hiddenItems.append(c.selectedItems[0])
- c.hiddenItems.append(c.selectedItems[1])
- c.recentField = "hiddenItems"
- return c
- #}
- c.recentField = "none"
- return c
- #}
-
- # Select item
- #
- # Conditions:
- # 1. Id has just been specified for selection
- @llm_by_value
- def memory_selectItem(
- c: memory_Context
- ) -> memory_Context:
- if not (
- c.recentField == "selectedId"
- ):
- c.recentField = "none"
- return c
- #}
-
- if (
- len(c.selectedItems) == 2
- ):
- c.selectedItems.clear()
- #}
- c.selectedItems.append(c.selectedId)
- c.recentField = "selectedItems"
- return c
- #}
|