Kezdőoldal » Számítástechnika » Programozás » Free pascal hiba, miért?

Free pascal hiba, miért?

Figyelt kérdés

Sziasztok!

Free Pascalban szeretnék játékot írni.

Röviden a játék: Négyzet alakú táblán megy. (páratlan oldalú) Középső mezőn áll a védekező(gép) és a 4 sarokban 4 támadó. Függőlegesen és vizszintesen lehet lépni és be kell keríteni a védekezőt bizonyos kör alatt. (felváltva lépnek) Az már megvan hogy bekéri a tábla méretet és megrajzolja a kiindulási helyzetet. (O üres mező; X tamado; Y védekező)

Itt a folytatás: (még az elején tartok)



PROCEDURE TOVABBI;

VAR J,X,Y,TAMADO1X,TAMADO1Y,TAMADO2X,TAMADO2Y,TAMADO3X,TAMADO3Y,TAMADO4X,TAMADO4Y,VEDEKEZOX,VEDEKEZOY,O,P,K,L,M,N:INTEGER;

BEGIN

TAMADO1X:=A;

TAMADO1Y:=A;

TAMADO3X:=A;

TAMADO4Y:=A;

TAMADO2X:=1;

TAMADO2Y:=1;

TAMADO3Y:=1;

TAMADO4X:=1;

VEDEKEZOX:=TRUNC(A/2);

VEDEKEZOY:=TRUNC(A/2);

REPEAT

REPEAT

WRITELN('HONNAN AKARSZ LPNI(VIZSZINTES)');

READLN(I);

WRITELN('HONNAN AKARSZ LPNI(FšGG™LEGES)');

READLN(J);

UNTIL ((I=TAMADO1X) AND (J=TAMADO1Y)) OR ((I=TAMADO2X) AND (J=TAMADO2Y)) OR ((I=TAMADO3X) AND (J=TAMADO3Y)) OR ((I=TAMADO4X) AND (J=TAMADO4Y));

WRITELN('HOVA AKARSZ LPNI(VIZSZINTES)');

READLN(X);

WRITELN('HOVA AKARSZ LPNI(FšGG™LEGES)');

READLN(Y);

UNTIL ((X=(I-1)) AND (Y=J)) OR ((X=(I+1)) AND (Y=J)) OR ((X=I) AND (Y=(J+1))) OR ((X=I) AND (Y=(J-1))) AND ((X<>VEDEKEZOX) OR (Y<>VEDEKEZOY)) AND ((I<>TAMADO1X) OR (J<>TAMADO1Y)) AND ((I<>TAMADO2X) OR (J<>TAMADO2Y)) AND ((I<>TAMADO3X) OR (J<TAMADO3Y))

AND ((I<>TAMADO4X) OR (J<>TAMADO4Y));

IF ((X=TAMADO1X) AND (Y=TAMADO1Y))

THEN

BEGIN

TAMADO1X:=X;

TAMADO1Y:=Y;

END ELSE

IF ((X=TAMADO2X) AND (Y=TAMADO2Y))

THEN

BEGIN

TAMADO2X:=X;

TAMADO2Y:=Y;

END ELSE

IF ((X=TAMADO3X) AND (Y=TAMADO3Y))

THEN

BEGIN

TAMADO3X:=X;

TAMADO3Y:=Y;

END ELSE

BEGIN

TAMADO4X:=X;

TAMADO4Y:=Y;

END;

VEDEKEZOX:=VEDEKEZOX+1;

FOR O:=1 TO A DO

BEGIN

FOR P:=1 TO A DO

BEGIN

IF ((O=TAMADO1X) AND (P=TAMADO1Y)) OR ((O=TAMADO2X) AND (P=TAMADO2Y)) OR ((O=TAMADO3X) AND (P=TAMADO3Y)) OR ((O=TAMADO4X) AND (P=TAMADO4Y))

THEN

BEGIN

WRITE('X');

END

ELSE IF ((O=VEDEKEZOX) AND (P=VEDEKEZOY))

THEN

BEGIN

WRITE('Y');

END ELSE

WRITE('O');

END;

WRITELN('');

END;


WRITELN('K™VETKEZ™ K™R!');


REPEAT

REPEAT

WRITELN('HONNAN AKARSZ LPNI(VIZSZINTES)');

READLN(K);

WRITELN('HONNAN AKARSZ LPNI(FšGG™LEGES)');

READLN(L);

UNTIL ((K=TAMADO1X) AND (L=TAMADO1Y)) OR ((K=TAMADO2X) AND (L=TAMADO2Y)) OR ((K=TAMADO3X) AND (L=TAMADO3Y)) OR ((K=TAMADO4X) AND (L=TAMADO4Y));

WRITELN('HOVA AKARSZ LPNI(VIZSZINTES)');

READLN(M);

