Giter VIP home page Giter VIP logo

n-puzzle's Introduction

Number puzzle

Det här är ett nummerpussel som är byggt med React och för styling har jag använt module CSS.

Det tog ungefär 11 timmar att göra. Jag började med att rendera ut rader och kolumner enligt de angivna talen från puzzleConfig filen och jag valde att spara brickorna i en 2D array.

Jag hittade en bra slumpningsmetod som heter Fisher–Yates Shuffle. Vad den gör är att istället för att ta en slumpmässig bricka från en array och lägga till i en ny array, så loopar man igenom arrayen man redan har och väljer en slumpmässig bricka. Sedan byter man den valda brickan med en bricka längst bak i arrayen som inte redan har blivit flyttad längst bak. Dock, för att detta skulle fungera med min 2D array, behövde jag först platta till arrayen och sedan formatera om den igen till en 2D array efter slumpningen.

Det jag körde fast på ett tag var att flytta brickorna när man trycker på dem. När man trycker på en bricka börjar koden med att först kolla vilken rad och kolumn den tomma rutan är på, och med det kan man jämföra rad och kolumnindex mellan var man tryckte och den tomma rutan för att se om det går att flytta någon bricka. Om det går, så kollar man om man är före eller efter den tomma rutan för att veta åt vilket håll man ska flytta brickorna. Från början hade jag ett positionsnummer i brickans objekt som jag ändrade på och sedan sorterade raden med positionsnumret. Problemet var att det blev mycket rörig kod och väldigt svårt att göra för brickorna i en kolumn. Efter ett tag kom jag på en mycket bättre lösning som var lättare att förstå och innebar mindre kod. Jag gör helt enkelt liknande som vid slumpningen, jag byter plats på den tomma rutan och brickan som är bredvid den och fortsätter så tills jag har bytt med den sista brickan som är den användaren har tryckt på. Den här delen av koden är självklart den del jag tycker om mest :)

Installation

git clone https://github.com/WilliamDavidson-02/n-puzzle.git

cd n-puzzle

npm install

npm run dev

Bygg

npm run build

n-puzzle's People

Contributors

williamdavidson-02 avatar

Watchers

 avatar

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.