Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Pomoc s kodem

Nudil jsem se, tak sem si řekl, žebych se mohl naučit něco nového, zkouším programovat v dávkových souborech, už jsem uspěšně vytvořil aby se v CMD měnilo pozadí a text a název, pak papouška (opakuje 2x muj napsanej text), teď sem si chtěl vytvořit ''kvíz'', dal jsem tam smajlika, 3 možnosti, a chci, aby když dám přislušný číslo, tak aby to hodilo buď ''wrong'' nebo ''correct''. Ale když to teď spustim, tak to funguje jen po ''Tvá odpověď'' a když tam dám číslo, tak cmd zmizí, kde muže byt chyba?

@echo off

echo Co je to za smajlika? - ":)"

:Zadani
echo.
echo 1 - Usmevavy
echo 2 - Smutny
echo 3 - Sileny
set /p operace=Tva odpoved:
goto operace

:operace
if %1% goto Correct
if %2% goto Wrong1
if %3% goto Wrong2

:Correct
set /a Vysledek=%echo Correct%
goto vysledek

:Wrong1
set /a Vysledek=%echo Wrong%
goto vysledek

:Wrong2
set /a Vysledek=%echo Wrong%
goto vysledek

:Vysledek
echo Vysledek odpoved je %vysledek%

Zabývám se tím celkově 1 den, předtím sem nikdy nic podobnýho nedělal, zkoušel sem už hromadu kombinaci, upravovat to, hrát si s proměnýmá (%) i s ''goto'' a pořád stejný.

Děkuju předem za rady kde je chyba :)

Předmět Autor Datum
1. máš špatně goto "operace" (nesmyslný skok) 2. máš špatně ify. (if "%operace%"=="1" goto Někam) 3.…
touchwood 06.02.2017 05:58
touchwood
Jako poslední řádek napiš: Pause
Jan Fiala 06.02.2017 06:59
Jan Fiala
Ok, tak jsem na to nějakym způsobem přišel :D @echo off :start echo Co je to za smajlika? - ":)" :Z…
Kenzerut 06.02.2017 10:58
Kenzerut
No neviem, akákoľvek odpoveď okrem 2 a 3 je podľa toho správna :-) Ak ti to niekto zadal v škole ako…
sakraforte 06.02.2017 13:32
sakraforte
A pritom by celou druhou pulku stacilo nahradit jednim if/else.
Dwane Dibbley 06.02.2017 13:35
Dwane Dibbley
to ano, ale pokud by to udělal nějak parametricky, nebo chtěl filtrovat odpovědi mimo rozsah, tak se…
touchwood 06.02.2017 13:39
touchwood
Do školy už pár let nechodim :) , prostě se chcu naučit něco novýho, chápu, že způsobu jak to napsat…
Kenzerut 06.02.2017 14:51
Kenzerut
Takto je to lépe: @echo off :start cls echo Co je to za smajlika? - ":)" :Zadani echo. echo 1 - Usm…
touchwood 06.02.2017 13:37
touchwood
ešte by som vyhodil tento záhadný kód goto operace :operace
sakraforte 06.02.2017 13:40
sakraforte
jj. edit: ten kód je samozřejmě neoptimální, ale zřejmě jde o nějakou školní práci, a tam je jistá…
touchwood 06.02.2017 13:56
touchwood
:-) Rozumiem.. Šachy mi nikdy moc nešly. A takýto úvod by asi vyučujúci nestrávil :-) @echo off set…
sakraforte 06.02.2017 14:20
sakraforte
Případně by to zvládnul i bez polí, podobně jako odpovědi. Ve tvém případě by musel dořešit správné…
Jan Fiala 06.02.2017 14:56
Jan Fiala
Išlo mi o to, aby nebola otázka zakaždým rovnaká. A odpoveď je uložená v num (prípadne num+1). S tým…
sakraforte 06.02.2017 15:05
sakraforte
@echo off setlocal enabledelayedexpansion enableextensions :start cls set smajlik[0]=:-) set smajlik… poslední
sakraforte 06.02.2017 19:47
sakraforte

1. máš špatně goto "operace" (nesmyslný skok)
2. máš špatně ify. (if "%operace%"=="1" goto Někam)
3. nemáš ošetřen chybný vstup (např. hodnoty 4, x, 51, apod.)

edit: jinak nechápu, proč tam nemáš jen jeden IF, kterým ošetříš správnou odpověď, protože všechny ostatní odpovědi jsou špatně?

Ok, tak jsem na to nějakym způsobem přišel :D

@echo off

:start
echo Co je to za smajlika? - ":)"

:Zadani
echo.
echo 1 - Usmevavy
echo 2 - Smutny
echo 3 - Sileny
set /p input=Tva odpoved:
goto operace

:operace
if %input%==1 goto dobre
if %input%==2 goto spatne
if %input%==3 goto spatne
pause

:dobre
echo Odpoved je Spravna!
pause >nul
goto start

:spatne
echo Odpoved je Spatna!
pause >nul
goto start

Do školy už pár let nechodim :) , prostě se chcu naučit něco novýho, chápu, že způsobu jak to napsat je asi víc, funguje to tak jak chci, tak dobrý, už sem si tam přidal další 2 otázky, přičemž u poslední když se odpoví špatně tak se to hodí zase nazačátek.

Jinak, jde přes .bat dělat i hry? (aspoň 2D ?) nebo přes jakej free by to šlo? Zkoušel sem javascript co maj na webu online, ale nic moc .... :D

Takto je to lépe:

@echo off

:start
cls
echo Co je to za smajlika? - ":)"

:Zadani
echo.
echo 1 - Usmevavy
echo 2 - Smutny
echo 3 - Sileny
set /p input=Tva odpoved:
goto operace

:operace
if %input%==1 goto dobre
if %input%==2 goto spatne
if %input%==3 goto spatne
echo Odpoved nebyla rozeznana
goto Zadani

:dobre
echo Odpoved je Spravna!
pause >nul
goto start

:spatne
echo Odpoved je Spatna!
pause >nul
goto start
@echo off
setlocal enabledelayedexpansion enableextensions

:start
cls
set smajlik[0]=:-)
set smajlik[1]=:-(
set smajlik[2]=:-o
set smajlik[3]=:-O
set smajlik[4]=:-#
set popis[0]=1-veselý
set popis[1]=2-smutný
set popis[2]=3-prekvapený
set popis[3]=4-retardovaný
set popis[4]=5-zúrivý

set /a num=%random% %%5

echo Co je to za smajlíka ? !smajlik[%num%]!
FOR /L %%A IN (0,1,4) DO (
  ECHO !popis[%%A]!
)

set /a pom=%num%+1
set /p input=Tva odpoved:

if %input%==%pom% goto dobre
echo Zle, to je !popis[%num%]! smajlík.

pause
goto start

:dobre
echo Správne
pause

Zpět do poradny Odpovědět na původní otázku Nahoru