# Jak pracować nad wyzwaniami kodowania
Naszym celem jest rozwój zabawnego i jasnego interaktywnego doświadczenia w nauce.
Tworzenie interaktywnych wyzwań w zakresie kodowania jest trudne. O wiele łatwiej byłoby napisać długie wyjaśnienie lub stworzyć samouczek wideo, i jest miejsce dla tych na średnim i YouTube. Jednak dla naszego podstawowego programu nauczania, trzymamy się tego, co najlepiej działa dla większości ludzi - w pełni interaktywnego, wideo podobnego do gry.
Chcemy, aby kamerzy osiągnęli stan przepływu. Chcemy, aby budowali dynamikę i przebili się przez nasz program nauczania z jak najmniejszą ilością snagów. Chcemy, aby wzięły one udział w projektach z ufnością i spotkały się z szerokim zaangażowaniem w koncepcje programowania.
Tworzenie tych wyzwań wymaga ogromnej kreatywności i skupienia uwagi na szczegółach. Dostępna jest mnóstwo pomocy. Będziesz mieć wsparcie od całego zespołu współtwórców, do którego możesz odbić pomysły i demo swoich wyzwań. Bądź aktywny w [sali współtwórców](https://gitter.im/freecodecamp/contributors) i zadaj wiele pytań.
Dzięki Twojej pomocy możemy zaprojektować interaktywny program nauczania kodowania, który pomoże milionom ludzi nauczyć się kodowania na nadchodzące lata.
Zawartość dla każdego wyzwania jest przechowywana w jego własnym pliku markdown Zawartość dla każdego wyzwania jest przechowywana w jego własnym pliku markdown Ten plik markdown jest później przekonwertowany do HTML za pomocą naszych narzędzi do tworzenia interaktywnych stron internetowych.
Wszystkie treści programu nauczania freeCodeCamp.org można znaleźć w katalogu [`/curriculum/challenges`](https://github.com/freeCodeCamp/freeCodeCamp/tree/master/curriculum/challenges).
## Skonfiguruj oprzyrządowanie programu nauczania
Zanim zaczniesz pracować nad programem nauczania, musisz skonfigurować jakieś narzędzia, aby pomóc Ci przetestować zmiany. Możesz użyć dowolnej opcji z poniżej:
- Możesz [skonfigurować darmowy CodeCamp lokalnie](how-to-setup-freecodecamp-locally.md). Jest to **wysoce zalecane** dla regularnych/powtarzanych kontrybucji. Ta konfiguracja pozwala ci pracować i testować zmiany.
- Użyj Gitpod, darmowego środowiska dev online. Kliknięcie poniższego przycisku uruchomi gotowe do kodowania środowisko dev dla darmowego CodeCamp w przeglądarce. Zajmie to tylko kilka minut.
[](https://gitpod.io/#https://github.com/freeCodeCamp/freeCodeCamp)
- Edytuj pliki na interfejsie GitHuba klikając ikonę ołówka dla odpowiedniego pliku. Chociaż jest to najszybszy sposób, to **nie jest zalecany**, ponieważ nie możesz przetestować zmian na GitHubie. Jeśli nasi opiekunowie stwierdzą, że wprowadzone przez Ciebie zmiany muszą być testowane lokalnie, zamiast tego musisz ponownie zastosować się do powyższych metod.
## Szablon wyzwania
Poniżej znajduje się szablon tego, jak wyglądają obecnie pliki markdown wyzwań. To see the streamlined template we will be adopting see [below](#upcoming-challenge-template).
````md
---
id: Unikalny identyfikator (alfanumeryczny, MongoDB_id)
title: Wyzwanie Tytuł
wyzwanie: 0
videoUrl: 'url of video explanation '
---
## Description
` tagów. Na przykład nazwy tagów HTML lub nazwy właściwości CSS
- Pierwsza instancja słowa kluczowego, gdy jest zdefiniowana, lub ogólne słowa kluczowe (np. "obiekt" lub "niezmienne") idź w `` tagi
- Odniesienia do części kodu (np. funkcja, metoda lub zmienne) powinny być zawinięte w tagi `
`. Zob. przykład poniżej:
- Użyj
parseInt
, aby przekonwertować zmienną RealNumber
na liczbę całkowitą.
- Wieloliniowe bloki kodu **muszą być poprzedzone pustą linią**. Następny wiersz musi zaczynać się od trzech tyłek, a następnie od razu jednym z [obsługiwanych języków](https://prismjs.com/#supported-languages). Aby ukończyć blok kodu, musisz uruchomić nową linię z tylko trzema tyłami i **inną pustą linią**. **Uwaga:** Jeśli zamierzasz użyć przykładowego kodu w YAML, użyj `yaml` zamiast `yml` dla języka na prawo od tyłu.
Zob. przykład poniżej:
````md
Poniżej znajduje się przykład kodu:
```{language}
[TWOJA KOD HERE]
````
````
- Dodatkowe informacje w formie notatki powinny być sformatowane `Uwaga: Tekst notatki...
- Jeśli potrzebne są wielokrotne notatki, następnie wyświetl wszystkie notatki w oddzielnych zdaniach w formacie `Uwagi: Tekst pierwszej notatki. Tekst drugiej notatki.`.
- W stosownych przypadkach używaj podwójnych cytatów
## Testy pisania
Wyzwania powinny mieć minimalną liczbę testów niezbędnych do sprawdzenia, czy kamper rozumie pojęcie.
Naszym celem jest przekazanie informacji o pojedynczym punkcie, który próbuje uczyć i przetestować, czy zrozumiały ten punkt.
Testy na wyzwania mogą korzystać z bibliotek asercji Node.js i Chai.js. Ponadto, w razie potrzeby, można uzyskać dostęp do kodu wygenerowanego przez użytkownika w zmiennej `code`.
## Formatowanie kodu ziarenka
Oto szczegółowe wytyczne formatowania kodu ziarenka wyzwania:
- Użyj dwóch spacji do wcięcia
- wyrażenie JavaScript kończy się średnikiem
- W stosownych przypadkach używaj podwójnych kwotowań
- Komentarze powinny mieć spację między znakami komentarskimi a komentarzami
`// Popraw ten wiersz`
## Wskazówki i Rozwiązania
Każde wyzwanie ma przycisk "Uzyskaj wskazówkę", aby użytkownik miał dostęp do wskazówek/rozwiązań, które zostały stworzone dla wyzwania. Tematy programu nauczania hintów/rozwiązań znajdują się na [naszym forum](https://forum.freecodecamp.org/c/guide) w kategorii `Guide`.
Jeśli znajdziesz problem z istniejącym tematem hint/rozwiązań, możesz przedstawić sugestie w [kategorii współtwórców](https://forum.freecodecamp.org/c/contributors) na forum. Moderatorzy i użytkownicy posiadający zaufanie poziomu 3 dokonają przeglądu komentarzy i decydują o tym, czy uwzględnić zmiany w odpowiednim temacie wskazówki/rozwiązań.
### Dodawanie nowych wskazówek/rozwiązań wyzwań
Podejmij następujące kroki, dodając nowe podpowiedzi i rozwiązania związane z tematem.
1. Zacznij od tych samych kroków, aby utworzyć nowy temat, ale przejrzyj następny do tworzenia tytułu.
2. Tytuł tematu powinien zaczynać się od `FreCodeCamp Challenge Guide: ` połączony z aktualnym tytułem wyzwania programowego. Na przykład, jeśli wyzwanie nosi nazwę "Chunky Monkey", tytuł tematu będzie "`freeCodeCamp Challenge Guide: Chunky Monkey`".
3. `camperbot` powinien być właścicielem tych tematów/postów, musisz poprosić administratora o zmianę właściciela głównego wpisu na `camperbot`.
4. Po utworzeniu nowego tematu zostanie utworzony identyfikator tematu. Znajduje się na końcu adresu URL tematu forum. Ten identyfikator musi zostać dodany do frontacji pliku programu nauczania poprzez normalny proces pull request dla przycisku `Get a Hint` aby połączyć się z tematem.
### Wytyczne dotyczące treści wskazówek i rozwiązań tematów
Proponując rozwiązanie dla tematu przewodnika dotyczącego programu nauczania, należy dodać pełny kod. Obejmuje to wszystkie oryginalne kody ziaren, a także wszelkie zmiany potrzebne do zdania wszystkich testów wyzwań. Następujący szablon powinien być użyty podczas tworzenia nowych tematów wskazówek/rozwiązań:
``md
# Challenge Name Goes here
---
## Problem Wyjaśnienie
Podsumowanie tego, co należy zrobić bez przedefiniowania opisu i/lub instrukcji. Jest to opcjonalna sekcja
#### Odpowiednie Linki
- [Link Text](link_url_goes_here)
- [Link Text](link_url_goes_here)
---
## Wskazówki
### Wskazówka 1
idzie tutaj
### Wskazówka 2
Wskazówka znajduje się tutaj
---
## Rozwiązania
Solution 1 (Kliknij, aby pokazacząć/ukryć)
```js
function myFunc() {
konsola. og('Witaj Świat!');
}
````
#### Wyjaśnienie kodu
- Wyjaśnienie kodu idzie tutaj
- Wyjaśnienie kodu idzie tutaj
#### Odpowiednie linki
- [Tekst linku](link_url_goes_here)
- [Tekst linku](link_url_goes_here)
Dokładnie taka sama jak sekcja dotycząca nasion
To samo jeszcze raz
Pytanie pojawiłoby się tutaj (używane tylko do wyzwań związanych z filmami).
Odpowiedź 1
Odpowiedź 2
Odpowiedź 2
\
````
Tworzenie i edycja wyzwań:
Rodzaje wyzwań - co oznaczają wartości liczbowe typu wyzwania (enum).
Przyczynianie się do FreeCodeCamp - Pisanie testów wyzwań ES6 - film po Ethan Arrowood , ponieważ przyczynia się do starej wersji programu nauczania.