The game updates the price and owned text at once but the affordable flag only at its next redraw, so a second purchase in the same visit used a stale flag. Buying at most one product per visit cut the failed purchases from about 40 percent to 1 of 49 and raised the CPS from 16.6 to 29 in the 300 second Docker run. README, screenshots and the wiki in en, da and ms show the new result. Task: MIL-006#1 Task: MIL-006#2 Task: MIL-006#3 Task: MIL-006#4 Task: MIL-006#5
29 lines
1.7 KiB
Markdown
29 lines
1.7 KiB
Markdown
# Trin 4: køb opgraderinger
|
|
|
|
🌐 [English](Step-4-Buy-Upgrades) · **Dansk** · [Bahasa Melayu](Step-4-Buy-Upgrades-ms)
|
|
|
|
`get_store_items` læser butikkens 20 produkter, `choose_upgrade` vælger det dyreste, botten har råd til, og `buy_upgrade` klikker på det. Skærmbilledet viser den første markør, der er købt.
|
|
|
|
**Skærmbillede**
|
|
|
|

|
|
|
|
**Funktion**
|
|
|
|
```python
|
|
def choose_upgrade(items: Sequence[StoreItem]) -> StoreItem | None:
|
|
affordable = [item for item in items if item.is_affordable]
|
|
if not affordable:
|
|
return None
|
|
return max(affordable, key=lambda item: (item.price, item.index))
|
|
```
|
|
|
|
## Hvad vi fik ud af det
|
|
|
|
- **Hold beslutningen ren.** `choose_upgrade` tager almindelige `StoreItem`-værdier og returnerer én, så den testes uden noget spil (lige priser, intet overkommeligt, tom liste).
|
|
- **Bekræft resultatet, antag det ikke.** `buy_upgrade` tjekker, at det ejede antal (`productOwned<N>`) steg. At tjekke antallet af cookies først var forkert: antallet stiger, mens botten klikker.
|
|
- **Siden halter bagefter.** Den første version tabte cirka 40 procent af sine køb: spillet opdaterer pris og ejet antal med det samme, men markeringen af, om der er råd, først ved næste gentegning, så et andet køb i samme besøg brugte en forældet markering. Højst ét produkt pr. butiksbesøg gav kun 1 fejl ud af 49.
|
|
- **Det rigtige spil finder det, falske ikke kan.** Genforsøget ved forældede elementer og tjekket af ejet antal kom begge fra kørsler i Docker.
|
|
|
|
Næste: [Trin 5: kørslen på fem minutter](Step-5-Five-Minute-Run-da)
|