tennis_sss.tap
tennis_sss.z80
Zeichensatz UTF-8+Z1013()+CTRL()-ohne Umlaute(äöüß)

   10!PRG.-TENNIS
   20 WINDOW:CLS:WINDOW 23,23,39,39:PRINT AT(23,39);CHR$(32)
   30!FELDBEGRENZUNG
   40 A$=STRING$(40,""):PRINT AT(3,0);A$:PRINT AT(22,0);A$   
   50!SCHLAEGER SETZEN
   60 AL=-4638:BL=-4598:AR=-4603:BR=-4563
   70 POKE AL,181:POKE BL,181:POKE AR,180:POKE BR,180
   80!KOPF
   90 XR=0:XL=0:PRINT AT(1,3);"PUNKTE: ":PRINT AT(1,28);"PUNKTE: "
  100 PRINT AT(1,9);XR:PRINT AT(1,36);XL
  110!BALL-ANFANG
  120 BZ=INT(RND(1)*16)+5:BA=-5120+BZ*40: BW=INT(RND(1)*3-1)*40
  130 ZG=BA+BW+1
  140 IF ZG=-4679 OR ZG=-4639 OR ZG=-4599 OR ZG=-4559 THEN 120
  150!BALLBEWEGUNG
  160 P1=0:P2=39:P3=1
  170 FOR D=P1 TO P2 STEP P3
  180 POKE BA,207
  190 IF BZ=4 OR BZ=21 THEN BW=-1*BW
  205 A$=CHR$(PEEK(36))
  210 IF P3=1 THEN 230:ELSE 250
  230 IF A$="?"AND AR<>-4923 THEN POKE BR,32:BR=AR:AR=AR-40:POKE AR,180:GOTO 280
  240 IF A$="="AND BR<>-4243 THEN POKE AR,32:AR=BR:BR=BR+40:POKE BR,180:GOTO 280
  245 GOTO 280
  250 IF A$="A"AND AL<>-4958 THEN POKE BL,32:BL=AL:AL=AL-40:POKE AL,181:GOTO 280
  260 IF A$="Y"AND BL<>-4278 THEN POKE AL,32:AL=BL:BL=BL+40:POKE BL,181:GOTO 280
  280 IF(D=0 AND P3=-1)OR(D=39 AND P3=1)THEN 410
  285 IF D=3 OR D=36 THEN 300
  290 PRINT AT(1,9);XL:PRINT AT(1,36);XR:IF XL=20 OR XR=20 THEN END
  295 POKE BA,32:BZ=BZ+BW/40:BA=BA+BW+P3:NEXT D
  300 IF BA+1+BW=AR OR BA+1+BW=BR THEN 310 ELSE 350
  310 IF P3=1 THEN 320 ELSE 350
  320 POKE BA,32:P1=36:P2=0:P3=-1:GOSUB 400 :GOTO 170
  350 IF BA-1+BW=AL OR BA-1+BW=BL THEN 360 ELSE 390
  360 IF P3=-1 THEN 370 ELSE 390
  370 POKE BA,32:P1=3:P2=39:P3=1:GOSUB 400:GOTO 170
  390 GOTO 290
  400 BW=INT(RND(1)*3-1)*40:RETURN
  410 IF D=0 THEN 420:ELSE 450
  420 XR=XR+1:P1=36:P2=0:P3=-1:GOSUB 400:POKE BA,32: BA=AR-1:BZ=(5120+BA-36)/40
  430 GOTO 170
  450 XL=XL+1:P1=3:P2=39:P3=1:GOSUB 400:POKE BA,32:BA=AL+1:BZ=(5120+BA-3)/40  
  460 GOTO 170