Forum www.maciuchnagames.fora.pl Strona Główna
FAQ Szukaj Użytkownicy Grupy Profil Zaloguj się, by sprawdzić wiadomości
Forum www.maciuchnagames.fora.pl Strona Główna  Zaloguj  Rejestracja
kolejny problem z batchem

 
Napisz nowy temat   Odpowiedz do tematu    Forum www.maciuchnagames.fora.pl Strona Główna -> Programowanie
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
GOKOPs
forumowicz



Dołączył: 27 Mar 2013
Posty: 15
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Toruń, Polska, Europa, Ziemia, Słońce, Droga Mleczna

PostWysłany: Pią 21:50, 05 Kwi 2013    Temat postu: kolejny problem z batchem

Witam. Wklejałem już na forum fragment kodu tej gry, ale napiszę to w nowym temacie, żeby nie było zamieszania. (Bo problem jest inny, aczkolwiek podobny)
Otóż kiedy folder z plikami tej "gry" nie jest jeszcze stworzony, gra włącza się bez problemów, ale gdy zostanie on już stworzony, ładuje się pierwsza połowa menu, (bo ze względu na opcje wyglądu menu musiałem je podzielić)
a następnie wywala błąd "W tym momencie goto było nieoczekiwane". Zaczęło się to, kiedy poprawiłem kod zmiany ramki w menu w opcjach, co niby na ładowanie się menu nie powinno mieć wpływu.
No więc najpierw daję tu kod od początku programu do końca ładowania menu:
Kod:

@echo off
title Wojna gatunk˘w
color 07
if exist "C:/Wojna_Gatonkow/" goto clor
goto crtf

:crtf
md "c:/Wojna_Gatonkow"
if exist "C:/Wojna_Gatonkow/color.txt" goto butt
goto clor

:clor
(echo kolor=07) >"c:/Wojna_Gatonkow/color.txt"
if exist "C:/Wojna_Gatonkow/button.txt" goto fram
goto butt

:butt
(echo  buttons=1)  >  "c:/Wojna_Gatonkow/button.txt"
if exist "C:/Wojna_Gatonkow/frame.txt" goto strt
goto fram

:fram
(echo frames=1) > "C:/Wojna_Gatonkow/frame.txt"
goto strt
 
:strt
set "sciezka_kolor=c:/Wojna_Gatonkow/color.txt"
set "sciezka_buttons=c:/Wojna_Gatonkow/button.txt"
set "sciezka_frames=c:/Wojna_Gatonkow/frame.txt"



for /f %%a in (%sciezka_kolor%) do set %%a
for /f %%a in (%sciezka_frames%) do set %%a
for /f %%a in (%sciezka_buttons%) do set %%a



:main_menu
color %kolor%
if %frames%== 1 goto frame1
if %frames%== 2 goto frame2
if %frames%== 3 goto frame3
if %frames%== 4 goto frame4
if %frames%== 5 goto frame5
if %frames%== 6 goto frame6
if %frames%== 7 goto frame7
if %frames%== 8 goto frame8
if %frames%== 9 goto frame9
if %frames%== 10 goto frame10

:frame1
cls
echo ################################################
echo          Witaj w grze "Wojna gatunkow"
echo        ˝eby wybiera† opcje, naleľy wpisa†
echo              numer i wcisnĄ† enter.
echo ################################################
echo.
goto menubuttons

:frame2
cls
echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
echo          Witaj w grze "Wojna gatunkow"
echo        ˝eby wybiera† opcje, naleľy wpisa†
echo              numer i wcisnĄ† enter.
echo @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
echo.
goto menubuttons

:frame4
cls
echo $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
echo          Witaj w grze "Wojna gatunkow"
echo        ˝eby wybiera† opcje, naleľy wpisa†
echo              numer i wcisnĄ† enter.
echo $$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
echo.
goto menubuttons

:frame5
cls
echo ************************************************
echo          Witaj w grze "Wojna gatunkow"
echo        ˝eby wybiera† opcje, naleľy wpisa†
echo              numer i wcisnĄ† enter.
echo ************************************************
echo.
goto menubuttons

:frame6
cls
echo ::::::::::::::::::::::::::::::::::::::::::::::::
echo           Witaj w grze "Wojna gatunkow"
echo      Pewnie juľ to wiesz, ale ľeby wybiera†
echo    opcje, naleľy wpisa† numer i wcisnĄ† enter.
echo ::::::::::::::::::::::::::::::::::::::::::::::::
echo.
goto menubuttons

:frame7
cls
echo ++++++++++++++++++++++++++++++++++++++++++++++++
echo          Witaj w grze "Wojna gatunkow"
echo        ˝eby wybiera† opcje, naleľy wpisa†
echo              numer i wcisnĄ† enter.
echo ++++++++++++++++++++++++++++++++++++++++++++++++
echo.
goto menubuttons