WRITELN('HOVA AKARSZ LPNI(FšGG™LEGES)');

READLN(N);

UNTIL ((M=(I-1)) AND (N=J)) OR ((M=(I+1)) AND (N=J)) OR ((M=I) AND (N=(J+1))) OR ((M=I) AND (N=(J-1)))!!!!!) AND ((M<>VEDEKEZOX) OR (N<>VEDEKEZOY)) AND ((M<>TAMADO1X) OR (N<>TAMADO1Y)) AND ((M<>TAMADO2X) OR (N<>TAMADO2Y)) AND ((M<>TAMADO3X) OR (N<>TAMADO3Y))

AND ((M<>TAMADO4X) OR (N<>TAMADO4Y));


IF ((M=TAMADO1X) AND (N=TAMADO1Y))

THEN

BEGIN

TAMADO1X:=M;

TAMADO1Y:=N;

END ELSE

IF ((M=TAMADO2X) AND (N=TAMADO2Y))

THEN

BEGIN

TAMADO2X:=M;

TAMADO2Y:=N;

END ELSE

IF ((M=TAMADO3X) AND (N=TAMADO3Y))

THEN

BEGIN

TAMADO3X:=M;

TAMADO3Y:=N;

END ELSE

BEGIN

TAMADO4X:=M;

TAMADO4Y:=N;

END;


VEDEKEZOX:=VEDEKEZOX-1;


FOR O:=1 TO A DO

BEGIN

FOR P:=1 TO A DO

BEGIN

IF (O=TAMADO1X AND P=TAMADO1Y) OR (O=TAMADO2X AND P=TAMADO2Y) OR (O=TAMADO3X AND P=TAMADO3Y) OR (O=TAMADO4X AND P=TAMADO4Y)

THEN

BEGIN

WRITE('X');

END

ELSE IF (O=VEDEKEZOX AND P=VEDEKEZOY)

THEN

BEGIN

WRITE('Y');

END ELSE

WRITE('O');


END;

END;

END;


----


5 !-jelet raktam oda ahol a hibaüzenet: Syntax error ";" expected but ")" found

+ még van egy compilation aborted


2013. ápr. 2. 18:45
 1/7 anonim ***** válasza:
100%
Ugye most csak hülyéskedsz, hogy pár egyértelmű (fordító által is pontosan jelzett) szintaktikai hibát nem tudsz magadtól kijavítani...
2013. ápr. 2. 18:48
Hasznos számodra ez a válasz?
 2/7 A kérdező kommentje:
Igen, igaz már megy, csak az zavart meg hogy mikor átjavitottam ahol a hibát írta akkor 7 másik helyen hibát jelzett... De már megy:)
2013. ápr. 2. 18:55
 3/7 ejbenjaro ***** válasza:
100%

Amúgy érted is, amit csinálsz, vagy csak csinálod? Ez a kód, amit ide bevágtál mondjuk úgy szörnyű.

Szerinted ez például logikus?


IF ((X=TAMADO1X) AND (Y=TAMADO1Y)) THEN

BEGIN

TAMADO1X:=X;

TAMADO1Y:=Y;

END [...]


Ha már a feltétel vizsgálat során kiderült, hogy annyi az értéke, amit vizsgálsz, akkor minek kell ugyan azt az értéket adni a változónak?


Az ide bemásolt eljárásodban van pár ismétlődő kód, azokat miért nem szervezed ki egy külön eljárásba, vagy föggvénybe? Szeretsz mindent 100-szor leírni?

2013. ápr. 2. 20:25
Hasznos számodra ez a válasz?
 4/7 A kérdező kommentje:
csakhogy a játék következő köreiben ugyanezeket a (tamado1x.....vedekzoy változokat) szeretném használni igy a feltételből megtudom hova akar lépni és átrakom.
2013. ápr. 2. 20:56
 5/7 anonim ***** válasza:
Te biztos érted amit mondani akarsz, az a lényeg.
2013. ápr. 2. 21:35
Hasznos számodra ez a válasz?
 6/7 anonim ***** válasza:
Te is üvöltve programozol?
2013. ápr. 3. 00:04
Hasznos számodra ez a válasz?
 7/7 ejbenjaro ***** válasza:

"Kérdező írta: csakhogy a játék következő köreiben ugyanezeket a (tamado1x.....vedekzoy változokat) szeretném használni igy a feltételből megtudom hova akar lépni és átrakom."


Hát pont, hogy nem tudod meg. Ha ugyanis a feltétel (x=Tamado1x) teljesül, akkor a Tamado1X változód értéke már egyenlő az X-el, tehát ugyan ezt az értéket adni neki felesleges. Ha pedig a feltétel nem teljesül, akkor nem adsz neki értéket, tehát értelmetlen az egész.

2013. ápr. 3. 07:44
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!