Welkom bij mijn versie van het klassieke Tic Tac Toe spel! Ik heb een Tic Tac Toe spel gemaakt met React en SCSS, en het in ongeveer 6 uur voltooid. Het spel heeft een single-player modus tegen de computer, een popup voor het aankondigen van de winnaar, en win tellers voor beide spelers. Terwijl het speelveld aanpasbaar is naar n x n
, ondersteunt de huidige winnende logica alleen 3 x 3
. Toekomstige verbeteringen omvatten slimmere zetten van de computer en real-time multiplayer functionaliteit.
Overzicht
- Totaal benodigde ontwikkelingstijd: ~6 uur
- Gebruikte technologieën: JavaScript (React) + SCSS
Spelregels
1. Doel
Het doel van het spel is om drie van jouw symbolen (X of O) in een horizontale, verticale of diagonale rij op een 3 x 3
speelveld uit te lijnen.
2. Beurtvolgorde
- Speler A begint altijd en speelt als X.
- De computer tegenstander speelt als O en maakt zijn zet onmiddellijk na Speler A.
3. Gameplay
- Spelers om beurten markeren lege cellen op het speelveld.
- De eerste speler die drie symbolen uitlijnt wint het spel.
4. Winnende voorwaarden
Een speler wint als ze bereiken:
- Drie symbolen in een horizontale rij
- Drie symbolen in een verticale kolom, of
- Drie symbolen in een diagonale lijn
5. Teken
Als alle cellen zijn ingevuld en geen speler aan de winnende voorwaarden voldoet, eindigt het spel in een gelijkspel.
6. Score bijhouden
Win-tellers houden het totale aantal overwinningen bij voor zowel Speler A als de computer.
Geïmplementeerde functies (MVP)
Dit is wat er in deze versie van het spel is opgenomen:
- Speel tegen de computer: Een leuke single-player modus waarin je het tegen de computer opneemt
- Winnaar aankondiging popup: Aan het einde van elk spel onthult een popup de winnaar.
- Win-tellers: Houd het totale aantal overwinningen bij voor zowel de speler als de computer.
- Aanpasbaar raster: Maak een
n x n
raster (hoewel de winnende logica momenteel alleen3 x 3
ondersteunt).
Mogelijke verbeteringen
Als we vooruitkijken, zijn hier een paar gebieden voor verbetering:
- [UX] Lokale opslag voor scores: Bewaar spelscores lokaal zodat ze blijven bestaan na het vernieuwen van de browser.
- [UX/Tech] Slimmere computermoves: Vervang willekeurige zetten door een algoritme voor een competitievere gameplay.
- [UX] Real-time multiplayer: Sta twee spelers in staat om in real-time te concurreren met behulp van technologieën zoals Socket.io.
- [Tech] Geavanceerde SCSS organisatie: Refactor SCSS met behulp van mixins, variabelen en betere structuurtechnieken.
- [UX/Tech] Graceful degradation: Zorg voor compatibiliteit met niet-moderne browsers voor bredere ondersteuning.
Setup en Ontwikkeling
Vereisten
Voordat je begint, zorg ervoor dat je Node.js hebt geïnstalleerd (aanbevolen versie: 6.4.1
).
Aan de Slag
-
Clone de repository van GitHub.
2. Installeer afhankelijkheden:
npm install
3. Start de ontwikkelingsserver:
npm start
- Open http://localhost:3000 in je browser om de app te bekijken.
4. (Optioneel) Bouw het project voor productie:
npm run build
Dit creëert een geoptimaliseerde build
map, klaar voor implementatie.
Testen
Voer tests uit in interactieve kijkmodus met:
npm test
Technische Details
Bestandsstructuur
Het project volgt de standaard Create React App structuur met een modulaire component-gebaseerde aanpak.
src
├── index.js
├── App.css
├── App.js
├── Components
│ └── Board
│ ├── Board.scss
│ ├── Cross.jsx
│ ├── ScoreBoard.jsx
│ ├── index.jsx
│ ├── Round.jsx
│ └── Footer
│ ├── Footer.scss
│ ├── index.jsx
│ └── Header
│ ├── Header.scss
│ ├── index.jsx
├── utils
│ └── lib.js
public
├── index.html
Beschrijving en Aanpak
- De app is opgestart met Create React App voor een snelle MVP setup.
- Het spel initialiseert een
n x n
raster voor gameplay. - Elke cel heeft een click event listener, waardoor Speler A (X) de eerste zet kan doen.
- De beurt van de computer wordt gesimuleerd met een logica voor willekeurige celselectie, die moet worden verbeterd voor aangepaste rasterformaten.
- Gebruikte SCSS voor styling met een focus op snelheid boven complexiteit tijdens de ontwikkeling.
Testaanpak
Handmatige Tests
- Zorg ervoor dat de computer een zet doet nadat Speler A klaar is.
- Verifieer dat het spel eindigt met een winnaar aankondigingsbanner.
- Test geautomatiseerde zetten door de computer.
Potentiële Eenheidstests
- Controleer of de computer zich verplaatst na Speler A.
- Valideer dat het spel de juiste winnaar toont.
- Test randgevallen voor rasterinitialisatie en gebruikersinteracties.
Conclusie
Bedankt voor het verkennen van mijn project!
Je kunt de complete broncode vinden en bijdragen aan dit project op GitHub. Laten we samen coole dingen bouwen!
Source:
https://dzone.com/articles/building-a-tic-tac-toe-game-using-react