Tavs šīs stundas izaicinājums: Apvienot visu kursā apgūto, lai izveidotu pilnvērtīgu daudzspēlētāju "Krustiņi un nullītes" spēli, kas pieejama publiski internetā.
Tava noslēguma spēle ir daudzspēlētāju "Krustiņi un nullītes", kurā divi spēlētāji no atšķirīgiem datoriem var spēlēt vienu un to pašu partiju reālā laikā.
Tehnoloģijas (viss kurss vienā):
Spele, Speletajs, Gajiens.Galvenās funkcijas:
ABC123).Izveido pilnu Flask serveri.
speles (id, kods, laukums TEXT, pasreizejais TEXT, status TEXT, izveidots TIMESTAMP) un uzvaras (id, vards, koda).Spele: __init__(kods) izveido tukšu 9-pozīciju virkni, gajiens(poz, simbols), uzvaretajs() pārbauda 8 uzvaras kombinācijas.POST /api/spele izveido jaunu, atgriež kodu; GET /api/spele/<kods> stāvokli; POST /api/spele/<kods>/gajiens izpilda gājienu.app.py, models.py, schema.sql.Izveido pielāgojamu lietotāja saskarni.
static/index.html: 2 ekrāni — sākuma ("Izveidot" / "Pievienoties") un spēles (3×3 režģis + statuss).static/style.css: 3×3 grid CSS, hover efekti, atšķirīgas krāsas X un O.static/spele.js: fetch() izsaukumi, polling ik 2 sek. ar setInterval(), klikšķu apstrāde.Publicē projektu un veic gala uzlabojumus.
requirements.txt, Procfile, .env.example./uzvaras).DELETE spēles, kas vecākas par 1 stundu).README.md ar: kā spēlēt, tehnoloģijas, palaišana lokāli, public URL.AUDIT.md ar projekta retrospektīvu — kas izdevās, kas nē, ko mācīsi citiem.Pievieno minimax algoritmu, lai cilvēks varētu spēlēt pret datoru.
minimax(laukums, dziluma, ir_X) klasi AISpeletajs.class Spele:
"""Krustiņi un nullītes spēles loģika."""
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, laukums="---------", pasreizejais="X"):
self.laukums = list(laukums)
self.pasreizejais = pasreizejais
def gajiens(self, poz, simbols):
if self.laukums[poz] != "-": raise ValueError("Aizņemta pozīcija")
if simbols != self.pasreizejais: raise ValueError("Nav tavs gājiens")
self.laukums[poz] = simbols
self.pasreizejais = "O" if simbols == "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]
if "-" not in self.laukums: return "neizšķirts"
return None
# Lietošana
s = Spele()
s.gajiens(0, "X"); s.gajiens(4, "O"); s.gajiens(1, "X"); s.gajiens(5, "O"); s.gajiens(2, "X")
print(f"Uzvarētājs: {s.uzvaretajs()}")