Avatar billede Slettet bruger
08. april 2004 - 13:43 Der er 13 kommentarer og
1 løsning

Hjælp til fejlfinding i lille batch-spil

Jeg har lavet dette kryds og bolle-spil.
Jeg kan ikke få det til at virke med hensyn til check efter en stribe. Jeg kan ikke selv se hvad der er galt Kan nogen hjælpe?


@echo off
:start
cls
setlocal
set F1A=
set F1B=
set F1C=
set F2A=
set F2B=
set F2C=
set F3A=
set F3B=
set F3C=
set næstetur=1
echo.
echo Velkommen til Kryds og bolle!
echo.
set /p spiller1=Intast dit navn, spiller 1:
echo.
set /p spiller2=Intast dit navn, spiller 2:
goto vind
:check efter stribe
set /a stribechecker=0
if %næstetur%==2 set checkefter=X
if %næstetur%==1 set checkefter=O
:tjekstribe 1
if F1A==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F1B==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F1C==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if %stribechecker%==3 goto vind
set a/ stribechecker=0
:tjekstribe 2
if F2A==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F2B==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F2C==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if %stribechecker%==3 goto vind
set a/ stribechecker=0
:tjekstribe 3
if F3A==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F3B==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F3C==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if %stribechecker%==3 goto vind
set a/ stribechecker=0
:tjekstribe 4
if F1A==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F2A==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F3A==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if %stribechecker%==3 goto vind
set a/ stribechecker=0
:tjekstribe 5
if F1B==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F2B==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F3B==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if %stribechecker%==3 goto vind
set a/ stribechecker=0
:tjekstribe 6
if F1C==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F2C==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F3C==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if %stribechecker%==3 goto vind
set a/ stribechecker=0
:tjekstribe 7
if F1A==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F2B==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F3C==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if %stribechecker%==3 goto vind
set a/ stribechecker=0
:tjekstribe 8
if F1C==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F2B==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if F3A==%ckeckefter% set a/ stribechecker=%stribechecker%+1
if %stribechecker%==3 goto vind
set a/ stribechecker=0
:spilleplade
cls
echo.
echo  %Spiller1% er X  -  %Spiller2% er O
echo.
echo.
echo        1 2 3
echo        - - -
echo      A ^|%F1A%^|%F2A%^|%F3A%^|
echo        - - -
echo      B ^|%F1B%^|%F2B%^|%F3B%^|
echo          - - -
echo      C ^|%F1C%^|%F2C%^|%F3C%^|
echo        - - -
echo.
if %næstetur%==2 goto spiller2stur
:spiller1stur
echo  Din tur, spiller 1
set /p kolonne=vælg kolonne: [1/2/3]
set /p række=vælg række: [A/B/C]
set F%kolonne%%række%=X
set næstetur=2
goto check efter stribe
:spiller2stur
echo  Din tur, spiller 2
set /p kolonne=vælg kolonne: [1/2/3]
set /p række=vælg række: [A/B/C]
set F%kolonne%%række%=O
set næstetur=1
goto check efter stribe
:vind
cls
if %næstetur%==2 set vinder=%spiller1%
if %næstetur%==1 set vinder=%spiller2%
echo.
echo  Tillykker, du har vundet %vinder%!!
echo.
set /p igen=  Start forfra? (Ja/Nej)
if %igen%==ja goto start


Og lige et spørgsmål til:
Hvordan for man æøå vist korrekt i et echo?


Håber nogen vil hjælpe!

- GartZen
Avatar billede bertelbrander Novice
08. april 2004 - 14:03 #1
Lige et par hurtige kommentarer:

Det hedder set /a og ikke set a/

Man kan skrive:
set /a stribechecker += 1
i stedet for
set /a stribechecker=%stribechecker%+1

Den letteste måde at få æøå i bat-filer er at editere dem med edit.
Avatar billede Slettet bruger
08. april 2004 - 14:11 #2
OK, tak! Indtil videre ;)

Nu ser det sådan ud:


