Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Memory pair game from LuckyDnepr #395

Closed
wants to merge 8 commits into from
Closed

Memory pair game from LuckyDnepr #395

wants to merge 8 commits into from

Conversation

LuckyDnepr
Copy link
Contributor

Memory Pair Game

Demo |
Code base

The code is submitted in a dedicated feature branch.

Only code files are submitted.

Please, review.

@stale
Copy link

stale bot commented Sep 16, 2022

This issue has been automatically marked as stale because there were no activity during last 14 days. It will be closed in 7 days if no further activity occurs. Thank you for your contributions.

А. Чому так?
Найбільш розповсюджена причина: Студент не реагує на коментарі змінами коду і не задає запитань через брак часу або зміну життєвих пріоритетів. Покинуті піари відволікають менторів. Коли у студента з'явиться час, він/вона зможе перевідкрити той самий піар і продовжити роботу.

Б. Що робити, якщо в піарі нема оновлень, оскільки не зрозуміло, що треба зробити?
Варіант 1. Задати питання в самому PR.
Варіант 2. Задати питання в студентському чаті.

В. А якщо я все зробив(ла) і це ментор не рев'юває мої зміни?

  1. Переконайся, що ти відреагував(ла) на всі коментарі або кодом, або запитаннями, або відповідями. Напиши в PR і в чаті, що чесно вважаєш, що все зроблено і попроси повторне рев'ю. Якщо щось не зрозуміло, задай запитання.
  2. Реагуй на коментарі як менторів, так і інших учасників, включаючи ботів.
  3. Не ігноруй прохання типу * "Let's do some self-checks ..." * "Go through the checklist below..." * "mark fulfilled requirements..." * "if you would silently ignore this recommendation, a mentor may think that you are still working on fixes"
    навіть якщо вони написані ботом. Боти помічники і ментори покладаються на те, що прохання і пропозиції бота дотримуються.
    Не лінись піти по лінках в коментарях, погуглити термінологію та скористатись Google Translate.
  4. Можливо, у менторів склалися інші пріоритети через роботу, сімейні обставини і т.п. В такому разі, якщо ти зробив(ла) рекомендоване вище, то волай в чаті, що PR позначений stale, наче, все зроблено, а ментори чомусь не реагують - рятуйте!

Г. Хіба недостатньо того, що я додав(ла) коміт із змінами?
Часто буває так, що бачиш новий коміт, ідеш перевіряти, змін багато, доводиться перечитувати весь код. А потім з'ясовується, що одна невеличка зміна "відкладена на потім" чи з'являється ще один коміт і знов треба перечитувати все. Любіть нас, спілкуйтеся з нами - і ми відповімо повною взаємністю.

Традиційна пропозиція: задай питання по вищенаписаному в студентському чаті.

@stale stale bot added the 💤 Stale label Sep 16, 2022
@LuckyDnepr
Copy link
Contributor Author

PR marked as "stale", but there is no review.
Please, review my work.

@LuckyDnepr
Copy link
Contributor Author

UAT done before create PR. Please review.

@OleksiyRudenko OleksiyRudenko added the UAT-done Student confirmed User Acceptance Tests are done and collected feedback is processed label Oct 5, 2022
Copy link
Collaborator

@A-Ostrovnyy A-Ostrovnyy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good work!
Please add files with markup, data, and styles.

const gameField = doc.querySelector(".game_field");
switch (numberOfCards) {
case 6:
gameField.setAttribute("style", "--cols: 3; --rows: 2");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid inline styles, use CSS classes instead.

}

