Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Pascal błąd w programie - gra węża...

Bomba9116 14 Cze 2012 10:13 1252 4
  • #1 14 Cze 2012 10:13
    Bomba9116
    Poziom 15  

    Witam. Mam do zrobienia grę węża w pascalu. Wszystko z programem jest oki tylko mam mału problem z menu. w żaden sposób nie mogę zrobić tego że jak wciskam 1 np. to prędkość węża można zwiększyć, jak 2 to zmniejszyć a jak 3 to wyjść z programu. Bardzo proszę o pomoc. Na dole zamieszczam program. Prosze o nie usuwanie tematu że niby tego wszędzie bo tak na prawdę nie mam twego czego szukam.

    Kod: pascal
    Zaloguj się, aby zobaczyć kod


    Proszę pamiętać o używaniu znaczników syntax. Opcja Listing kodu. Post poprawiłem. [adamas_nt]

    0 4
  • #2 14 Cze 2012 10:40
    viayner
    Poziom 34  

    Witam
    Nie jednoznacznie rozumiem:
    czy w trakcie gry chcesz wplywac na predkosc czy wybor w menu nic nie zmienia ?
    W przypadku 1 trzeba czytanie klawisza umiescic nalezy w glownej petli np.
    CASE klawisz OF
    #72:IF zwrot <> dol THEN zwrot := gora;
    #80:IF zwrot <> gora THEN zwrot := dol;
    #75:IF zwrot <> prawo THEN zwrot := lewo;
    #77:IF zwrot <> lewo THEN zwrot := prawo;
    # ............
    END;
    W przypadku 2 masz blad w odczycie i byc moze w wartosci.
    Read(zmienna) dziala na zasadzie ze wpisujesz wartosc i wciskasz enter, jezeli ma byc bez entera to zastosuj ReadKey i jak powyzej.
    U ciebie jest tak:
    jak nacisne 1 i enter to szybkosc zwiekszy mi sie o 20
    jak nacisne 2 to szybkosc zwiekszy sie o 1
    jak nacisne 3 to nic sie nie powinno dziac
    W obu przypadkach zwiekszasz wartosc szybkosci, moze warosci sa za male/za duze abys poczol roznice, ale w przypadku klawisza 2 moze raczej powinno byc szybkosc:=szybkosc - 20
    opcje 3 mozesz wogole usunac - czyli jak ktos wpisze cos innego niz 1 lub 2 to koniec.
    Pozdrawiam

    0
  • #3 14 Cze 2012 11:00
    Bomba9116
    Poziom 15  

    chciałbym żeby można było regulować przed zagraniem, naciskam 1 zwiększa się prędkość o 20 2 zmniejsza o 20 a jak 3 to wychodzę z gry
    begin
    read(liczba);
    case liczba of
    1: Szybkosc:=Szybkosc + 20; {1}
    2: Szybkosc:=Szybkosc - 20; {2}
    3: ReadKey; {3}
    end;
    tu muszę coś zmienić lecz nie wiem jak. może klawisze powinnem przypisać kodem assci?

    0
  • #4 15 Cze 2012 11:03
    viayner
    Poziom 34  

    Witam,
    nie pamietam czy aby w funkcji case nie treba podac wartosci w "" to znak char a nie liczba w tym wypadku, czyli:
    case liczba of
    "1": Szybkosc:=Szybkosc + 20; {1}
    "2": Szybkosc:=Szybkosc - 20; {2}
    "3": ReadKey; {3}
    A nie bardzo widze deklaracji czym ma byc zmienna liczba, jako char bylo by chyba najlepiej. To co ty robisz jako odczytanie liczby wymaga abys char czy string jaki zwraca funcja READ przeksztalcil za pomoca VAL na liczbe.
    Moze cos w stylu:
    var liczba:char,
    begin
    read(liczba);
    case liczba of
    "1": Szybkosc:=Szybkosc + 20; {1}
    "2": Szybkosc:=Szybkosc - 20; {2}
    "3": exit;
    end;
    W sumie wcisniecie (+enter) czegokolwiek innego niz 1 czy 2 da wyjscie (wlacznie z 3)
    Pamietaj ze Uzywajac READ czy READLN wciskasz 1 lub 2 lub 3 i potwierdzasz ENTERem dopiero to zadziala, jezeli bez entera to uzyj ReadKey w jakiejs petli jak to juz robiles.
    Pozdrawiam

    0
  • #5 15 Cze 2012 12:23
    Dydelmax
    Poziom 35  

    Witam.
    W Pascalu dawno nie pisałem, ale pozwoliłem sobie przerobić kod gry tak, jak Autor tego wymaga, z tym, że menu jest teraz 4-elementowe. Wrzucam kod w załączniku (kod może wygląda nielogicznie, ale działa - sprawdzałem w kompilatorze Free Pascal).
    Pozdrawiam
    PS. Fajnie wyszła Koledze ta gierka :)

    0