@echo off
:start
cls
setlocal
set F1A=
set F1B=
set F1C=
set F2A=
set F2B=
set F2C=
set F3A=
set F3B=
set F3C=
set næstetur=1
echo.
echo Velkommen til Kryds og bolle!
echo.
set /p spiller1=Intast dit navn, spiller 1:
echo.
set /p spiller2=Intast dit navn, spiller 2:
goto spilleplade
:check efter stribe
set /a stribechecker=0
if %næstetur%==2 set checkefter=X
if %næstetur%==1 set checkefter=O
:tjekstribe 1
if F1A==%ckeckefter% set /a stribechecker +=1
if F1B==%ckeckefter% set /a stribechecker +=1
if F1C==%ckeckefter% set /a stribechecker +=1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 2
if F2A==%ckeckefter% set /a stribechecker +=1
if F2B==%ckeckefter% set /a stribechecker +=1
if F2C==%ckeckefter% set /a stribechecker +=1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 3
if F3A==%ckeckefter% set /a stribechecker +=1
if F3B==%ckeckefter% set /a stribechecker +=1
if F3C==%ckeckefter% set /a stribechecker +=1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 4
if F1A==%ckeckefter% set /a stribechecker +=1
if F2A==%ckeckefter% set /a stribechecker +=1
if F3A==%ckeckefter% set /a stribechecker +=1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 5
if F1B==%ckeckefter% set /a stribechecker +=1
if F2B==%ckeckefter% set /a stribechecker +=1
if F3B==%ckeckefter% set /a stribechecker +=1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 6
if F1C==%ckeckefter% set /a stribechecker +=1
if F2C==%ckeckefter% set /a stribechecker +=1
if F3C==%ckeckefter% set /a stribechecker +=1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 7
if F1A==%ckeckefter% set /a stribechecker +=1
if F2B==%ckeckefter% set /a stribechecker +=1
if F3C==%ckeckefter% set /a stribechecker +=1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 8
if F1C==%ckeckefter% set /a stribechecker +=1
if F2B==%ckeckefter% set /a stribechecker +=1
if F3A==%ckeckefter% set /a stribechecker +=1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:spilleplade
cls
echo.
echo  %Spiller1% er X  -  %Spiller2% er O
echo.
echo.
echo        1 2 3
echo        - - -
echo      A ^|%F1A%^|%F2A%^|%F3A%^|
echo        - - -
echo      B ^|%F1B%^|%F2B%^|%F3B%^|
echo          - - -
echo      C ^|%F1C%^|%F2C%^|%F3C%^|
echo        - - -
echo.
if %næstetur%==2 goto spiller2stur
:spiller1stur
echo  Din tur, spiller 1
set /p kolonne=vælg kolonne: [1/2/3]
set /p række=vælg række: [/aB/C]
set F%kolonne%%række%=X
set næstetur=2
goto check efter stribe
:spiller2stur
echo  Din tur, spiller 2
set /p kolonne=vælg kolonne: [1/2/3]
set /p række=vælg række: [/aB/C]
set F%kolonne%%række%=O
set næstetur=1
goto check efter stribe
:vind
cls
if %næstetur%==2 set vinder=%spiller1%
if %næstetur%==1 set vinder=%spiller2%
echo.
echo  Tillykker, du har vundet %vinder%!!
echo.
set /p igen=  Start forfra? (J/aNej)
if %igen%==ja goto start


Men hvorfor kan jeg stadig ikke få den til at gå til :vind?

Hvad mener du med at editere dem med edit?
Avatar billede bertelbrander Novice
08. april 2004 - 14:49 #3
Så vidt jeg ved kan man ikke have mellemrum i labels, bla. "check efter stribe".

edit er et program der bla. kan bruges til redigere bat-filer, du kan starte det fra kommandolinien ved at skrive "edit myfile.bat", edit bruger det samme tegnsæt som kommandoprompten.
Avatar billede roenving Novice
08. april 2004 - 14:54 #4
if F1A==%checkefter% set /a stribechecker +=1
Avatar billede Slettet bruger
08. april 2004 - 15:14 #5
problemet er i hvert fald ikke det med mellemrum i mine labels. Har lige testet.
Så der er stadig et problem....
Men tak for svaret med edit...
Hvis du kan finde ud af fejlen får du pointene....
Avatar billede roenving Novice
08. april 2004 - 15:29 #6
Du havde en tavetosse, som jeg før skrev, men du har også en forkert adressering af variablen:

if %F1A%==%checkefter% set /a stribechecker +=1

-- men jeg får stadig fejl !-)
Avatar billede roenving Novice
08. april 2004 - 15:57 #7
Du havde også den fejl, at F1A, som jo kunne være mellemrum stod først i en sammenligning ...

-- og lige et par småforbedringer inkluderet:

