home *** CD-ROM | disk | FTP | other *** search
- #include <graphics.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <fcntl.h>
- #include <math.h>
- #include <dos.h>
-
- void initscreen();
- void setpage(int activepage, int visualpage);
- void fireworks(int runs, int eg);
- int atbat();
- int vx, vy, px, py, team, inning, game, screen, stat, hits[2], runs[2],
- innruns[4][2], runner[4], holex[10], holey[10], holer[10], p[16], c[350],
- dirx[4]={2,-2,-2,2}, diry[4]={-1,-1,1,1},
- strtx[4]={316,382,316,250}, strty[4]={214,181,148,181};
- unsigned int x, y, page, prevx[2], prevy[2];
- char ch, *bases, *ball[4], *unball[2], *ballmask[4],
- *unman[4][2], *man[4], *point[4];
- FILE *stream;
-
- main()
- {
- int i, j, graphdriver, graphmode;
-
- registerbgidriver(Herc_driver);
- registerbgidriver(CGA_driver);
- registerbgidriver(EGAVGA_driver);
- if (_argc>1)
- {
- ch=toupper(_argv[1][0]);
- if (ch=='E')
- {
- graphdriver=EGA;
- graphmode=1;
- screen=2;
- }
- if (ch=='H' || ch=='M')
- {
- graphdriver=HERCMONO;
- graphmode=0;
- screen=1;
- }
- if (ch=='C')
- {
- graphdriver=CGA;
- graphmode=4;
- screen=0;
- }
- initgraph(&graphdriver,&graphmode,"");
- if (graphresult()<0)
- screen=3;
- }
- else
- {
- detectgraph(&graphdriver,&graphmode);
- if (graphdriver==EGA)
- {
- graphmode=1;
- screen=2;
- }
- if (graphdriver==CGA)
- {
- graphmode=4;
- screen=0;
- }
- if (graphdriver==HERCMONO)
- {
- graphmode=0;
- screen=1;
- }
- initgraph(&graphdriver,&graphmode,"");
- if (graphresult()<0)
- screen=3;
- }
- if (screen!=3)
- {
- if (screen==0)
- {
- for (i=0; i<350; i++)
- c[i]=((long)i*199)/349;
- }
- else
- for (i=0; i<350; i++)
- c[i]=i;
- if (screen<2)
- for (i=0; i<16; i++)
- p[i]=(i>6)*3;
- else
- for (i=0; i<16; i++)
- p[i]=i;
- initscreen();
- stat=peekb(0x40,0x17);
- do
- {
- randomize();
- i=atbat();
- setpage(0,0);
- if (i)
- {
- setcolor(p[10]);
- outtextxy(276,c[20],"END OF GAME");
- }
- setcolor(p[15]);
- outtextxy(252,c[55],"PLAY AGAIN (Y/N)?");
- ch=0;
- do
- {
- if (i)
- fireworks(1+random(4),1);
- if (kbhit())
- ch=toupper(getch());
- } while (ch!='N' && ch!='Y');
- } while (ch=='Y');
- pokeb(0x40,0x17,stat);
- restorecrtmode();
- closegraph();
- }
- }
-
- char *alloc(unsigned int size)
- {
- char *buffer;
-
- buffer=malloc(size);
- if (buffer==NULL)
- {
- printf("Out of memory./n/nPress any key to continue.");
- getch();
- exit(1);
- }
- return buffer;
- }
-
- void setpage(int activepage, int visualpage)
- {
- if (screen>0)
- {
- if (activepage!=-1)
- setactivepage(activepage);
- if (visualpage!=-1)
- setvisualpage(visualpage);
- }
- }
-
- void scorehit()
- {
- int tx, ty;
- char hitstr[4];
-
- if (game)
- {
- itoa(hits[team],hitstr,10);
- tx=232+(3-strlen(hitstr)<<3);
- ty=c[324+14*team];
- setpage(!page,-1);
- setfillstyle(1,p[1]);
- bar(232,ty,232+23,ty+7);
- setcolor(p[15]);
- outtextxy(tx,ty,hitstr);
- setpage(page,-1);
- bar(232,ty,232+23,ty+7);
- outtextxy(tx,ty,hitstr);
- setfillstyle(1,p[0]);
- }
- }
-
- void scorerun()
- {
- int tx, tx1, tx2, ty;
- char runstr[4], innrunstr[4];
-
- if (game)
- {
- itoa(runs[team],runstr,10);
- itoa(innruns[inning][team],innrunstr,10);
- tx1=72+(inning<<5);
- tx2=tx1+(3-strlen(innrunstr)<<3);
- tx=200+(3-strlen(runstr)<<3);
- ty=c[324+14*team];
- setpage(!page,-1);
- setfillstyle(1,p[1]);
- bar(tx1,ty,tx1+23,ty+7);
- bar(200,ty,223,ty+7);
- setcolor(p[15]);
- outtextxy(tx2,ty,innrunstr);
- outtextxy(tx,ty,runstr);
- setpage(page,-1);
- bar(tx1,ty,tx1+23,ty+7);
- bar(200,ty,223,ty+7);
- outtextxy(tx2,ty,innrunstr);
- outtextxy(tx,ty,runstr);
- setfillstyle(1,p[0]);
- }
- }
-
- void erascore()
- {
- int i;
- char ch;
-
- for (i=1; i>-1; i--)
- {
- setpage(i,-1);
- setfillstyle(1,p[2]);
- bar(254,c[20],252+135,c[20]+7);
- bar(252,c[55],252+135,c[55]+7);
- setfillstyle(1,p[1]);
- bar(64,c[324],64+135,c[324]+7);
- bar(64,c[338],64+135,c[338]+7);
- bar(120,c[324],120+135,c[324]+7);
- bar(120,c[338],120+135,c[338]+7);
- bar(572,c[324],572+135,c[324]+7);
- bar(572,c[338],572+135,c[338]+7);
- }
- setcolor(p[15]);
- outtextxy(261,c[55],"PRACTICE (Y/N)?");
- do
- {
- ch=toupper(getch());
- } while (ch!='N' && ch!='Y');
- setfillstyle(1,p[2]);
- bar(252,c[55],252+136,c[55]+7);
- game=(ch=='N');
- setfillstyle(1,p[0]);
- }
-
- double batrad(int deg)
- {
- return (3.14159*(90+deg)/180);
- }
-
- int ballhit(int angle)
- {
- int deg, diff;
-
- if (y<320*64)
- {
- deg=(180*atan2((double)(320*64-y-4*64),(double)(x+5*85-295*85)))/3.14159;
- deg+=deg;
- }
- else
- {
- deg=(180*atan2((double)(y+4*64-320*64),(double)(x+5*85-295*85)))/3.14159;
- deg=-deg-deg;
- }
- diff=abs(deg-angle);
- if (diff<20)
- return(1);
- if (diff<40)
- return(2);
- return(0);
- }
-
- int getsign()
- {
- do
- {
- if (game)
- {
- pokeb(0x40,0x17,stat|32);
- ch=getch();
- }
- else
- if (kbhit())
- ch=getch();
- else
- ch='1'+random(9);
- switch (ch)
- {
- case '1' : vy=468; vx=-18; break;
- case '2' : vy=468; vx=0; break;
- case '3' : vy=468; vx=18; break;
- case '4' : vy=340; vx=-18; break;
- case '5' : vy=340; vx=0; break;
- case '6' : vy=340; vx=18; break;
- case '7' : vy=212; vx=-18; break;
- case '8' : vy=212; vx=0; break;
- case '9' : vy=212; vx=18; break;
- case 27 : return(0);
- }
- } while (vy==0);
- vy-=random(40);
- vx-=random(3);
- return(1);
- }
-
- int pitch0()
- {
- int i, angle, pangle, swing, hit;
- double rad;
- char ch;
-
- setcolor(p[0]);
- pieslice(295,c[320],45,0,45);
- pieslice(295,c[320],315,360,45);
- setlinestyle(0,0xFFFF,1);
- pangle=pangle=angle=-55;
- setcolor(p[7]);
- prevx[0]=315; prevy[0]=c[188];
- getimage(prevx[0],prevy[0],prevx[0]+11,prevy[0]+9,unball[0]);
- pieslice(295,c[320],angle,angle+1,44);
- swing=0;
- hit=0;
- x=((px=315)*85);
- y=((py=190)<<6);
- vy=0;
- if (!getsign())
- return(0);
- do
- {
- putimage(prevx[0],prevy[0],unball[0],0);
- prevx[0]=px; prevy[0]=c[py];
- if (swing==1)
- {
- setcolor(p[0]);
- pieslice(295,c[320],pangle,pangle+1,44);
- setcolor(p[7]);
- pieslice(295,c[320],angle,angle+1,44);
- pangle=angle;
- if ((angle+=10)>40)
- swing=2;
- }
- getimage(px,c[py],px+11,c[py]+9,unball[0]);
- putimage(px,c[py],ballmask[0],3);
- putimage(px,c[py],ball[0],2);
- if (swing!=1)
- delay(20);
- i=ballhit(pangle);
- if (i!=0 && !hit)
- {
- setcolor(p[1]);
- rad=batrad(pangle+(2-i)*5+random(5)-2);
- vx=385*cos(rad);
- vy=-(250+(vy>>3))*sin(rad);
- hit=1;
- if (swing==0)
- swing=3;
- }
- if (kbhit() && swing<1)
- swing=getch()==' ';
- if (swing==2)
- {
- putimage(prevx[0],prevy[0],unball[0],0);
- setcolor(p[0]);
- pieslice(295,c[320],pangle,pangle+1,44);
- setcolor(p[7]);
- pieslice(295,c[320],pangle,pangle+1,44);
- getimage(prevx[0],prevy[0],prevx[0]+11,prevy[0]+9,unball[0]);
- swing=3;
- }
- px=((x+=vx)/85);
- py=((y+=vy)>>6);
- } while (swing<3 || !hit);
- return(1);
- }
-
- int pitch12()
- {
- int i, angle, pangle[2], swing, hit;
- double rad;
- char ch;
-
- setcolor(p[0]);
- for (page=0; page<2; page++)
- {
- setpage(page,-1);
- pieslice(295,c[320],45,0,45);
- pieslice(295,c[320],315,360,45);
- }
- setlinestyle(0,0xFFFF,3);
- pangle[0]=pangle[1]=angle=-55;
- setcolor(p[7]);
- for (page=0; page<2; page++)
- {
- prevx[page]=315; prevy[page]=c[188-!page-!page];
- getimage(prevx[page],prevy[page],prevx[page]+11,prevy[page]+9,unball[page]);
- setpage(page,-1);
- pieslice(295,c[320],angle,angle+1,44);
- }
- page=1;
- swing=0;
- hit=0;
- x=((px=315)*85);
- y=((py=190)<<6);
- vy=0;
- if (!getsign())
- return(0);
- do
- {
- putimage(prevx[page],prevy[page],unball[page],0);
- prevx[page]=px; prevy[page]=c[py];
- if (swing==1)
- {
- setcolor(p[0]);
- pieslice(295,c[320],pangle[page],pangle[page]+1,44);
- setcolor(p[7]);
- pieslice(295,c[320],angle,angle+1,44);
- pangle[page]=angle;
- if ((angle+=10)>40)
- swing=2;
- }
- else
- delay(14);
- getimage(px,c[py],px+11,c[py]+9,unball[page]);
- putimage(px,c[py],ballmask[0],3);
- putimage(px,c[py],ball[0],2);
- i=ballhit(pangle[page]);
- if (i!=0 && !hit)
- {
- setcolor(p[1]);
- rad=batrad(pangle[page]+(2-i)*5+random(5)-2);
- vx=385*cos(rad);
- vy=-(250+(vy>>3))*sin(rad);
- hit=1;
- if (swing==0)
- swing=3;
- }
- setpage(!page,page);
- page=!page;
- if (kbhit() && swing<1)
- swing=getch()==' ';
- if (swing==2)
- {
- putimage(prevx[page],prevy[page],unball[page],0);
- setcolor(p[0]);
- pieslice(295,c[320],pangle[page],pangle[page]+1,44);
- setcolor(p[7]);
- pieslice(295,c[320],pangle[!page],pangle[!page]+1,44);
- getimage(prevx[page],prevy[page],prevx[page]+11,prevy[page]+9,unball[page]);
- swing=3;
- }
- else
- delay(2);
- px=((x+=vx)/85);
- py=((y+=vy)>>6);
- } while (swing<3 || !hit);
- return(1);
- }
-
- int pitch()
- {
- if (screen==0)
- return(pitch0());
- else
- return(pitch12());
- }
-
- void fireworks(int runs, int eg)
- {
- int
- i, j, k, p, sprd, cx[4], cy[4], ddrcx[4][10][50], ddrcy[4][10][50],
- ci[4]={0,1,2,3};
-
- setpage(0,0);
- if (eg)
- {
- p=random(10)+1;
- for (i=0; i<4; i++)
- {
- cx[i]=random(241)+200;
- cy[i]=random(150)+70;
- }
- }
- else
- {
- p=10;
- switch(runs)
- {
- case 1 : cx[0]=320; cy[0]=90; break;
- case 2 : cx[0]=200; cy[0]=cy[1]=100; cx[1]=440; break;
- case 3 : cx[0]=200; cy[0]=cy[2]=110; cx[1]=320; cy[1]=90; cx[2]=440;
- break;
- case 4 : cx[0]=200; cy[0]=cy[3]=110; cx[1]=280; cy[1]=cy[2]=90;
- cx[2]=360; cx[3]=440; break;
- }
- }
- for (i=0; i<4; i++)
- ci[i]=random(4);
- for (i=0; i<10; i++)
- {
- sprd=(i+1)*(random(5)+5);
- for (k=0; k<runs; k++)
- for (j=0; j<50; j++)
- {
- ddrcx[k][i][j]=abs(random(sprd)*((random(2)<<1)-1)+cx[k]);
- ddrcy[k][i][j]=abs(random(sprd)*((random(2)<<1)-1)+cy[k]);
- if (ddrcx[k][i][j]>638)
- ddrcx[k][i][j]=1276-ddrcx[k][i][j];
- if (ddrcy[k][i][j]>347)
- ddrcy[k][i][j]=694-ddrcy[k][i][j];
- }
- }
- for (j=0; j<50; j++)
- for (k=0; k<runs; k++)
- putimage(ddrcx[k][0][j],c[ddrcy[k][0][j]],point[ci[k]],1);
- for (i=1; i<p; i++)
- {
- if (eg && kbhit())
- break;
- for (j=0; j<50; j++)
- for (k=0; k<runs; k++)
- {
- putimage(ddrcx[k][i-1][j],c[ddrcy[k][i-1][j]],point[ci[k]],1);
- putimage(ddrcx[k][i][j],c[ddrcy[k][i][j]],point[ci[k]],1);
- }
- }
- for (j=0; j<50; j++)
- for (k=0; k<runs; k++)
- putimage(ddrcx[k][i-1][j],c[ddrcy[k][i-1][j]],point[ci[k]],1);
- }
-
- void runbases12(int bases)
- {
- int i, j, k, x, y;
-
- runner[0]=1;
- setpage(1,-1);
- getimage(strtx[0]+2,c[strty[0]]-1,strtx[0]+7,c[strty[0]]+6,unman[0][1]);
- setpage(0,-1);
- getimage(strtx[0],c[strty[0]],strtx[0]+5,c[strty[0]]+7,unman[0][0]);
- for (k=0; k<bases; k++)
- {
- page=0;
- setpage(1,1);
- for (j=1; j<4; j++)
- if (runner[j])
- putimage(strtx[j],c[strty[j]],unman[j][0],0);
- setpage(0,-1);
- for (i=2; i<34; i++)
- {
- for (j=0; j<4; j++)
- if (runner[j])
- {
- x=strtx[j]+i*dirx[j];
- y=strty[j]+i*diry[j];
- putimage(x-(dirx[j]<<1),c[y-(diry[j]<<1)],unman[j][page],0);
- getimage(x,c[y],x+5,c[y]+7,unman[j][page]);
- putimage(x,c[y],man[j],((screen==2)<<1)+1);
- }
- setpage(!page,page);
- page=!page;
- delay(10);
- if (bases==4)
- delay(18);
- }
- if (runner[3])
- {
- x=strtx[0]; y=strty[0];
- putimage(x-dirx[3],c[y-diry[3]],unman[3][0],0);
- setpage(1,-1);
- putimage(x,c[y],unman[3][1],0);
- innruns[inning][team]++;
- runs[team]++;
- scorerun();
- }
- for (j=3; j>0; j--)
- runner[j]=runner[j-1];
- runner[0]=0;
- for (j=3; j>0; j--)
- if (runner[j])
- {
- x=strtx[j]; y=strty[j];
- setpage(0,-1);
- putimage(x-dirx[j-1],c[y-diry[j-1]],unman[j-1][0],0);
- getimage(x,c[y],x+5,c[y]+7,unman[j][0]);
- putimage(x,c[y],man[j],((screen==2)<<1)+1);
- setpage(1,-1);
- putimage(x,c[y],unman[j-1][1],0);
- getimage(x+dirx[j],c[y+diry[j]],x+5+dirx[j],c[y+diry[j]]+7,unman[j][1]);
- putimage(x,c[y],man[j],((screen==2)<<1)+1);
- }
- }
- }
-
- void runbases0(int bases)
- {
- int i, j, k, x, y;
-
- runner[0]=1;
- getimage(strtx[0],c[strty[0]],strtx[0]+5,c[strty[0]]+7,unman[0][0]);
- for (k=0; k<bases; k++)
- {
- for (j=1; j<4; j++)
- if (runner[j])
- putimage(strtx[j],c[strty[j]],unman[j][0],0);
- for (i=1; i<34; i++)
- {
- for (j=0; j<4; j++)
- if (runner[j])
- {
- x=strtx[j]+i*dirx[j];
- y=strty[j]+i*diry[j];
- putimage(x-dirx[j],c[y-diry[j]],unman[j][0],0);
- getimage(x,c[y],x+5,c[y]+7,unman[j][0]);
- putimage(x,c[y],man[j],1);
- }
- delay(7);
- if (bases==4)
- delay(14);
- }
- if (runner[3])
- {
- x=strtx[0]; y=strty[0];
- putimage(x,c[y],unman[3][0],0);
- innruns[inning][team]++;
- runs[team]++;
- scorerun();
- }
- for (j=3; j>0; j--)
- runner[j]=runner[j-1];
- runner[0]=0;
- for (j=3; j>0; j--)
- if (runner[j])
- {
- x=strtx[j]; y=strty[j];
- putimage(x,c[y],unman[j-1][0],0);
- getimage(x,c[y],x+5,c[y]+7,unman[j][0]);
- putimage(x,c[y],man[j],1);
- }
- }
- }
-
- int hit()
- {
- int i, j, k, q, ballindex, hole;
- long dx, dy, dist;
-
- ballindex=0;
- hole=5;
- do
- {
- putimage(prevx[page],prevy[page],unball[page],0);
- prevx[page]=px; prevy[page]=c[py];
- getimage(px,c[py],px+11,c[py]+9,unball[page]);
- if (ballindex<4)
- {
- putimage(px,c[py],ballmask[ballindex],3);
- putimage(px,c[py],ball[ballindex],2);
- }
- setpage(!page,page);
- if (screen !=0)
- page=!page;
- if (px<104 || px>525)
- vx=-vx;
- if (py<309)
- {
- j=px+5>>1;
- if (px>356 && 494-j-py<5)
- {
- i=-(vx/85<<6);
- vx=-(vy>>6)*85;
- vy=i-(i>>5);
- vx-=(vx>>6);
- vx-=48;
- y-=32;
- }
- if (px<284 && 174+j-py<5)
- {
- i=(vx/85<<6);
- vx=(vy>>6)*85;
- vy=i-(i>>5);
- vx-=(vx>>6);
- vx+=48;
- y-=32;
- }
- }
- k=(px>320)*5;
- for (i=k; i<k+5; i++)
- {
- dx=holex[i]-px-5;
- dy=holey[i]-py-4;
- dist=dx*dx+dy*dy;
- j=holer[i]*holer[i];
- if (dist<j)
- {
- q=(dx>=0);
- vx+=(25-abs(dx))*(q+q-1);
- q=(dy>=0);
- vy+=(((25-abs(dy))*(q+q-1)*85)>>6);
- }
- if (dist<j-500)
- {
- ballindex++;
- vx>>=2;
- vy>>=2;
- hole=i%5;
- }
- }
- if (py<12)
- {
- ballindex++;
- vy=-128;
- hole=-1;
- }
- px=((x+=vx)/85)+ballindex;
- py=((y+=vy)>>6)+ballindex;
- if (ballindex==0)
- vy+=2;
- delay(10);
- } while (ballindex<4 && py<345);
- setcolor(p[0]);
- for (i=1; i>-1; i--)
- {
- setpage(i,-1);
- putimage(prevx[i],prevy[i],unball[i],0);
- pieslice(295,c[320],45,0,45);
- pieslice(295,c[320],315,360,45);
- }
- if (hole<3)
- {
- if (hole==-1)
- {
- hole=3;
- i=1+runner[1]+runner[2]+runner[3];
- }
- if (game)
- {
- if (screen==0)
- runbases0(hole+1);
- else
- runbases12(hole+1);
- hits[team]++;
- scorehit();
- if (hole==3)
- fireworks(i,0);
- }
- }
- else
- hole=4;
- setpage(-1,0);
- if (hole<4)
- return(1);
- if (py>344)
- return(0);
- return(-1);
- }
-
- void printchar(int x, int y, char ch)
- {
- int i;
- char osch[2]={0,0};
-
- if (game)
- {
- for (i=0; i<2; i++)
- {
- setpage(i,-1);
- osch[0]=ch;
- setfillstyle(1,p[1]);
- bar(x,y,x+7,y+7);
- setcolor(p[15]);
- outtextxy(x,y,osch);
- }
- setfillstyle(1,p[0]);
- }
- }
-
- int atbat()
- {
- int i, j, esc, out, strike, over;
-
- erascore();
- for (i=0; i<4; i++)
- for (j=0; j<2; j++)
- innruns[i][j]=0;
- for (team=0; team<2; team++)
- {
- runs[team]=hits[team]=0;
- }
- inning=team=over=0;
- do
- {
- for (i=0; i<2; i++)
- {
- setpage(1-i,-1);
- putimage(233,c[140],bases,0);
- }
- for (i=0; i<4; i++)
- runner[i]=0;
- out=strike=0;
- scorerun();
- scorehit();
- printchar(572,c[324],out+48);
- printchar(572,c[338],strike+48);
- printchar(64,c[324],32+10*!team);
- printchar(64,c[338],32+10*team);
- do
- {
- if (team && inning>1 && runs[1]>runs[0])
- break;
- while (!pitch())
- {
- setpage(-1,page);
- setcolor(p[15]);
- outtextxy(276,c[55],"QUIT (Y/N)?");
- do
- {
- ch=toupper(getch());
- } while (ch!='N' && ch!='Y');
- setfillstyle(1,p[2]);
- bar(276,c[55],276+87,c[55]+7);
- setfillstyle(1,p[0]);
- if (ch=='Y')
- return(0);
- setpage(-1,!page);
- }
- i=hit();
- if (i==0)
- {
- printchar(572,c[338],++strike+48);
- if (strike==3)
- {
- printchar(572,c[324],++out+48);
- printchar(572,c[338],(strike=0)+48);
- }
- }
- else
- {
- if (i==-1)
- printchar(572,c[324],++out+48);
- printchar(572,c[338],(strike=0)+48);
- }
- } while (out<3);
- if (game && team && inning<3)
- inning++;
- if (team && inning>2 && runs[0]!=runs[1])
- over=1;
- if (inning>2 && runs[1]>runs[0])
- over=1;
- team=!team;
- } while (!over);
- return(1);
- }
-
- char *readimage()
- {
- int size;
- char *image;
-
- fread(&size,1,2,stream);
- image=alloc(size);
- fread(image,1,size,stream);
- return image;
- }
-
- void printcenter(int cx, int cy, char *str)
- {
- outtextxy(cx-(textwidth(str)>>1)+1,cy-(textheight(str)>>1)+1,str);
- }
-
- void hole(int cx, int cy, int r, char *str, int num)
- {
- setcolor(p[10]);
- setfillstyle(1,p[0]);
- circle(cx,c[cy],r);
- floodfill(cx,c[cy],p[10]);
- setcolor(p[7]);
- printcenter(cx,c[cy],str);
- holex[num]=cx;
- holey[num]=cy;
- holer[num]=2+r;
- }
-
- void holesym(int cx, int cy, int r, char *str, int num)
- {
- hole(cx,cy,r,str,num);
- hole(640-cx,cy,r,str,num+5);
- }
-
- void initscreen()
- {
- int
- i, j,
- fieldpts[14]={102,1,538,1,538,231,360,320,280,320,102,231,102,1},
- hrpts[8]={102,1,538,1,538,12,102,12},
- scrnpts[8]={0,0,639,0,639,349,0,349};
- char *buffer;
-
- for (i=1; i<12; i+=2)
- fieldpts[i]=c[fieldpts[i]];
- for (i=1; i<8; i+=2)
- {
- hrpts[i]=c[hrpts[i]];
- scrnpts[i]=c[scrnpts[i]];
- }
- if (screen!=0)
- {
- setcolor(p[1]);
- setfillstyle(1,p[1]);
- fillpoly(4,scrnpts);
- setcolor(p[9]);
- setfillstyle(1,p[2]);
- fillpoly(6,fieldpts);
- setfillstyle(1,p[4]);
- fillpoly(4,hrpts);
- }
- else
- {
- setcolor(p[9]);
- drawpoly(8,fieldpts);
- drawpoly(4,hrpts);
- }
- setcolor(p[1]);
- line(fieldpts[6],fieldpts[7],fieldpts[8],fieldpts[9]);
- setcolor(p[0]);
- printcenter(322,c[7],"H O M E R U N");
- setcolor(p[14]);
- printcenter(320,c[6],"H O M E R U N");
- holesym(208,90,26,"1B",0);
- holesym(230,40,24,"2B",1);
- holesym(140,40,24,"3B",2);
- holesym(285,90,30,"OUT",3);
- holesym(165,130,26,"OUT",4);
- setcolor(p[15]);
- outtextxy(80,c[310]," 1 2 3 X R H");
- outtextxy(8,c[324],"VISITOR");
- outtextxy(8,c[338],"HOME");
- outtextxy(500,c[324],"OUTS");
- outtextxy(500,c[338],"STRIKES");
- if (screen==2)
- {
- stream=fopen("bb.dat","rb");
- if (stream==NULL)
- {
- printf("File 'BB.DAT' not found./n/nPress any key to continue.");
- getch();
- exit(1);
- }
- bases=readimage();
- putimage(233,c[140],bases,0);
- ball[0]=readimage();
- ballmask[0]=readimage();
- ball[1]=readimage();
- ballmask[1]=readimage();
- ball[2]=readimage();
- ballmask[2]=readimage();
- ball[3]=readimage();
- ballmask[3]=readimage();
- man[0]=readimage();
- man[3]=man[0];
- man[1]=readimage();
- man[2]=man[1];
- fclose(stream);
- }
- else
- {
- for (i=0; i<4; i++)
- {
- line(strtx[i],c[strty[i]]+6,strtx[(i+1)%4],c[strty[(i+1)%4]]+6);
- setfillstyle(1,p[7]);
- circle(5,3,5-i);
- floodfill(5,3,p[7]);
- ball[i]=alloc(imagesize(0,0,10-(i<<1),6));
- ballmask[i]=alloc(imagesize(0,0,10-(i<<1),6));
- getimage(i,i,10-i,6,ball[i]);
- putimage(i,i,ball[i],4);
- getimage(i,i,10-i,6,ballmask[i]);
- setfillstyle(1,p[0]);
- bar(0,0,10,6);
- }
- bases=alloc(imagesize(233,c[140],399,c[222]));
- getimage(233,c[140],399,c[222],bases);
- line(0,0,1,0);
- line(0,1,1,1);
- line(0,0,0,7);
- line(0,3,5,7);
- line(0,4,5,2);
- man[0]=alloc(imagesize(0,0,5,7));
- getimage(0,0,5,7,man[0]);
- bar(0,0,5,7);
- man[3]=man[0];
- line(5,0,4,0);
- line(5,1,4,1);
- line(5,0,5,7);
- line(5,3,0,7);
- line(5,4,0,2);
- man[1]=alloc(imagesize(0,0,5,7));
- getimage(0,0,5,7,man[1]);
- man[2]=man[1];
- bar(0,0,5,7);
- }
- for (i=0; i<4; i++)
- {
- switch(i)
- {
- case 0 : j=8; break;
- case 1 : j=11; break;
- case 2 : j=12; break;
- case 3 : j=14; break;
- }
- putpixel(0,0,p[j]);
- point[i]=alloc(imagesize(0,0,1,1));
- getimage(0,0,1,1,point[i]);
- putpixel(0,0,p[1]);
- }
- if (screen!=0)
- {
- buffer=alloc(imagesize(0,0,639,88));
- for (i=0; i<4; i++)
- {
- j=i*87;
- setpage(0,-1);
- getimage(0,j,639,j+88,buffer);
- setpage(1,-1);
- putimage(0,j,buffer,0);
- }
- free(buffer);
- }
- for (i=0; i<2; i++)
- {
- unball[i]=alloc(imagesize(0,0,11,9));
- for (j=0; j<4; j++)
- unman[j][i]=alloc(imagesize(0,0,5,7));
- }
- setfillstyle(1,p[0]);
- }