function checkPair() {
if (openedCards.length % 2 == 0) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
if (openedCards.length % 2 == 0) {
if (openedCards.length === 2) {

Your array.length never will be greater than 2

@A-Ostrovnyy A-Ostrovnyy self-assigned this Oct 15, 2022
@LuckyDnepr
Copy link
Contributor Author

Thanks for review!

When I look at code from months ago, I want to rewrite everything with new methods, new knowledge.

I think this is okay.

Result:

  • I have implemented all the changes you specified.
  • I also found a few mistakes of my own due to inexperience.

Copy link
Collaborator

@A-Ostrovnyy A-Ostrovnyy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good progress!

<div class="fader hide"></div>
<div class="wrapper">
<header class="header hide">
<!-- hide -->
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

?

</div>
<div class="nav_menu themes"></div>
<div class="theme_image">
<img src="" alt="" class="theme_image_img" />
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Set some default value or generate dynamically this block.

</div>
<div class="game_field"></div>
<div class="modal hide">
<h1 class="win_text">You win!</h1>
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

From SEO perspective you will have a problem with two h1 headings on one page. try to use one h1 heading per page.

}

async function readThemes(path) {
try {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔥

Comment on lines 10 to 11
const response = await fetch(path);
themesData = await response.json();
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You should handle fetch response status - https://www.tjvantoll.com/2015/09/13/fetch-and-errors/

}

.title {
text-shadow: 3px 3px 5px steelblue;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid named colors in CSS, use hex, rgb(a), or hsl color scheme

width: 100vw;
position: absolute;
background-color: rgba(0, 0, 0, 0.733);
z-index: 1000;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid such a big numbers for z-index

width: 0;
}

.nav_menu label {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid styling by HTML tags except you add base styles. Reason

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why did I use tag-based styling if I added classes to all these elements? The question is more for me. Practice. More practice.

});
}

function generateCardsSet(sizeOfSet, highestNumber) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
function generateCardsSet(sizeOfSet, highestNumber) {
function generateCardsSet(sizeOfSet, count) {
Suggested change
function generateCardsSet(sizeOfSet, highestNumber) {
function generateCardsSet(sizeOfSet, quantity) {
Suggested change
function generateCardsSet(sizeOfSet, highestNumber) {
function generateCardsSet(sizeOfSet, size) {

Comment on lines 112 to 121
let mixedSetOfPairs = [],
setOfPairs = [];
for (let i = 0; i < sizeOfSet / 2; i++) {
const randomNumber = Math.floor(Math.random() * highestNumber);
if (!setOfPairs.includes(randomNumber)) {
setOfPairs.push(randomNumber, randomNumber);
} else {
i--;
}
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As for me you should take a copy of the array with images shuffle it and take first sizeOfSet / 2 elements and then work with this copy. What do you think about that?

Copy link
Contributor Author

@LuckyDnepr LuckyDnepr Oct 16, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps.

If I take the first sizeOfSet/2 elements, and then work with them.
I have to somehow get an array of sizeOfSet, in which the indexes of two cards are randomly distributed throughout the sizeOfSet. Again I'll have to shuffle everything.
If I simply glue the two shuffled sizeOfSet/2 element arrays together, I get card[i] === card[sizeOfSet/2 + i], which is too simple gameplay-wise.
I spent a lot of time thinking about randomizing the set of cards, and came to the conclusion that there's no right way to do it. I can generate a jumbled array of 2n cards in different ways.

LuckyDnepr added a commit to LuckyDnepr-LearningStage/Memory-game that referenced this pull request Oct 16, 2022
LuckyDnepr added a commit to LuckyDnepr-LearningStage/Memory-game that referenced this pull request Oct 16, 2022
LuckyDnepr added a commit to LuckyDnepr-LearningStage/Memory-game that referenced this pull request Oct 16, 2022
LuckyDnepr added a commit to LuckyDnepr-LearningStage/Memory-game that referenced this pull request Oct 16, 2022
LuckyDnepr added a commit to LuckyDnepr-LearningStage/Memory-game that referenced this pull request Oct 16, 2022
LuckyDnepr added a commit to LuckyDnepr-LearningStage/Memory-game that referenced this pull request Oct 16, 2022
@stale
Copy link

stale bot commented Apr 14, 2023

This issue has been automatically marked as stale because there were no activity during last 14 days. It will be closed in 7 days if no further activity occurs. Thank you for your contributions.

А. Чому так?
Найбільш розповсюджена причина: Студент не реагує на коментарі змінами коду і не задає запитань через брак часу або зміну життєвих пріоритетів. Покинуті піари відволікають менторів. Коли у студента з'явиться час, він/вона зможе перевідкрити той самий піар і продовжити роботу.

Б. Що робити, якщо в піарі нема оновлень, оскільки не зрозуміло, що треба зробити?
Варіант 1. Задати питання в самому PR.
Варіант 2. Задати питання в студентському чаті.

В. А якщо я все зробив(ла) і це ментор не рев'юває мої зміни?

  1. Переконайся, що ти відреагував(ла) на всі коментарі або кодом, або запитаннями, або відповідями. Напиши в PR і в чаті, що чесно вважаєш, що все зроблено і попроси повторне рев'ю. Якщо щось не зрозуміло, задай запитання.
  2. Реагуй на коментарі як менторів, так і інших учасників, включаючи ботів.
  3. Не ігноруй прохання типу * "Let's do some self-checks ..." * "Go through the checklist below..." * "mark fulfilled requirements..." * "if you would silently ignore this recommendation, a mentor may think that you are still working on fixes"
    навіть якщо вони написані ботом. Боти помічники і ментори покладаються на те, що прохання і пропозиції бота дотримуються.
    Не лінись піти по лінках в коментарях, погуглити термінологію та скористатись Google Translate.
  4. Можливо, у менторів склалися інші пріоритети через роботу, сімейні обставини і т.п. В такому разі, якщо ти зробив(ла) рекомендоване вище, то волай в чаті, що PR позначений stale, наче, все зроблено, а ментори чомусь не реагують - рятуйте!

Г. Хіба недостатньо того, що я додав(ла) коміт із змінами?
Часто буває так, що бачиш новий коміт, ідеш перевіряти, змін багато, доводиться перечитувати весь код. А потім з'ясовується, що одна невеличка зміна "відкладена на потім" чи з'являється ще один коміт і знов треба перечитувати все. Любіть нас, спілкуйтеся з нами - і ми відповімо повною взаємністю.

Традиційна пропозиція: задай питання по вищенаписаному в студентському чаті.

@stale stale bot added the 💤 Stale label Apr 14, 2023
@LuckyDnepr LuckyDnepr closed this by deleting the head repository May 22, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Stage0.1 💤 Stale task-MPG UAT-done Student confirmed User Acceptance Tests are done and collected feedback is processed
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants