Silverware wrote: ↑Wed Jun 12, 2019 5:22 pm
IronDuke wrote: ↑Wed Jun 12, 2019 5:20 pm
it can't possible be messier than Silver's code
Yes, it can. You haven't seen other peoples code. Mine... is relatively tidy.
Those of you with weak constitutions may wish to avert your eyes from the chthonic horror that is the Super Star Trek code written in PL/I as I last updated it in 1985:
Code: Select all
ROMULN: PROC(E);
IF RX=0 THEN RX=1;
IF RY=0 THEN RY=1;
H=(1000+500*RND)/SQRT((S1-RX)**2+(S2-RY)**2);
IF C$='DOCKED' THEN DO;
PUT EDIT('STARBASE SHIELDS PROTECT ',N$,' FROM ROMULAN')
(COL(1),A,A,A); GOTO MOVER; END;
IF Z$='UP' THEN DO; A9=A9-H;
IF A9>0 THEN DO;
PUT EDIT('SHIELDS PROTECT ',N$,' FROM ROMULAN')(COL(1),A,A,A);
GOTO MOVER; END;
H=-A9; Z$='DOWN';
PUT SKIP LIST('ROMULAN ATTACK CRASHES SHIELDS'); END;
E=E-H;PUT EDIT(H,' HIT ON ',N$,' FROM ROMULAN AT SECTOR ',RX,'-',RY)
(COL(1),F(6,1),A,A,A,F(2),A,F(2));
IF E<=0 THEN DO; P4=10; CALL #11950; GOTO #6930; END;
IF E<=100 THEN DO; P4=11; CALL #11950; END;
/* MOVE ROMULAN AT RANDOM */
MOVER: PUT EDIT('ROMULAN AT ',RX,'-',RY,' MOVES.') (COL(1),A,F(2),A,F(
2),A);
Q(RX,RY)=0; RW=.3*RND+.1; RD=360*RND;
RX1=-COS(RD/57.296); RY1=SIN(RD/57.296);
DO I=1 TO TRUNC(RW*10.05); RX=RX+RX1; RY=RY+RY1;
IF Q(TRUNC(RX+.5),TRUNC(RY+.5))¬=0 THEN GOTO HOLDIT;
END;
ROMSTP: RX=TRUNC(RX+.5) RY=(TRUNC(RY+.5); GOTO ROMOVE;
HOLDIT: RX=RX-RX1; RY=RY=RY1; GOTO ROMSTP;
ROMOVE: Q(RX,RY)=7; RD=45*TRUNC(RD/45+.5);
PUT SKIP LIST('SENSORS INDICATE ROMULAN IS MOVING APPROXIMATELY');
PUT EDIT('ON COURSE ',RD,' AT WARP ',RW)
(COL(1),A,F(3),A,F(3,1));
RETURN; END;
And that's a relatively sane section. There's no way Silver's code -- or Josh's -- is this bad.
...yay?