08. april 2004 - 13:43Der 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?
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.
Synes godt om
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?
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.
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....
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
Synes godt om
Slettet bruger
08. april 2004 - 16:26#8
Hvorfor må et mellemrum ikke stå først i en sammenligning?
Sikkert fordi det opfattes som whitespace, altså ligegyldige mellemrum ...
Synes godt om
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?
-- 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 !-)
Synes godt om
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!
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.