Zmniejszanie liczby o 1 komendą i zresetowanie do stanu przed.

0

Witam. Chciałbym dowiedzieć się jak napisać kod, który zmniejszałby daną liczbę o 1 po wpisaniu komendy ale nie Od razu do 0 tylko, żeby zapamiętał ostatni wynik. Np. i=3 wpisuje komende "use" i wynik jest 2 zapamiętanie tego wyniku. Następnie użycie tej samej komendy raz jeszcze wtedy wynik: 1 aż do 0 po czym po komendzie np "reset". Zresetowałby stan zapamiętanej liczby do początku. Nie mogę sobie z tym poradzić.screenshot-20180426202658.png

0

Próbowałem jakoś pokombinować, używając if" ale jak widać efekty marne i wątpię czy to się nadaje.

0

O takie coś chodzi? (nie znam jsa)

var previousCommand = "";
var currentCommand = "";
var counter = 3;

while (counter > 0) // pętla do testów
{
  currentCommand = prompt();

  switch (currentCommand)
  {
    case "reset":
  	  counter = 3;
    break;
      
    case "use":
  	  counter--;
    break;
    
    default: 
  	  alert("error");
    break;
  }

  if (currentCommand == previousCommand && currentCommand == "use")
  {
     counter = 0;
  }

  alert(counter);
  previousCommand = currentCommand;
}
0

Oo jaka szybka reakcja. Zgadza się coś takiego, tylko bez prompt, bo to do bota, który po wpisaniu komendy na czacie będzie właśnie obniżał wartość danej liczby i kiedy dojdzie do 0 to ma wyświetlać wtedy wiadomość "wpisz reset" po tej komendzie resetuje. Mimo to dziękuję za tak szybką reakcję i coś już więcej wiem.

0

Nie wiem czy to wszystko jest zrozumiałe co napisałem to jeszcze dopiszę dokładniej. Mamy np. "3 użycia" danej komendy po 3 użyciach wartość zadeklarowanej liczby wynosi 0 i żeby używać dalej komendy trzeba wpisać "reset" aby 3 użycia wróciły.

0

Ah i zapomniałem o jednym "pozostałe użycia" mają nam się wyświetlać po użyciu komendy. Za pierwszym razem będzie to 2 za drugim 1 a po 3 razie będzie 0 z informacją o zresetowaniu komendą "reset".

0

Nie znam się na Web Workerach, ale:
1. Lepiej używać === niż == w Javascripcie.
2. Myślę, że lepiej używać let niż var (let wprowadza inny zasięg zmiennych).
3. Myślę, że żeby zachować stan zmiennej, to należałoby utworzyć ją w "bloku" nadrzędnym w stosunku do tego, w którym jest ona zmieniana (w szczególności jeśli chodzi o pętle; piszę "bloku" w cudzysłowie, bo deklaracje z var nie mają zasięgu blokowego).
4. W tym, co napisał @WeiXiao, możesz po prostu zamienić wywołanie prompt() na jakąś funkcję, która pobierze dane (albo na własność obiektu message).
5. Jeśli chodzi o użycia komendy, po prostu zliczaj: wpisz let commandUsages = 0; na przykład przy deklaracji zmiennej counter i zwiększaj tę zmienną w odpowiednim miejscu instrukcji switch.

0

Dziękuję za rady. Próbowałem coś z tym zrobić ale brak efektów. Tutaj w ten sposób. Nie ma żadnych błędów w kodzie i bot działa, lecz nic się nie dzieje. Nie reaguje na komendy. screenshot-20180427112954.png

Następnie próbowałem jeszcze z "console.log()" w ten sposób screenshot-20180427113142.png i reaguje na komendę i w terminalu wyświetla bez końca 3 i error. screenshot-20180427113248.png

0

Wyżej na pastebin a tutaj jeszcze tak wstawiam.

let previousCommand = "";
let currentCommand = "";
let counter = 3;
 
while (counter > 0) // pętla do testów
{
  currentCommand = message.channel.sendMessage();
 
  switch (currentCommand)
  {
    case "reset":
      counter = 3;
    break;
 
    case "use":
      counter--;
    break;
 
    default:
    console.log("error");
    break;
  }
 
  if (currentCommand === previousCommand && currentCommand === "use")
  {
     counter = 0;
     message.channel.sendMessage(counter);
  }
 
  console.log(counter);
  previousCommand = currentCommand;
}

})

1 użytkowników online, w tym zalogowanych: 0, gości: 1