:frame8
cls
echo ================================================
echo          Witaj w grze "Wojna gatunkow"
echo        ˝eby wybiera† opcje, naleľy wpisa†
echo              numer i wcisnĄ† enter.
echo ================================================
echo.
goto menubuttons

:frame9
cls
echo ------------------------------------------------
echo          Witaj w grze "Wojna gatunkow"
echo        ˝eby wybiera† opcje, naleľy wpisa†
echo              numer i wcisnĄ† enter.
echo ------------------------------------------------
echo.
goto menubuttons

:frame10
cls
echo ________________________________________________
echo          Witaj w grze "Wojna gatunkow"
echo        ˝eby wybiera† opcje, naleľy wpisa†
echo              numer i wcisnĄ† enter.
echo ________________________________________________
echo.
goto menubuttons

:menubuttons
if %buttons%== 1 goto button1
if %buttons%== 2 goto button2
if %buttons%== 3 goto button3
if %buttons%== 4 goto button4
if %buttons%== 5 goto button5
if %buttons%== 6 goto button6
if %buttons%== 7 goto button7
if %buttons%== 8 goto button8

:button1
echo              \1--Rozpocznij grˆ--1/
echo               \2------Opcje-----2/
echo                \3--Strona Gry--3/
echo                 \4----Info----4/
echo                  \5---Pomoc--5/
echo                   \6-Wyjcie-6/
goto menuset

:button2
echo             ł1ł Rozpocznij grˆ ł1ł
echo                  ł2ł Opcje ł2ł 
echo                ł3ł Strona Gry ł3ł
echo                  ł4ł Info ł4ł
echo                  ł5ł Pomoc ł5ł
echo                 ł6ł Wyjscie ł6ł
goto menuset

:button3
echo              (1 Rozpocznij grˆ 1)
echo                  (2 Opcje 2)
echo                (3 Strona Gry 3)
echo                  (4 Info 4)
echo                  (5 Pomoc 5)
echo                 (6 Wyjscie 6)
goto menuset

:button4
echo              {1 Rozpocznij grˆ 1}
echo                  {2 Opcje 2}
echo                {3 Strona Gry 3}
echo                  {4 Info 4}
echo                  {5 Pomoc 5}
echo                 {6 Wyjscie 6}
goto menuset

:button5
echo              X1-Rozpocznij grˆ-1X
echo                  X2-Opcje-2X
echo                X3 Strona Gry 3X
echo                  X4-Info-4X
echo                  X5-Pomoc-5X
echo                 X6-Wyjscie-6X
goto menuset

:button6
echo             1---Rozpocznij grˆ---1
echo                 2---Opcje---2
echo                 3-Strona Gry-3
echo                 4---Info---4
echo                 5---Pomoc---5
echo                6---Wyjscie---6
goto menuset

:button7
echo             #1# Rozpocznij grˆ #1#
echo                  #2# Opcje #2#
echo                #3# Strona Gry #3#
echo                  #4# Info #4#
echo                  #5# Pomoc #5#
echo                 #6# Wyjscie #6#
goto menuset

:button8
echo 1 - Rozpocznij grˆ
echo 2 - Opcje
echo 3 - Strona Gry
echo 4 - Info
echo 5 - Pomoc
echo 6 - Wyjscie
goto menuset
:menuset
set /p "opc=>"
if %opc%== 1 goto game
if %opc%== 2 goto options
if %opc%== 3 goto page
if %opc%== 4 goto info
if %opc%== 5 goto help
if %opc%== 6 exit
goto error


A to jest kod zmiany ramki w menu, który zmodyfikowałem:
Kod:

:opc-menu-frame
cls
echo Wybierz ramkˆ z listy:
echo.
echo 1 - ########################## (domyslnie)
echo 2 - @@@@@@@@@@@@@@@@@@@@@@@@@@
echo 3 - $$$$$$$$$$$$$$$$$$$$$$$$$$
echo 4 - **************************
echo 5 - ::::::::::::::::::::::::::
echo 6 - ++++++++++++++++++++++++++
echo 7 - ==========================
echo 8 - --------------------------
echo 9 - __________________________
echo.
echo 10 - powr˘t
set /p "frame=>"
if %frame%== 1 goto framestyle1
if %frame%== 2 goto framestyle2
if %frame%== 3 goto framestyle4
if %frame%== 4 goto framestyle5
if %frame%== 5 goto framestyle6
if %frame%== 6 goto framestyle7
if %frame%== 7 goto framestyle8
if %frame%== 8 goto framestyle9
if %frame%== 9 goto framestyle10
if %frame%== 10 goto opc-menu