@echo off
:start
cls
setlocal
set F1A=
set F1B=
set F1C=
set F2A=
set F2B=
set F2C=
set F3A=
set F3B=
set F3C=
set nastetur=1
echo.
echo Velkommen til Kryds og bolle!
echo.
set /p spiller1=Indtast dit navn, spiller 1:
echo.
set /p spiller2=Indtast dit navn, spiller 2:
goto spilleplade
:checkefterstribe
set /a stribechecker=0
if %nastetur%==2 set checkefter=X
if %nastetur%==1 set checkefter=O
:tjekstribe 1
if %checkefter%==%F1A% set /a stribechecker += 1
if %checkefter%==%F1B% set /a stribechecker += 1
echo kaj
if %checkefter%==%F1C% set /a stribechecker += 1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 2
if %checkefter%==%F2A% set /a stribechecker += 1
if %checkefter%==%F2B% set /a stribechecker += 1
if %checkefter%==%F2C% set /a stribechecker += 1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 3
if %checkefter%==%F3A% set /a stribechecker += 1
if %checkefter%==%F3B% set /a stribechecker += 1
if %checkefter%==%F3C% set /a stribechecker += 1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 4
if %checkefter%==%F1A% set /a stribechecker += 1
if %checkefter%==%F2A% set /a stribechecker += 1
if %checkefter%==%F3A% set /a stribechecker += 1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 5
if %checkefter%==%F1B% set /a stribechecker += 1
if %checkefter%==%F2B% set /a stribechecker += 1
if %checkefter%==%F3B% set /a stribechecker += 1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 6
if %checkefter%==%F1C% set /a stribechecker += 1
if %checkefter%==%F2C% set /a stribechecker += 1
if %checkefter%==%F3C% set /a stribechecker += 1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 7
if %checkefter%==%F1A% set /a stribechecker += 1
if %checkefter%==%F2B% set /a stribechecker += 1
if %checkefter%==%F3C% set /a stribechecker += 1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:tjekstribe 8
if %checkefter%==%F1C% set /a stribechecker += 1
if %checkefter%==%F2B% set /a stribechecker += 1
if %checkefter%==%F3A% set /a stribechecker += 1
if %stribechecker%==3 goto vind
set /a stribechecker=0
:spilleplade
cls
echo.
echo  %Spiller1% er X  -  %Spiller2% er O
echo.
echo.
echo        1 2 3
echo        - - -
echo      A ^|%F1A%^|%F2A%^|%F3A%^|
echo        - - -
echo      B ^|%F1B%^|%F2B%^|%F3B%^|
echo        - - -
echo      C ^|%F1C%^|%F2C%^|%F3C%^|
echo        - - -
echo.
echo Tryk s for Slut
echo.
if %nastetur%==2 goto spiller2stur
:spiller1stur
echo  Din tur, spiller 1
set /p kolonne=vælg kolonne: [1/2/3]
if %kolonne%==s goto exit
set /p række=vælg række: [A/B/C]
if X==F%kolonne%%række% goto spiller1stur
if O==F%kolonne%%række% goto spiller1stur
set F%kolonne%%række%=X
set nastetur=2
goto checkefterstribe
:spiller2stur
echo  Din tur, spiller 2
set /p kolonne=vælg kolonne: [1/2/3]
if %kolonne%==s goto exit
set /p række=vælg række: [A/B/C]
if X==F%kolonne%%række% goto spiller2stur
if O==F%kolonne%%række% goto spiller2stur
set F%kolonne%%række%=O
set nastetur=1
goto checkefterstribe
:vind
cls
if %nastetur%==2 set vinder=%spiller1%
if %nastetur%==1 set vinder=%spiller2%
echo.
echo  Tillykke, du har vundet %vinder%!!
echo.
set /p igen=  Start forfra? (Ja/Nej)
if %igen%==ja goto start
:exit
Avatar billede Slettet bruger
08. april 2004 - 16:26 #8
Hvorfor må et mellemrum ikke stå først i en sammenligning?
Avatar billede roenving Novice
08. april 2004 - 16:30 #9
Sikkert fordi det opfattes som whitespace, altså ligegyldige mellemrum ...
Avatar billede Slettet bruger
08. april 2004 - 16:33 #10
Smid et svar roenving...
Tusind tak for hjælpen!!!

Men dine småforbedringer er jeg nu ikke så glad for, da formålet var at lære at lave et lille spil. Ikke lave det. - hvis du forstår?
men de småforbedringer slettter jeg bare. (Og laver dem sikkert selv lidt senere ;))

Har du idéer til andre småspil/'programmer' man kan lave og lære noget ved?
Avatar billede roenving Novice
08. april 2004 - 16:44 #11
-- jeg satte dem nu ind, fordi jeg blev irriteret over at jeg skulle lukke vinduet ned, hvis jeg ikke ønskede at fortsætte (under debugging !-), så der skulle en luk-spillet ting ind, så selvfølgelig kan du bare slette dem !o]

-- Omkring andre ideer til spil/småprogrammer, tror jeg bertelbrander er bedre til at vejvise ...

-- og det var jo meget rart at få genopfrisket nogle ting fra svundne tider, så jeg synes, du skal beholde dine points !-)
Avatar billede Slettet bruger
08. april 2004 - 16:46 #12
Du har ærlig fortjent dem, roenving.
Jeg har en holdning med at jeg elsker at betale for hvad jeg får, og hader at betale for hvad jeg ikke får.
Så smid et svar;)
og igen, 1.000 tak for din gåde rådgivning!
Avatar billede roenving Novice
08. april 2004 - 16:51 #13
Oki, så velbekomme '-)
Avatar billede roenving Novice
08. april 2004 - 17:01 #14
-- og tak for points ;~}
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester