Stundas uzdevums: 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ā.
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 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).Š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 12.6 Noslēguma projekts: Daudzspēlētāju Krustiņi un nullītes; detalizētu izpratni veidosi nākamajos uzdevumos.
Kopējamais piemērs vai sagatave: izmanto šo bloku kā starta punktu, nevis kā gala risinājumu.
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def index():
return render_template("index.html", temats="12.6 Noslēguma projekts: Daudzspēlētāju Krustiņi un nullītes")
if __name__ == "__main__":
app.run(debug=True)
<h1>{{ temats }}</h1>
<p>Ja redzi šo tekstu pārlūkā, iesildīšanās piemērs darbojas.</p>
app.py, bet HTML daļu ievieto templates/index.html.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.
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()}")