Git Product home page Git Product logo

cloudperry / ultimate-tic-tac-toe Goto Github PK

View Code? Open in Web Editor NEW
1.0 1.0 0.0 226 KB

Kahdestaan pelattava Ultimate Tic-tac-toe. Ultimate Tic-tac-toe on versio ristinollasta, jossa pelilauta koostuu 3x3 ruudukosta ristinollan pelilautoja, ja edellisen pelaajan siirto määrää seuraavan siirron sallitut ruudut. Tarkempi kuvaus sovelluksen ominaisuuksista readme:ssä.

Python 62.76% HTML 34.59% Procfile 0.08% CSS 2.56%

ultimate-tic-tac-toe's Introduction

Ultimate Tic-tac-toe

Kahdestaan pelattava Ultimate Tic-tac-toe. Ultimate Tic-tac-toe on versio ristinollasta, jossa pelilauta on 9x9 ja edellisen pelaajan siirto määrää seuraavan siirron sallitut ruudut.

Sovelluksessa olevat ominaisuudet:

  1. Etusivu kertoo pelin säännöt ja sisältää kaikki olennaiset linkit sovelluksen eri sivuille.
  2. Etusivu sisältää dataa tämänhetkisestä pelaajamäärästä tai aktiivisten pelien määrästä tms.
  3. Käyttäjä voi kirjautua sisään ja ulos sekä luoda uuden tunnuksen.
  4. Käyttäjä voi lisätä muita käyttäjiä kaverikseen.
  5. Käyttäjä voi luoda uuden julkisen tai listalta piilotetun peliaulan.
  6. Käyttäjä voi liittyä muiden luomiin peleihin.
  7. Aulan luoja voi poistaa käyttäjän aulasta.
  8. Aulan omistaja voi luoda peliin liittymistä varten linkin.
  9. Aulassa pelaajat voivat lähettää viestejä.
  10. Pelatessa pelaajalle näytetään kyseisen vuoron sallitut ruudut
  11. Pelaaja voi sijoittaa ristin/nollan mihin tahansa sallituista ruuduista.
  12. Pelilauta päivittyy, kun vastustaja sijoittaa oman ristin/nollan.
  13. Pelaajalle ilmoitetaan voitosta tai häviöstä.
  14. Käyttäjä voi katsoa omasta pelihistoriasta, kuinka paljon pelejä on voittanut ja hävinnyt.
  15. Käyttäjä voi vaihtaa oman salasanan.
  16. Käyttäjä voi asettaa oman profiilin näkyvyyden muille käyttäjille.

Sovellus on testattavissa Herokussa (toimii huonosti) ja Omalla palvelimella (toimii hyvin, mutta saattaa hidastella, koska tietokanta on SD kortilla). En jaksanut laittaa omalle palvelimelle SSL certtejä Let's Encryptiltä, joten oman palvelimen versio toimii vain http:n yli.

Sovelluksen tila 8.10.2022 (9.10.2022): Siirsin sovelluksen Heroku palvelimen Eurooppaan ja samalla urlia oli pakko muuttaa. Sovelluksessa on kaikki yllä mainituista ominaisuuksista, mutta käytännössä 14 on hyödytön, koska muiden profiileja ei ole vielä mahdollista katsoa. Sovelluksen koodin laatu ei ole erityisen hyvä (lähinnä pidän sovellusta turhan isona, ja siinä on päällekkäistä koodia). Pahimmat tietoturvaongelmat pitäisi olla korjattu. Sovelluksessa voi monissa paikoissa lähettää käsin pyyntöjä, joita käyttöliittymän lomakkeet tarkoituksella eivät salli. Näin olisi ehkä mahdollista esim. poistaa aula, jota ei omista. Kaverilista olisi hyvä olla automaattisesti päivittyvä, mutta en vielä ehtinyt lisäämään sitä. Sovelluksen automaattisesti päivittyvät sivut (lista peliauloista, peliaulan asetukset, itse peli) on tehty käyttäen server-sent eventtejä flask-sse kirjastolla. Alunperin sovelluksen pelinäkymän oli tarkoitus olla graafinen käyttöliittymä, jossa pelimerkkejä sijoitetaan painamalla haluttua ruutua. Siihen ei kuitenkaan jäänyt tarpeeksi aikaa. Huomasin 9.10. että Herokussa on kummallisia ongelmia, joita ei millään pysty toistamaan omalla koneella, joten päätin tehdä Raspberry Pi:lle toisen testipalvelimen. Saatan uudelleenkäynnistää sen vielä tänään, koska toistaiseksi se on vain käynnistettynä SSH:n yli eikä mitenkään järkevästi.

Suunnitellut ominaisuudet:

  1. Käyttäjä voi katsella toisen käyttäjän profiilia, jos sen näkyvyys on julkinen.
  2. Aulan voi asettaa näkyväksi vain kavereille (on jo sovelluksessa, mutta filtteröinti ei ole toteutettu).
  3. Kaverin voi kutsua peliin kaverilistalta, ja kaveri saa kutsusta ilmoituksen.
  4. Lisää tilastoja.
  5. Paremman näköinen käyttöliittymä.
  6. Automaattisesti päivittyvä kaverilista.

ultimate-tic-tac-toe's People

Contributors

cloudperry avatar

Stargazers

 avatar

Watchers

 avatar

ultimate-tic-tac-toe's Issues

Tsoha vertaisarviointi välipalautus 3

Readme päivityksen perusteella monet sovelluksen keskeiset toiminnot eivät ole vielä saatavilla, joten keskityn palautteessa lähinnä asioihin mitä huomasin sovellusta testatessani ja koodia selaillessa. Aihe vaikuttaa kiinnostavalta ja haastavalta, tsemppiä puuttuvien toimintojen lisäämiseen!

Ulkoasu

Ymmärrän, että keskeiset perustoiminnot on hyvä saada toimimaan ennen kuin käyttää liikaa aikaa ulkoasun hiontaan, mutta kun perusvaativuudet on saatu toimintaan, suosittelen suunnittelemaan ja lisäämään layout.html tiedoston Jinjan avulla, mikä määrittelee ulkoasuun liittyvät perus elementit jokaiselle sivulle. Nav elementin avulla on hyvä tuoda etusivun valikko jokaiselle sivulle, tällä hetkellä ainoa tapa liikkua takaisin etusivulle on palata manuaalisesti, mikä ei ole kovin käyttäjä ystävällistä. Suosittelen myös lisäämään CSS:n avulla grid näkymän, mikä mahdollistaa tyylikkäämmän muotoilun sivuille, ja sopisi mahdollisesti tulevaan peli näkymään, viemällä chatin peli alueen oikealle puolelle.

Koodi

Tämän hetkinen koodi vaikuttaa hyvältä, lisäisin CSFR-varmistukset lomakkeiden lähetystä varten.

Tietokanta

Tietokantaa käytetään monipuolisesti, ja taulu määrä on riittävä. Henkilökohtaisesti pitäisin kaveripyynnöt ja kaverit eri tauluissa, mutta ratkaisusi vaikuttaa myös toimivalta, nyt ei ole tosin vaihtoehtoa kieltäytyä kaveripyynnöstä, minkä toteutus on ehkä helpompaa, kun kaveripyynnöt ovat eri tauluissa. Kyselyt ovat muuten hyviä, mutta tämän funktion kysely: "SELECT * FROM game_stats WHERE winner_id=:id OR loser_id=:id ORDER BY played_on", menee hieman kurssiohjeita vastaan, sillä ei tarkenneta mitä rivejä halutaan saada kyselystä.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.