Originally posted by aperson
Edit: found it...
Code:
#include<conio.h>
#include<iostream.h>
#include<dos.h>
#include<mem.h>
#include<stdlib.h>
#include<math.h>
//---------------------------------
//video
unsigned char *vga = (unsigned char *) MK_FP(0xA000, 0);
void setTEXT(){
_AX= 0x0003;
geninterrupt(0x10);
}
void setMCGA(){
_AX = 0x0013;
geninterrupt (0x10);
}
void MEMPutpixel (int x, int y, unsigned char Col)
{
memset(vga+x+(y*320),Col,1);
}
//video
//------------------------------
void menu();
void igmenu();
void drawball();
void drawpaddle1(int);
void drawpaddle2(int);
void drawtable();
/*void drawscore(int , int);
void d1(int , int);
void d2(int , int);
void d3(int , int);
void d4(int , int);
void d5(int , int);
void d6(int , int);
void d7(int , int);
void d8(int , int);
void d9(int , int);
void d0(int , int);
*/
void hitproj();
void supar();
void calcbpos();
int color , speed , bx=160 , by=100 , p1y=100 , p2y=100 , quit=0 , dir=-1;
int proj=1;
float tempx=160 , tempy=100;
////////////////////////////////////////////////////////////////////////////////
//MAIN//////////////////////////////////////////////////////////////////////////
void main()
{
int key=72;
menu();
setMCGA();
drawtable();
drawpaddle1(2);
drawpaddle2(2);
while(bx!=8&&bx!=312)
{
drawball();
if(kbhit())
{
key = getch();
}
switch(key)
{
case 72:p2y-=3; drawpaddle2(1); break;
case 80:p2y+=3; drawpaddle2(0); break;
case 97:p1y-=3; drawpaddle1(1); break;
case 122:p1y+=3; drawpaddle1(0); setTEXT();cout<<"aaa"; break;
case 27:igmenu();
}
hitproj();
delay(4*speed);
calcbpos();
}
getch();
}
//END MAIN//////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////
void menu()
{
cout<<"Color 1 - 16...";
cin>>color;
color-=1;
cout<<"\n\nSpeed 1-4 (4 = slow)...";
cin>>speed;
}
void supar()
{
int c=0 , x=160 , y=100 , vect=0 , colo=10 , key;
randomize();
while(key != 27)
{
switch(vect)
{
case 0: x=x+1; break;
case 1: y=y-1; break;
case 2: x=x-1; break;
case 3: y=y+1; break;
}
if(c==0)colo=10;
if(c==30000)colo=0;
MEMPutpixel(x,y,colo);
c++;
switch(random(7))
{
case 0: vect=random(4);
}
if(kbhit())key = getch();
}
}
void igmenu()
{
int ch;
setTEXT();
cout<<"1: Continue\n";
cout<<"2: Quit\n";
cout<<"666: FOR A SUPAR TIME\n\n";
cin>>ch;
if(ch==2)exit(0);
setMCGA();
if(ch==666)supar();
drawtable();
drawpaddle1(2);
drawpaddle2(2);
}
void drawball()
{
MEMPutpixel(bx,by,color);
}
void drawpaddle1(int ud)
{
int e;
if(p1y>32&&p1y<154)for(e=0 ; e<16 ; e++){MEMPutpixel(16,(p1y+e),color);}
if(ud==1&&p1y>32&&p1y<154)
{
MEMPutpixel(16,p1y+17,0);
MEMPutpixel(16,p1y+18,0);
MEMPutpixel(16,p1y+19,0);
}
if(ud==0&&p1y>32&&p1y<154)
{
MEMPutpixel(16,p1y-1,0);
MEMPutpixel(16,p1y-2,0);
MEMPutpixel(16,p1y-3,0);
}
}
void drawpaddle2(int ud)
{
int e;
if(p2y>32&&p2y<154)for(e=0 ; e<16 ; e++){MEMPutpixel(304,(p2y+e),color);}
if(ud==1 && p2y>32 && p2y<154)
{
MEMPutpixel(304,p2y+17,0);
MEMPutpixel(304,p2y+18,0);
MEMPutpixel(304,p2y+19,0);
}
if(ud==0&&p2y>32&&p2y<154)
{
MEMPutpixel(304,p2y-1,0);
MEMPutpixel(304,p2y-2,0);
MEMPutpixel(304,p2y-3,0);
}
}
void drawtable()
{
for(int y=32 ; y<168 ; y++){MEMPutpixel(8,y,color); MEMPutpixel(312,y,color);}
for(int x=8 ; x<312 ; x++){MEMPutpixel(x,32,color); MEMPutpixel(x,168,color);}
}
void hitproj()
{
// | add 2
// | add 2
// | add 2
// | add 1
// | add 1
// | add .5
// | add .5
// | add 0
// | add 0
// | sub .5
// | sub .5
// | sub 1
// | sub 1
// | sub 2
// | sub 2
// | sub 2
//dir <- = -1 1 = ->
//when hit, ball changes direction and slope to the opposites
if(by == 33||by == 167)proj = -proj;
if(bx == 17&&dir == -1)
switch(by-p1y)
{
case 0:
case 1:
case 2:dir=1; proj+=2; break;
case 3:
case 4:dir=1; proj+=1; break;
case 5:
case 6:dir=1; proj+=.5; break;
case 7:
case 8:dir=1; break;
case 9:
case 10:dir=1; proj-=.5; break;
case 11:
case 12:dir=1; proj-=1; break;
case 13:
case 14:
case 15:dir=1; proj-=2; break;
}
if(bx == 303&&dir == 1)
switch(by-p2y)
{
case 0:
case 1:
case 2:dir=-1; proj+=2; break;
case 3:
case 4:dir=-1; proj+=1; break;
case 5:
case 6:dir=-1; proj+=.5; break;
case 7:
case 8:dir=-1; break;
case 9:
case 10:dir=-1; proj-=.5; break;
case 11:
case 12:dir=-1; proj-=1; break;
case 13:
case 14:
case 15:dir=-1; proj-=2; break;
}
}
void calcbpos()
{
if(dir == 1)
{
if(proj==1){bx++;by--;}
else{bx++;by++;}
}
else
{
if(proj==1){bx--;by++;}
else{bx--;by--;}
}
MEMPutpixel(100,100,14);
/*if(dir == 1)
{
if(proj>0)
{
if(proj>=1)
{tempx+=1/proj;tempy-=1;}
else {tempx+=1;tempy-=1/proj;}
}
if(proj<0)
{
if(proj<=-1)
{tempx+=1/proj;tempy+=1;}
else {tempx+=1;tempy+=1/proj;}
}
if(proj==0)tempx+=1;
}
if(dir == -1)
{
if(proj>0)
{
if(proj>=1)
{tempx-=1/proj;tempy+=1;}
else {tempx-=1;tempy+=1/proj;}
}
if(proj<0)
{
if(proj<=-1)
{tempx-=1/proj;tempy-=1;}
else {tempx-=1;tempy-=1/proj;}
}
if(proj==0)tempx--;
}
bx=tempx;
by=tempy;
*/
}





Comment