Free pascal hiba, miért?
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 LPNI(VIZSZINTES)');
READLN(I);
WRITELN('HONNAN AKARSZ LPNI(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 LPNI(VIZSZINTES)');
READLN(X);
WRITELN('HOVA AKARSZ LPNI(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 LPNI(VIZSZINTES)');
READLN(K);
WRITELN('HONNAN AKARSZ LPNI(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 LPNI(VIZSZINTES)');
READLN(M);
WRITELN('HOVA AKARSZ LPNI(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
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?
"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.
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
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!