• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

javascript początkujący pytanie

Object Storage Arubacloud
0 głosów
163 wizyt
pytanie zadane 20 kwietnia 2022 w JavaScript przez mizerka Nowicjusz (240 p.)
edycja 20 kwietnia 2022 przez mizerka
console.log("Witamy w quizie,masz 3 szanse na odpowiedź")
const tablica=new
  Array("Owczarek N...","Alfa R...","Kaczor D...")
const wybor=Number(prompt("Wybierz numer pytania od 1-3 "))
console.log(tablica[wybor - 1])
if(wybor>3 || wybor<1)
{
  
  console.log("nie ma takich pytan")
  
}
const tablicaodp=new Array("iemiecki","omeo","onald") // Nie wiem też jak najlepiej zapisac odpowiedzi do listy tablica z pytaniami.Nie jestem pewien czy kolejna lista do dobry pomysł
console.log("co dalej?? Masz trzy szanse")
for( let i=1;i=3; i++)
  {
  console.log("Podaj odpowiedź na pytanie:")
    if(tablica[wybor]==tablicaodp[0])      // Nie wiem jak tu odnieść się do odpowiedzi adekwatnej do wybranego pytania
    {
      console.log("git")
      break;
      
    }
    else
    {
      console.log("zła odpowiedź")
    }

    
  }



Hejka,dopiero zaczynam z js i postanowiłem sobie zrobić  taki o to dziwny quiz.Wiem że pewnie bezsensowny i głupi ale chciałem sobie pare zagadnien sklekotać i spobować coś zrobić.Jak ktoś by poradził jak zrobić fajny system odpowiedzi do pytań w liście bądź też nie w liście byłbym wdzieczny.Jeżeli wam też sie chce patrzeć na to dziwactywo to możecie dać jakieś rady co do tworzenia takich rzeczy na przyszłość.

komentarz 20 kwietnia 2022 przez ScriptyChris Mędrzec (190,190 p.)

Wstaw proszę kod w odpowiednie bloczki.

1
komentarz 20 kwietnia 2022 przez mizerka Nowicjusz (240 p.)
juz

1 odpowiedź

+1 głos
odpowiedź 20 kwietnia 2022 przez edutomek Dyskutant (8,380 p.)

Było kiedyś, jeszcze w latach 80. i pewnie 90. takie pismo "Bajtek". Pamiętam, że ludzie tam posyłali swoje (zazwyczaj proste) programy do analizy i oceny. Recenzje W. Zientary (chyba to on je pisał) czytałem z zapartym tchem. Nie dlatego, że były szczególnie ciekawe (choć dla mnie wówczas były) - ale dlatego, że sporo się przy tym uczyłem. Poza tym wielu innych źródeł wiedzy nie miałem.

Sam się teraz, przed snem, zabawię w takiego recenzenta. (Ach, wspomnienia...) Gdybym się gdzieś pomylił, to z góry przepraszam - późno już i zmęczony jestem.

Patrząc na Twój kod:

const tablica = new Array(...);

A dlaczego nie prościej:

const tablica = [...];

W tym przypadku różnicy pomiędzy new Array a [] nie ma (poza tym, że to więcej kodu do pisania; tu ze mnie leń wychodzi - dziwię się, że komuś chce się pisać dłuższy kod, choć to w sumie kwestia gustu).

Dalej:

if (wybor > 3 || wybor < 1)

Jeśli to działa, to (szczerze i bez żadnej kpiny) podziwiam znajomość kolejności operatorów. Mnie się tego pamiętać nigdy nie chce. (W. Zientara pewnie by mnie zgromił za lenistwo, ale używam wielu języków i nie chce mi się takich niuansów zapamiętywać, gdy mogę po prostu wymusić odpowiednią kolejność stosując nawiasy.) ALE: co będzie, jak w przyszłości dopiszesz kolejne pytanie? Trzeba będzie zmodyfikować liczbę 3 w tym warunku. Lepiej byłoby zapisać tablica.length i wtedy nie trzeba będzie niczego zmieniać.

