Enha: difference between cards for mime and revealed for all
This commit is contained in:
		| @@ -1,11 +1,21 @@ | |||||||
| {{define "cardword"}} | {{define "cardword"}} | ||||||
| {{if .Revealed}} | {{if .Revealed}} | ||||||
|   {{if eq .Color "amber"}} |   {{if eq .Color "amber"}} | ||||||
|     <div id="card-{{.Word}}" class="bg-{{.Color}}-100 border border-gray-500 p-4 rounded-lg min-w-[100px] text-center text-white cursor-pointer"  |     <div id="card-{{.Word}}" class="bg-{{.Color}}-100 border-8 border-stine-400 p-4 min-w-[100px] text-center text-white cursor-pointer"  | ||||||
|          style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} |          style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||||
|     </div> |     </div> | ||||||
|   {{else}} |   {{else}} | ||||||
|     <div id="card-{{.Word}}" class="bg-{{.Color}}-400 border border-gray-500 p-4 rounded-lg min-w-[100px] text-center text-white cursor-pointer"  |     <div id="card-{{.Word}}" class="bg-{{.Color}}-400 border-8 border-stone-400 p-4 min-w-[100px] text-center text-white cursor-pointer"  | ||||||
|  |          style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||||
|  |     </div> | ||||||
|  |   {{end}} | ||||||
|  | {{else if .Mime}} | ||||||
|  |   {{if eq .Color "amber"}} | ||||||
|  |     <div id="card-{{.Word}}" class="bg-{{.Color}}-100 border border-stone-400 p-4 rounded-lg min-w-[100px] text-center text-white cursor-pointer"  | ||||||
|  |          style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||||
|  |     </div> | ||||||
|  |   {{else}} | ||||||
|  |     <div id="card-{{.Word}}" class="bg-{{.Color}}-400 border border-stone-400 p-4 rounded-lg min-w-[100px] text-center text-white cursor-pointer"  | ||||||
|          style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} |          style="text-shadow: 0 2px 4px rgba(0,0,0,0.9);"> {{.Word}} | ||||||
|     </div> |     </div> | ||||||
|   {{end}} |   {{end}} | ||||||
|   | |||||||
| @@ -84,8 +84,10 @@ func HandleJoinTeam(w http.ResponseWriter, r *http.Request) { | |||||||
| 		return | 		return | ||||||
| 	} | 	} | ||||||
| 	// reveal all cards | 	// reveal all cards | ||||||
| 	if role == "mime" { | 	if fi.State.Role == "mime" { | ||||||
| 		fi.Room.RevealAllCards() | 		fi.Room.MimeView() // there must be a better way | ||||||
|  | 	} else { | ||||||
|  | 		fi.Room.GuesserView() | ||||||
| 	} | 	} | ||||||
| 	// return html | 	// return html | ||||||
| 	tmpl, err := template.ParseGlob("components/*.html") | 	tmpl, err := template.ParseGlob("components/*.html") | ||||||
| @@ -163,7 +165,9 @@ func HandleStartGame(w http.ResponseWriter, r *http.Request) { | |||||||
| 	} | 	} | ||||||
| 	// reveal all cards | 	// reveal all cards | ||||||
| 	if fi.State.Role == "mime" { | 	if fi.State.Role == "mime" { | ||||||
| 		fi.Room.RevealAllCards() | 		fi.Room.MimeView() | ||||||
|  | 	} else { | ||||||
|  | 		fi.Room.GuesserView() | ||||||
| 	} | 	} | ||||||
| 	// return html | 	// return html | ||||||
| 	tmpl, err := template.ParseGlob("components/*.html") | 	tmpl, err := template.ParseGlob("components/*.html") | ||||||
|   | |||||||
| @@ -49,10 +49,11 @@ func HandleHome(w http.ResponseWriter, r *http.Request) { | |||||||
| 	} | 	} | ||||||
| 	fi, _ := getFullInfoByCtx(r.Context()) | 	fi, _ := getFullInfoByCtx(r.Context()) | ||||||
| 	if fi != nil && fi.Room != nil && fi.State != nil { | 	if fi != nil && fi.Room != nil && fi.State != nil { | ||||||
| 		if fi.State.Role == "mime" { |  | ||||||
| 			fi.Room.RevealAllCards() |  | ||||||
| 		} else { |  | ||||||
| 		fi.Room.UpdateCounter() | 		fi.Room.UpdateCounter() | ||||||
|  | 		if fi.State.Role == "mime" { | ||||||
|  | 			fi.Room.MimeView() // there must be a better way | ||||||
|  | 		} else { | ||||||
|  | 			fi.Room.GuesserView() | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	if fi != nil && fi.Room == nil { | 	if fi != nil && fi.Room == nil { | ||||||
|   | |||||||
| @@ -26,6 +26,7 @@ var ( | |||||||
| 	// TODO: simplify; bot gets confused; so show it only unrevealed cards and last clue (maybe older clues as well); | 	// TODO: simplify; bot gets confused; so show it only unrevealed cards and last clue (maybe older clues as well); | ||||||
| 	GuesserPrompt       = `we are playing alias;\nyou are to guess words of the %s team (you want open %s cards) by given clue and a number of meant guesses;\nplease return your guesses and words that could be meant by the clue, but you do not wish to open yet, in json like:\n{\n\"guesses\": [\"word1\", \"word2\", ...],\n\"could_be\": [\"this\", \"that\", ...]\n}\nthe team who openes all their cards first wins.\nplease return json only.\nunopen Blue cards left: %d;\nunopen Red cards left: %d;\nhere is the cards (and other info), you need to choose revealed==false words:\n%s` | 	GuesserPrompt       = `we are playing alias;\nyou are to guess words of the %s team (you want open %s cards) by given clue and a number of meant guesses;\nplease return your guesses and words that could be meant by the clue, but you do not wish to open yet, in json like:\n{\n\"guesses\": [\"word1\", \"word2\", ...],\n\"could_be\": [\"this\", \"that\", ...]\n}\nthe team who openes all their cards first wins.\nplease return json only.\nunopen Blue cards left: %d;\nunopen Red cards left: %d;\nhere is the cards (and other info), you need to choose revealed==false words:\n%s` | ||||||
| 	GuesserSimplePrompt = `we are playing game of alias;\n you were given a clue: \"%s\";\nplease return your guess and words that could be meant by the clue, but you do not wish to open yet, in json like:\n{\n\"guess\": \"most_relevant_word_to_the_clue\",\n\"could_be\": [\"this\", \"that\", ...]\n}\nhere is the words that left:\n%v` | 	GuesserSimplePrompt = `we are playing game of alias;\n you were given a clue: \"%s\";\nplease return your guess and words that could be meant by the clue, but you do not wish to open yet, in json like:\n{\n\"guess\": \"most_relevant_word_to_the_clue\",\n\"could_be\": [\"this\", \"that\", ...]\n}\nhere is the words that left:\n%v` | ||||||
|  | 	MimeSimplePrompt    = `we are playing alias;\nyou are to give a clue to your team so they could open these words: %v;\nhere are the words of opposite team you should avoid: %v;\nand here is a black word that is critical not to pick: %s;\nplease return your clue, number of cards to open and what words you mean them to find using that clue in json like:\n{\n\"clue\": \"one-word-noun\",\n\"number\": \"number-from-0-to-9\",\n\"words_I_mean_my_team_to_open\": [\"this\", \"that\", ...]\n}\nplease return json only.\nunopen Blue cards left: %d;\nunopen Red cards left: %d;` | ||||||
| ) | ) | ||||||
|  |  | ||||||
| func convertToSliceOfStrings(value any) ([]string, error) { | func convertToSliceOfStrings(value any) ([]string, error) { | ||||||
| @@ -177,7 +178,6 @@ func (b *Bot) BotMove() { | |||||||
| 	// form prompt | 	// form prompt | ||||||
| 	prompt := b.BuildPrompt(room) | 	prompt := b.BuildPrompt(room) | ||||||
| 	b.log.Debug("got prompt", "prompt", prompt) | 	b.log.Debug("got prompt", "prompt", prompt) | ||||||
| 	room.LogJournal = append(room.LogJournal, b.BotName+" got prompt: "+prompt) |  | ||||||
| 	// call llm | 	// call llm | ||||||
| 	llmResp, err := b.CallLLM(prompt) | 	llmResp, err := b.CallLLM(prompt) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| @@ -207,6 +207,8 @@ func (b *Bot) BotMove() { | |||||||
| 		} | 		} | ||||||
| 		room.ActionHistory = append(room.ActionHistory, action) | 		room.ActionHistory = append(room.ActionHistory, action) | ||||||
| 		room.MimeDone = true | 		room.MimeDone = true | ||||||
|  | 		meant := fmt.Sprintf(b.BotName+" meant to open: %v", tempMap["words_I_mean_my_team_to_open"]) | ||||||
|  | 		room.LogJournal = append(room.LogJournal, meant) | ||||||
| 		eventPayload = mimeResp.Clue + mimeResp.Number | 		eventPayload = mimeResp.Clue + mimeResp.Number | ||||||
| 		guessLimitU64, err := strconv.ParseUint(mimeResp.Number, 10, 8) | 		guessLimitU64, err := strconv.ParseUint(mimeResp.Number, 10, 8) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
|   | |||||||
| @@ -287,6 +287,18 @@ func (r *Room) RevealAllCards() { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
|  | func (r *Room) MimeView() { | ||||||
|  | 	for i := range r.Cards { | ||||||
|  | 		r.Cards[i].Mime = true | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
|  | func (r *Room) GuesserView() { | ||||||
|  | 	for i := range r.Cards { | ||||||
|  | 		r.Cards[i].Mime = false | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  |  | ||||||
| func (r *Room) RevealSpecificWord(word string) { | func (r *Room) RevealSpecificWord(word string) { | ||||||
| 	for i, card := range r.Cards { | 	for i, card := range r.Cards { | ||||||
| 		if card.Word == word { | 		if card.Word == word { | ||||||
| @@ -299,6 +311,7 @@ type WordCard struct { | |||||||
| 	Word     string     `json:"word"` | 	Word     string     `json:"word"` | ||||||
| 	Color    WordColor  `json:"color"` | 	Color    WordColor  `json:"color"` | ||||||
| 	Revealed bool       `json:"revealed"` | 	Revealed bool       `json:"revealed"` | ||||||
|  | 	Mime     bool       `json:"mime"` // user who sees that card is mime | ||||||
| 	Mark     []CardMark `json:"marks"` | 	Mark     []CardMark `json:"marks"` | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
							
								
								
									
										5
									
								
								todos.md
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								todos.md
									
									
									
									
									
								
							| @@ -24,7 +24,9 @@ | |||||||
| - clear indication that model (llm) is thinking / answered; | - clear indication that model (llm) is thinking / answered; | ||||||
| - different files for each supported lang; | - different files for each supported lang; | ||||||
| - possibly turn markings into parts of names of users (first three letters?); | - possibly turn markings into parts of names of users (first three letters?); | ||||||
| - sse div to bot thinking | - sse div to bot thinking; | ||||||
|  | - simplify mime prompt; | ||||||
|  | - redo card .revealed use: it should mean that card is revealed for everybody, while mime should be able to see cards as is; | ||||||
|  |  | ||||||
| #### sse points | #### sse points | ||||||
| - clue sse update; | - clue sse update; | ||||||
| @@ -57,3 +59,4 @@ | |||||||
| - invite link gets cutoff; | - invite link gets cutoff; | ||||||
| - when llm guesses the word it is not removed from a pool of words making it keep guessing it; | - when llm guesses the word it is not removed from a pool of words making it keep guessing it; | ||||||
| - bot team does not loses their turn after white card (or limit); | - bot team does not loses their turn after white card (or limit); | ||||||
|  | - name check does not work; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Grail Finder
					Grail Finder