Preamble
Hello everyone, in the past, my project was quite free, and QA had nothing to do so she sat and played Sudoku. Then I wondered if it was free anyway, why not write my own Sudoku app for me. This article will use Vue.js to build a simple Sudoku game.
I will introduce to you in the framework of the article the following:
- Perform game matrix with dynamic data
- Algorithm for creating matrices for games
- How to confirm the solution to the game
First step
First of all, create the following new files:
index.html
app.js
style.css
Add the index.html
file to the style.css
interface file, the app.js
JavaScript file, and, of course, the Vue.js
file, in a simple application I use Vue.js via the CDN:
1 2 3 4 5 6 7 8 | <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> head</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> https://unpkg.com/vue/dist/vue.js <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> link</span> <span class="token attr-name">href</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> style.css <span class="token punctuation">"</span></span> <span class="token attr-name">rel</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> stylesheet <span class="token punctuation">"</span></span> <span class="token punctuation">/></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> head</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> body</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"><</span> script</span> <span class="token attr-name">src</span> <span class="token attr-value"><span class="token punctuation">=</span> <span class="token punctuation">"</span> app.js <span class="token punctuation">"</span></span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> script</span> <span class="token punctuation">></span></span> <span class="token tag"><span class="token tag"><span class="token punctuation"></</span> body</span> <span class="token punctuation">></span></span> |
Our game will have the following draft interface:
As you can see, it will include some of the following:
- Difficulty level selection screen, to help players choose the level that suits them
- The main screen of the game has 2 buttons: New game (will exit the screen to select the difficulty level) and the Veriry button (will work to check if your game screen is correct or not)
- A basic 9×9 Sudoku with a few empty fields to fill out. Each cell is an
input type=”text”
We will add some things to make this game more interesting. If you lose or win, a GIF will appear to let you know that:
Matrix
Ok, you have initially figured out what our application will look like, let’s start the first step to build this game. The first thing you will need is a digital matrix that meets the following requirements:
- All horizontal rows have all numbers from 1-9 that do not overlap
- All vertical rows have all numbers 1-9 that do not overlap
- All 3×3 divided cells available with all numbers 1-9 do not overlap
Here I will use a shallow algorithm found on the net and modify a bit:
https://www.emanueleferonato.com/2015/06/23/pure-javascript-sudoku-generatorsolver/
This algorithm will initialize the original matrix of 9×9, which is 0, then fill in the numbers one by one and turn it out until it creates a complete matrix with the above requirements.
We will create an array of objects to store matrix information, our array will look like this:
1 2 3 4 5 6 7 8 9 10 11 12 | <span class="token keyword">var</span> defaultSudokuMatrix <span class="token operator">=</span> <span class="token punctuation">[</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">[</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token punctuation">{</span> object <span class="token punctuation">}</span> <span class="token punctuation">]</span> <span class="token punctuation">,</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> |
Each object will look like:
1 2 | <span class="token punctuation">{</span> num <span class="token punctuation">:</span> <span class="token number">5</span> <span class="token punctuation">,</span> readOnly <span class="token punctuation">:</span> <span class="token boolean">true</span> <span class="token punctuation">}</span> |
num
: used to save the value of the cellreadOnly
: used to mark cells that are genetically assigned by the system, so these cells cannot be edited, this attribute will be used inside html.
Besides, the reason we have to create an array of objects is because we are going to loop through this array in Vue.js with v-for
, and bind that number to the input="text"
via v-bind
, and Vue. do not want when we use the loop to bind, so we have to use through an object.
The next thing we need to do is we will remove some elements from the array to make a game screen – That is, we will remove some random object.num
elements.
As mentioned above, our game will include many levels from easy to extremely difficult, the simple way for me to create different levels of difficulty is: the higher the difficulty, the more removed elements will be. much.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <span class="token keyword">for</span> <span class="token punctuation">(</span> <span class="token keyword">var</span> i <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> i <span class="token operator"><</span> defaultSudokuMatrix <span class="token punctuation">.</span> length <span class="token punctuation">;</span> <span class="token operator">++</span> i <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> k <span class="token operator">=</span> <span class="token number">0</span> <span class="token punctuation">;</span> <span class="token keyword">while</span> <span class="token punctuation">(</span> k <span class="token operator"><</span> level <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">var</span> randomColumnIndex <span class="token operator">=</span> Math <span class="token punctuation">.</span> <span class="token function">floor</span> <span class="token punctuation">(</span> Math <span class="token punctuation">.</span> <span class="token function">random</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">*</span> defaultSudokuMatrix <span class="token punctuation">.</span> length <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> defaultSudokuMatrix <span class="token punctuation">[</span> i <span class="token punctuation">]</span> <span class="token punctuation">[</span> randomColumnIndex <span class="token punctuation">]</span> <span class="token punctuation">.</span> num <span class="token operator">!=</span> <span class="token string">""</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> k <span class="token operator">++</span> <span class="token punctuation">;</span> defaultSudokuMatrix <span class="token punctuation">[</span> i <span class="token punctuation">]</span> <span class="token punctuation">[</span> randomColumnIndex <span class="token punctuation">]</span> <span class="token punctuation">.</span> num <span class="token operator">=</span> <span class="token string">""</span> <span class="token punctuation">;</span> defaultSudokuMatrix <span class="token punctuation">[</span> i <span class="token punctuation">]</span> <span class="token punctuation">[</span> randomColumnIndex <span class="token punctuation">]</span> <span class="token punctuation">.</span> readOnly <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> sudokuMatrix <span class="token operator">=</span> defaultSudokuMatrix <span class="token punctuation">;</span> |
We will then have sudokuMatrix
is an array with removed elements, and will be used to bind to html.
Finally, we need a function to check if the game solved correctly. Simply compare the sudokuMatrix
with our original array created in the sudoku.js
file here, we set it to sudoku
:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | <span class="token keyword">var</span> result <span class="token operator">=</span> sudoku <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> x <span class="token punctuation">,</span> i <span class="token punctuation">)</span> <span class="token operator">=></span> sudoku <span class="token punctuation">[</span> i <span class="token punctuation">]</span> <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> y <span class="token operator">=></span> <span class="token function">parseInt</span> <span class="token punctuation">(</span> y <span class="token punctuation">.</span> num <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">var</span> maxtrixCheck <span class="token operator">=</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> sudokuMatrix <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> x <span class="token punctuation">,</span> i <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token keyword">this</span> <span class="token punctuation">.</span> sudokuMatrix <span class="token punctuation">[</span> i <span class="token punctuation">]</span> <span class="token punctuation">.</span> <span class="token function">map</span> <span class="token punctuation">(</span> y <span class="token operator">=></span> <span class="token function">parseInt</span> <span class="token punctuation">(</span> y <span class="token punctuation">.</span> num <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token constant">JSON</span> <span class="token punctuation">.</span> <span class="token function">stringify</span> <span class="token punctuation">(</span> result <span class="token punctuation">)</span> <span class="token operator">==</span> <span class="token constant">JSON</span> <span class="token punctuation">.</span> <span class="token function">stringify</span> <span class="token punctuation">(</span> maxtrixCheck <span class="token punctuation">)</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> answerImage <span class="token operator">=</span> <span class="token string">"success.gif"</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> showAnswer <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isGameStarted <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isNewGame <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token function">setTimeout</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> showAnswer <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isGameStarted <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isNewGame <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token number">2000</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token keyword">else</span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> answerImage <span class="token operator">=</span> <span class="token string">"fail.gif"</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> showAnswer <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isGameStarted <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isNewGame <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token function">setTimeout</span> <span class="token punctuation">(</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> showAnswer <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isGameStarted <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isNewGame <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> <span class="token number">2000</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> |
We then need to add a bit of extra functionality to complete the game, such as:
- Restart game:
1 2 3 4 5 6 | <span class="token function">restart</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isGameStarted <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> showAnswer <span class="token operator">=</span> <span class="token boolean">false</span> <span class="token punctuation">;</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> isNewGame <span class="token operator">=</span> <span class="token boolean">true</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> |
- When the user enters a valid cell, delete the old value and fill in the new value:
1 2 3 4 5 6 | <span class="token function">formatCell</span> <span class="token punctuation">(</span> row <span class="token punctuation">,</span> cell <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> sudokuMatrix <span class="token punctuation">[</span> row <span class="token punctuation">]</span> <span class="token punctuation">[</span> cell <span class="token punctuation">]</span> <span class="token punctuation">.</span> num <span class="token punctuation">.</span> length <span class="token operator">></span> <span class="token number">1</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> sudokuMatrix <span class="token punctuation">[</span> row <span class="token punctuation">]</span> <span class="token punctuation">[</span> cell <span class="token punctuation">]</span> <span class="token punctuation">.</span> num <span class="token operator">=</span> <span class="token keyword">this</span> <span class="token punctuation">.</span> sudokuMatrix <span class="token punctuation">[</span> row <span class="token punctuation">]</span> <span class="token punctuation">[</span> cell <span class="token punctuation">]</span> <span class="token punctuation">.</span> num <span class="token punctuation">[</span> <span class="token number">1</span> <span class="token punctuation">]</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> <span class="token punctuation">,</span> |
- Only allow users to enter numbers:
1 2 3 4 5 6 7 8 | <span class="token function">onlyNumber</span> <span class="token punctuation">(</span> $event <span class="token punctuation">)</span> <span class="token punctuation">{</span> <span class="token keyword">let</span> keyCode <span class="token operator">=</span> <span class="token punctuation">(</span> $event <span class="token punctuation">.</span> keyCode <span class="token operator">?</span> $event <span class="token punctuation">.</span> keyCode <span class="token punctuation">:</span> $event <span class="token punctuation">.</span> which <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token keyword">if</span> <span class="token punctuation">(</span> keyCode <span class="token operator"><</span> <span class="token number">48</span> <span class="token operator">||</span> keyCode <span class="token operator">></span> <span class="token number">57</span> <span class="token punctuation">)</span> <span class="token punctuation">{</span> $event <span class="token punctuation">.</span> <span class="token function">preventDefault</span> <span class="token punctuation">(</span> <span class="token punctuation">)</span> <span class="token punctuation">;</span> <span class="token punctuation">}</span> <span class="token punctuation">}</span> |
Our app.js will eventually include these:
HTML
Our grid will be an array of object, so we’ll show data with 2 nested v-for
:
row, indexRow) in sudokuMatrix
represents the rows of the Gridv-for="(cell, indexCell) in row
represents Grid cells- And finally, the
input type=”text”
contains the data to be bound
Hola, so we have finished.
You can view all your source code at this repo and play the complete game at http://sudokuuu.herokuapp.com/
summary
Above is a simple Sudoku game I made in my spare time to save the floods about Vue.js in addition to learn how to program in another field. In the main content of the article I introduce to you briefly through the flow of the code, if there are any questions, please comment below for your answers. .