:framestyle1
echo frames=1 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle2
echo frames=2 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle3
echo frames=3 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle4
echo frames=4 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle5
echo frames=5 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle6
echo frames=6 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle7
echo frames=7 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle8
echo frames=8 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle9
echo frames=9 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:framestyle10
echo frames=10 >"c:/Wojna_Gatonkow/frame.txt"
set "sciezka_frames=c:\Wojna_Gatonkow\frame.txt"
for /f %%a in (%sciezka_frames%) do set %%a
goto frameOK

:frameOK
cls
echo Ramka zostala zmieniona.
ping localhost -n 2 >nul
goto main_menu


Najpierw daję ścieżkę do pliku w zmienną, a dopiero potem odczytuję przez for /f %%a in (ścieżka) do set %%a, ponieważ inaczej nie chciało mi działać.
Powrót do góry
Zobacz profil autora
Autor Wiadomość
maciuchna
Admin



Dołączył: 27 Sie 2011
Posty: 233
Przeczytał: 2 tematy

Ostrzeżeń: 0/3

PostWysłany: Śro 16:18, 10 Kwi 2013    Temat postu:

Serio chciało ci się robić tyle zakładek dla osobnych ramek? Razz

A nie prościej było zrobić 2 zmiennych, f1 i f2, od których zależałby wygląd ramki?

pokażę to na takim oto kodzie:

set f1=/
set f2=\

<jakiś tam jeszcze kod>

:menu
echo %f1% 1) nowa gra %f2%
echo %f1% 2) opcje %f2%
echo %f1% 3) wyjscie %f2%


myślę że taki kod jest przejrzysty i nie musisz robić dla każdej innej ramki osobnego menu, wystarczyłoby jedno menu a wcześniej wczytanie wartości zmiennych f1 i f2. Ma to jeszcze taką zaletę że dzięki temu użytkownik będzie mógł wybrać sobie dowolny wygląd ramki, a nie tylko ten zaimplemetnowany przez ciebie- jeżeli będzie chciał, to wpisze sobie do zmiennych f1 i f2 co chce.

Jak poprawisz kod zgodnie z moimi wskazówkami to wklej go tu jeszcze raz i wtedy spróbuję pomóc, bo przy obecnym kodzie szukanie błędu to jak szukanie igły w stogu siana a nie chce mi się siedzieć długich godzin przed komputerem żeby tylko poprawić twój wytwór kodo-podobny, czy tam spaghetti jeżeli wolisz je tak nazwać.
Powrót do góry
Zobacz profil autora
Autor Wiadomość
GOKOPs
forumowicz



Dołączył: 27 Mar 2013
Posty: 15
Przeczytał: 0 tematów

Ostrzeżeń: 0/3
Skąd: Toruń, Polska, Europa, Ziemia, Słońce, Droga Mleczna

PostWysłany: Śro 22:02, 10 Kwi 2013    Temat postu:

Dzięki za poradę, później to zrobię i dam edit. Smile
A, i jeszcze tak zauważyłem:
Kod na początku programu (ten, który tworzy folder itd.) mi nie działał, i NickPL podał mi taki jaki jest, no ale zauważyłem, że ten kod tworzy nowe pliki zawsze, a ma je tworzyć tylko, kiedy ich w ogóle nie ma. Wie ktoś, co zrobić?
Powrót do góry
Zobacz profil autora
Autor Wiadomość
maciuchna
Admin



Dołączył: 27 Sie 2011
Posty: 233
Przeczytał: 2 tematy

Ostrzeżeń: 0/3

PostWysłany: Czw 16:21, 11 Kwi 2013    Temat postu:

GOKOPs napisał:
Dzięki za poradę, później to zrobię i dam edit. Smile
A, i jeszcze tak zauważyłem:
Kod na początku programu (ten, który tworzy folder itd.) mi nie działał, i NickPL podał mi taki jaki jest, no ale zauważyłem, że ten kod tworzy nowe pliki zawsze, a ma je tworzyć tylko, kiedy ich w ogóle nie ma. Wie ktoś, co zrobić?


spróbuj użyć komendy if not exist Smile

używa się jej tak jak if exist z tym że wykonuje ona kod tylko gdy nie wykryje podanego pliku.
Powrót do góry
Zobacz profil autora
Wyświetl posty z ostatnich:   
Napisz nowy temat   Odpowiedz do tematu    Forum www.maciuchnagames.fora.pl Strona Główna -> Programowanie Wszystkie czasy w strefie EET (Europa)
Strona 1 z 1

 
Skocz do:  
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
BBTech Template by © 2003-04 MDesign
Regulamin