Stundas uzdevums: Apvienot visas tēmas prasmes - Streamlit, session_state, ārējie API - pilnvērtīgā tīmekļa spēlē "Krustiņi un nullītes".
70 min darba sadalījums: 1. uzdevums (~20 min) - atjauno teorijas piemēru vai minimālo prototipu; 2. uzdevums (~25 min) - pielieto to galvenajā uzdevumā; 3. uzdevums (~25 min) - pārbaudi rezultātu, izlabo kļūdas un tikai beigās pieraksti vienu secinājumu. Papildus/4. līmeņa uzdevums ir paredzēts tikai tad, ja pamatdarbs ir pabeigts.
Pirms sāc: izmanto iepriekš apgūto un šīs lapas teorijas/koda piemērus. Ja vajadzīga jauna komanda vai rīks, vispirms atrodi tās paraugu teorijas sadaļā.
Tava noslēguma spēle ir "Krustiņi un nullītes" pārlūkā, kas izmanto Streamlit, lai abi spēlētāji uz viena datora var spēlēt pret otru (vai pret vienkāršu AI).
Funkcijas:
Failu struktūra:
krustini/
├── app.py # Streamlit galvenā lapa
├── spele.py # Spele klase ar loģiku
├── ai.py # AISpeletajs ar minimax
└── requirements.txt
Šis ir īss iesildīšanās uzdevums. Nokopē sagatavi, ielīmē to pareizajā koda vietā un palaid. Šeit pietiek droši izmēģināt tēmu 9.6 Noslēguma projekts: "Krustiņi un nullītes" pārlūkā; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
krustini/
├── app.py # Streamlit galvenā lapa
├── spele.py # Spele klase ar loģiku
├── ai.py # AISpeletajs ar minimax
└── requirements.txt
main.py failā un palaid no termināļa.Pievieno šīs stundas paņēmienu kā nelielu, strādājošu projekta daļu.
apstrada_gajienu(), rezultats vai routes.py.Pārbaudi, vai algoritms darbojas paredzami ar dažādiem datiem.
Ja pamatdarbs ir pabeigts, paplašini projektu ar vienu nelielu programmētu uzlabojumu.
game_id, spele, etc).import streamlit as st
class Spele:
UZVARES = [(0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6)]
def __init__(self):
self.laukums = ["" for _ in range(9)]
self.pasreizejais = "X"
def gajiens(self, p):
if self.laukums[p] or self.uzvaretajs(): return
self.laukums[p] = self.pasreizejais
self.pasreizejais = "O" if self.pasreizejais == "X" else "X"
def uzvaretajs(self):
for a,b,c in self.UZVARES:
if self.laukums[a] == self.laukums[b] == self.laukums[c] != "":
return self.laukums[a]
return "neizšķirts" if "" not in self.laukums else None
if "spele" not in st.session_state:
st.session_state.spele = Spele()
s = st.session_state.spele
for r in range(3):
cols = st.columns(3)
for c in range(3):
i = r*3 + c
cols[c].button(s.laukums[i] or " ", key=i, on_click=s.gajiens, args=(i,))
u = s.uzvaretajs()
if u: st.success(f"Uzvarētājs: {u}")
else: st.info(f"Gājiens: {s.pasreizejais}")
if st.button("↻ Jauna spēle"):
st.session_state.spele = Spele()
st.rerun()