'----------------------------------------- ' ANTIQUE TENNIS V1.00 ' copyright © 1996 by Testaware '----------------------------------------- ' programming by Volker Stepprath 26-06-96 ' used AMOS Professional V2.0 & APCmp V2.0 '----------------------------------------- Amos To Front Global XBAL$,XPLA,XPLB,XXSP,XYSP,XSND XSND=1 : XPLA=1 : XPLB=3 : XXSP=6 : XYSP=8 Do Proc _MAKEFIEL Proc _MAKEAMAL Proc _STARTGAM Loop Procedure _MAKEFIEL Screen Open 0,320,246,2,Lowres Screen Display 0,,,,245 Hide Curs Off Palette $56F,$FFF Colour Back Colour(0) View If Length(1)=False Bar 0,0 To 7,40 Get Bob 1,0,0 To 7,40 Get Bob 2,0,0 To 7,7 Hot Spot 1,$11 Hot Spot 2,$11 Bob Off Cls 0 End If Gosub A Proc _ZF[10,0,4,8,1,"ANTIQUE TENNIS"] Proc _ZF[8,43,1,2,1,"programming by Volker Stepprath © 1996 by Testaware"] Proc _ZF[0,90,2,2,1,"F1 : Player 1 = "+A$] Proc _ZF[0,110,2,2,1,"F2 : Player 2 = "+B$] Proc _ZF[0,130,2,2,1,"F3 : X-Speed ="+Str$(XXSP)] Proc _ZF[0,150,2,2,1,"F4 : Y-Speed ="+Str$(XYSP)] Proc _ZF[0,170,2,2,1,"F5 : FX Sound = "+C$] Proc _ZF[0,220,1,1,1,"press fire or space bar to start game,escape to quit !"] A=Scancode Repeat A$=Inkey$ : A=Scancode : Clear Key If A=69 Then End If A>79 and A<85 Cls 0,170,90+(A-80)*20 To 320,105+(A-80)*20 If A=80 Add XPLA,1,0 To 5 : Gosub A Else If A=81 Add XPLB,1,0 To 5 : Gosub A : A$=B$ Else If A=82 Add XXSP,1,1 To 20 : A$=Str$(XXSP)-" " Else If A=83 Add XYSP,1,1 To 20 : A$=Str$(XYSP)-" " Else If A=84 Add XSND,1,0 To 1 : Gosub A : A$=C$ End If Proc _ZF[171,90+(A-80)*20,2,2,1,A$] End If Until A=64 or Fire(0)+Fire(1) Cls 0 Bar 159,0 To 160,244 Draw 0,0 To 320,0 Draw 0,244 To 320,244 Double Buffer Limit Mouse Wait Vbl Pop Proc A: If XPLA<2 A$="Joystick"+Str$(XPLA) Else If XPLA=2 A$="Mouse" Else If XPLA=3 A$="Computer" Else If XPLA>3 A$="Computer "+Chr$(130+XPLA) End If If XPLB<2 B$="Joystick"+Str$(XPLB) Else If XPLB=2 B$="Mouse" Else If XPLB=3 B$="Computer" Else If XPLB>3 B$="Computer "+Chr$(130+XPLB) End If If XSND C$="On" Else C$="Off" End If Return End Proc Procedure _STARTGAM A: Bob 3,164,122,2 Autoback 1 Proc _ZF[65,96,8,10,1,Str$(XPA)-" "] Proc _ZF[215,96,8,10,1,Str$(XPB)-" "] Proc _WAITPRES If XPA=9 or XPB=9 Amal Off Bob Off Wait Vbl Cls 0 Proc _ZF[5,95,7,10,1,"GAME"] Proc _ZF[165,95,7,10,1,"OVER"] Proc _WAITPRES Cls 0 Pop Proc End If Cls 0,65,96 To 105,146 Cls 0,215,96 To 255,146 Autoback 2 'Wenn nur CPU dann keinen geraden `Anstoß` Randomize Timer A=Rnd(7)+1 If A=1 or A=5 Then Inc A Amreg(0)=A Amal 3,XBAL$ Amal On Wait Vbl Do Exit If Inkey$=Chr$(27) If Bob Col(3) A=Col(-1) Amal Off 3 Y1=Y Bob(A) Y2=Y Bob(3) If A=1 Bob 3,15,Y2,2 Else Bob 3,313,Y2,2 End If If Y1>Y2 If Y1-Y2>9 If A=1 : C=2 Else C=8 : End If Else If A=1 : C=3 Else C=7 : End If End If Else If Y19 If A=1 : C=4 Else C=6 : End If Else If A=1 : C=3 Else C=7 : End If End If Else Y1=Y2 If A=1 : C=3 Else C=7 : End If End If 'Wenn nur CPU dann keinen geraden `Return` If XPLA>2 and XPLB>2 If C=3 or C=7 If Rnd(1) : Inc C Else Dec C : End If End If End If Amreg(0)=C Amal 3,XBAL$ Amal On 3 If XSND Sam Raw 1,Start(10),Length(10),21000 End If End If 'Testen ob `Punkt` erzielt X=X Bob(3) If XX Bob(2)+5 Amal Off 3 Amal Freeze : Inc XPA : Goto A End If Loop End Proc Procedure _MAKEAMAL Channel 1 To Bob 1 Channel 2 To Bob 2 Channel 3 To Bob 3 Bob 1,8,122,1 If XPLA<2 A$="L:IJ"+Str$(XPLA)+"&1JA;IJ"+Str$(XPLA)+"&2JB;JL;" A$=A$+"A:IY>30JCJL;" A$=A$+"B:IY<220JDJL;" A$=A$+"C:M0,-10,1;JL;" A$=A$+"D:M0,10,1;JL;" Else If XPLA=2 A$="L:LRD=YM-42;IRD<20JL;IRD>224JL;LY=RD;P;JL;" Else If XPLA>2 A=(XPLA-2)*3 A$="L:IRB<140JAJL;" A$=A$+"A:IY>RCJB;IY20JD;JL;D:LY=Y-"+Str$(A)+";JL;" A$=A$+"C:IY<225JE;JL;E:LY=Y+"+Str$(A)+";JL;" End If Amal 1,A$ Bob 2,320,122,1 If XPLB<2 A$="L:IJ"+Str$(XPLB)+"&1JA;IJ"+Str$(XPLB)+"&2JB;JL;" A$=A$+"A:IY>30JCJL;" A$=A$+"B:IY<220JDJL;" A$=A$+"C:M0,-10,1;JL;" A$=A$+"D:M0,10,1;JL;" Else If XPLB=2 A$="L:LRD=YM-42;IRD<20JL;IRD>224JL;LY=RD;P;JL;" Else If XPLB>2 A=(XPLB-2)*3 A$="L:IRB>180JAJL;" A$=A$+"A:IY>RCJB;IY20JD;JL;D:LY=Y-"+Str$(A)+";JL;" A$=A$+"C:IY<225JE;JL;E:LY=Y+"+Str$(A)+";JL;" End If Amal 2,A$ Bob 3,164,123,2 X$=Str$(XXSP)-" " Y$=Str$(XYSP)-" " A$=" IRA=1JD;" A$=A$+"IRA=2JE;" A$=A$+"IRA=3JA;" A$=A$+"IRA=8JH;" A$=A$+"IRA=5JC;" A$=A$+"IRA=6JF;" A$=A$+"IRA=7JB;" A$=A$+"IRA=4JG;" A$=A$+"L:LX=X+RX;LY=Y+RY;P;LRB=X;LRC=Y;" A$=A$+"IX< -35JA;" A$=A$+"IX>335JB;" A$=A$+"IY< 5JC;" A$=A$+"IY>240JD;" A$=A$+"JL;" A$=A$+"A:LRX= "+X$+";LRY=0;JL;" : Rem * Rechts A$=A$+"B:LRX=-"+X$+";LRY=0;JL;" : Rem * Links A$=A$+"C:LRY= "+Y$+";JL;" : Rem * Runter A$=A$+"D:LRY=-"+Y$+";JL;" : Rem * Hoch A$=A$+"E:LRX= "+X$+";LRY=-"+Y$+";JL;" : Rem * Diagonal Rechts Hoch A$=A$+"F:LRX=-"+X$+";LRY= "+Y$+";JL;" : Rem * Diagonal Links Runter A$=A$+"G:LRX= "+X$+";LRY= "+Y$+";JL;" : Rem * Diagonal Rechts Runter A$=A$+"H:LRX=-"+X$+";LRY=-"+Y$+";JL;" : Rem * Diagonal Links Hoch XBAL$=A$ Amal 3,A$ End Proc Procedure _WAITPRES Clear Key Wait 10 If XPLA>2 and XPLB>2 Wait 60 Else Do Exit If Fire(0)+Fire(1)+Mouse Key+Asc(Inkey$) Multi Wait Loop End If Clear Key End Proc Procedure _ZF[X,Y,ZX,ZY,C,N$] For N=0 To Len(N$)-1 A=Leek(Start(11)+Peek(Varptr(N$)+N)*4) If A B=X+N*5*ZX For I=0 To 5 For I2=0 To 4 If Btst(I2+I*5,A) Cls C,B+I2*ZX,Y+I*ZY To B+I2*ZX+ZX,Y+I*ZY+ZY End If Next Next Inc X End If Next End Proc