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 - Program nie działa jak należy

nówka 26 Mar 2014 21:51 876 4
  • #1 26 Mar 2014 21:51
    nówka
    Poziom 5  

    Niby prosty program:

    Kod: pascal
    Zaloguj się, aby zobaczyć kod

    Nie wiem czemu nie działa jak należy. Zadaniem programu jest przesuwanie białej kropki ekranie za pomocą klawiszy

    0 4
  • #3 27 Mar 2014 13:36
    nówka
    Poziom 5  

    Kod napisałem sam, a link nie chce sie włączyć

    0
  • #4 27 Mar 2014 16:27
    rufek90
    Poziom 24  

    Link jest na pewno dobry, ale w tej chwili nie działa całe coderscity.pl spróbuj za jakiś czas. Pewnie znajdziesz tam odpowiedź na swoje pytanie.

    Edit: na przyszłość: jak piszesz, że twój kod nie działa, to najlepiej napisać, co nie działa... Czy się nie kompiluje, czy działanie programu jest inne niż założenia, czy co...

    0
  • #5 31 Mar 2014 16:38
    Paweł Es.
    Pomocny dla użytkowników

    Przeważnie jak piszesz znak spacji na ekranie (Write(' ')) to na ekranie nic się nie dzieje :)
    Spróbuj wpisać jakiś znak na ekran, np. Write('.')

    Dodatkowo po modyfikacji danej zmiennej dobrze jest sprawdzić czy nie wychodzi ona poza zakres czyli trzeba dopisać:

    if y<1 then y=1 (lyb y=24 gdy chcesz zapętlić ekran, tj wychodzisz z lewej wracasz z prawej)
    if y>24 then y=24 (lub y=1, opis jak wyżej tyle, że z prawej do lewej)

    i podobnie dla x (tylko zakres jest inny)

    Co do kasowania poprzedniej pozycji przy zmianie pozycji, to lepiej kasować tylko dany znak zamiast całego ekranu, bo to zwykle widać jako miganie.

    Czyli:

    przed zmianą x i y robisz coś takiego:

    xp :=x
    yp :=y

    ; Tu fragment zmiany x lub y

    a potem

    if x<>xp or y<>yp then
    begin {modyfikacja stanu ekranu jeżeli zmieniła się któraś współrzędna}
    GotoXy(xp,yp);
    Write(' '); {skasowanie znaku w poprzednim miejscu}
    GotoXY(x,y);
    Write('.'); {wpisanie znaku na nowej pozycji}
    end;


    Bardziej rozwijając program można np. zapamiętać znak pod nową pozycją twojego znaku i odtwarzać go po przesunięciu, wtedy zamiast spacji pod xp,yp wpisujesz znak pobrany z ekranu z pozycji x,y (przed wpisaniem tam znaku)

    0
  Szukaj w 5mln produktów