Kolejna sprawa: jak już sprawdzisz, że nie ma pytania o podanym numerze, wypisujesz stosowny komunikat... i program działa dalej, choć sensu to już nie ma. A zrobić z tego kodu jedną funkcję - i wtedy po wykryciu, że nie ma sensu działać dalej będzie można zakończyć jej wykonywanie prostym return.

Co ciekawe, to pytanie wypisujesz przed sprawdzeniem... Znowu: chyba powinno być na odwrót? Bo jeśli nr pytania nie będzie odpowiedni, zostanie wypisane undefined. (Choć może być ciekawie, gdy user poda np. liczbę ujemną, albo rzeczywistą. Albo wpisze "Tomek jest gupi". Ale to odrębna kwestia.)

To, czy zapiszesz odpowiedzi w kolejnej tablicy, czy w tej samej, nie ma większego znaczenia (dałoby się i tak, i tak). Gorzej, że nigdzie nie widzę wypisania możliwych odpowiedzi. Czyli user coś wybierze, a potem ma w ciemno zgadywać? Albo zaglądać w kod?

Następnie w pętli for robisz klasyczny błąd początkującego, popatrz uważnie:

for ( let i = 1; i = 3; i++ )

Warunek kontynuacji pętli to u Ciebie i = 3, czyli instrukcja przypisania, a nie warunek logiczny (i == 3, albo i === 3). W JS, jeśli dobrze pamiętam, wszystko, co nie jest zerem (albo NULL, albo undefined, albo pustym napisem? głowy nie dam, tego też nigdy mi się nie chce pamiętać), jest traktowane jako prawdziwe. Czyli "warunek" i = 3, jako wartość 3 będzie zawsze prawdziwy. Super, mamy pętlę nieskończoną. Użytkownik może zgadywać, aż zgadnie.

Swoją drogą, gdybyś gdzieś w pętli używał wartości zmiennej i, to byś się zdziwił - bo już od pierwszej iteracji zmienna ta miałaby wartość 3 (z powodu instrukcji przypisania, zamiast warunku logicznego). No ale zmiennej tej nigdzie nie używasz (poza kontrolą samej pętli), więc tego akurat problemu nie będzie.

Nie wiesz, jak odnieść odpowiedź do pytania? Przecież tablice zapisałeś w taki sposób, że poprawne odpowiedzi są pod tym samym indeksem, co pytanie. Jeśli użytkownik poda nr odpowiedzi (tak samo, jak wcześniej podał nr pytania) taki sam, jak nr pytania, to znaczy, że odpowiedział poprawnie. Koniec gry, można przerwać pętlę (i dobrze, bo nic innego jej nie przerwie ;-)).

Tylko gdzie jest prompt z prośbą o podanie numeru odpowiedzi?

Odnośnie formatu zapisu pytań i odpowiedzi, to jeśli nie chcesz stosować tablic bezpośrednio (każdy ma prawo tego nie chcieć, nie wnikam w szczegóły), można użyć zwykłego obiektu:

const quiz = {
  pytania: [...],
  odp: [...]
};

Można się potem do tych tablic odwoływać poprzez quiz.pytania i quiz.odp.

Rady na przyszłość?

Jeśli chcesz kontynuować temat JS, to zainteresuj się też podstawami HTMLa i rób takie aplikacje w formie prostych stron. Skoro już bawisz się tablicami w JS, opanowanie prostych operacji na DOMie (choćby wstawienia tekstu) nie powinno być trudne. Proste aplikacje można zawsze zamieścić online choćby w JSFiddle (albo czymś podobnym) i potem na forum podać link.

Podobne pytania

0 głosów
1 odpowiedź 477 wizyt
pytanie zadane 5 kwietnia 2018 w JavaScript przez dzejson Nowicjusz (170 p.)
0 głosów
1 odpowiedź 135 wizyt
pytanie zadane 12 listopada 2017 w C i C++ przez MKarolS Nowicjusz (200 p.)
0 głosów
1 odpowiedź 187 wizyt
pytanie zadane 19 lutego 2017 w C i C++ przez Florek Nowicjusz (210 p.)

92,576 zapytań

141,426 odpowiedzi

319,652 komentarzy

61,961 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...