<div class='codetop'>CODE</div><div class='codemain' style='height:200px;white-space
re;overflow:auto'>//paul Jun 9 2002
//My second version of pong. Includes 4 players and small amount of options
#include<graphics.h>
#include<iomanip.h>
#include<conio.h>
#include"c:\tc\int9.h"
enum Direction{UP,DOWN,LEFT,RIGHT,UPRIGHT,UPLEFT,DOWNRIGHT,DOWNLEFT};
enum MenuS{SCREEN1,SCREEN2,SCREEN3,SCREEN4,SCREEN5,
SCREEN6,SCREEN7,SCREEN8,SCREEN9,SCREEN10,SCREEN11,
SCREEN12,BEGIN,EXIT,INSTRUCTIONS,GAMESPEED,BALLCOLOR,
PAUSED,GAMEOVER,SETLIVES,PLAYER1LIVE,PLAYER2LIVE,PLAYER3LIVE,PLAYER4LIVE};
MenuS View=SCREEN1;
struct PlayerType//player 1 settings control Speed of game and ball color
{
int Color;
int Control;
int Speed;
int BColor;
int Points;
};
void StartGfx();
void Menu(PlayerType&player1);
void Options();
void CPC(PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4);
void CPCYN();
void BallColor();
void GameSpeed();
void ChoosePaddleColors(PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4);
void ColorList();
void Instructions();
void Pause();
void SetLives();
void PlayerLivesMenu(PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4);
void Intro(PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4);
void Ball(int&x,int&y,int&r,int&c);
void MoveBall(int&x,int&y,int&r,Direction&dir);
void Border(int&x,int&y,int&r,Direction&dir,PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4);
void TopPaddle(int&x1,int&x2,int&x,int&y,int&r,int&color,int&control,Direction&dir,int&ran);
void BottomPaddle(int&x1,int&x2,int&x,int&y,int&r,int&color,int&control,Direction&dir,int&ran);
void LeftPaddle(int&y1,int&y2,int&y,int&x,int&r,int&color,int&control,Direction&dir,int&ran);
void RightPaddle(int&y1,int&y2,int&y,int&x,int&r,int&color,int&control,Direction&dir,int&ran);
void main()
{
StartGfx();
install_kb();
Direction dir=DOWNLEFT;
//////////////////////////////////////////
int bx=320,by=150,br=10;//MoveBall Data///
//////////////////////////////////////////
//////////////////////////////////////////
int pxt1=300,pxt2=360;////TopPaddle Data//
//////////////////////////////////////////
int pxb1=200,pxb2=260;//BottomPaddle Data/
//////////////////////////////////////////
int pyl1=200,pyl2=260;//LeftPaddle////////
//////////////////////////////////////////
int pyr1=50,pyr2=110;//RightPaddle///////
//////////////////////////////////////////
int ran;//random paddle directions.//doesnt work right , yet...
PlayerType player1,player2,player3,player4;
struct PlayerType p1={1,1,1,15,2};player1=p1;
struct PlayerType p2={2,0,10,15,2};player2=p2;
struct PlayerType p3={3,0,10,15,2};player3=p3;
struct PlayerType p4={4,0,10,15,2};player4=p4;
Intro(player1,player2,player3,player4);
do
{
ran=rand()%2;
Ball(bx,by,br,BLACK);
MoveBall(bx,by,br,dir);
Ball(bx,by,br,player1.BColor);
Border(bx,by,br,dir,player1,player2,player3,player4);
TopPaddle(pxt1,pxt2,bx,by,br,player2.Color,player2.Control,dir,ran);
BottomPaddle(pxb1,pxb2,bx,by,br,player1.Color,player1.Control,dir,ran);
LeftPaddle(pyl1,pyl2,by,bx,br,player3.Color,player3.Control,dir,ran);
RightPaddle(pyr1,pyr2,by,bx,br,player4.Color,player4.Control,dir,ran);
delay(player1.Speed);
if(keys[KEY_ESC])
{
clearviewport();
View=SCREEN1;
Intro(player1,player2,player3,player4);
}
if(View==EXIT)
{
uninstall_kb();
abort();
}
if(player1.Points<=0)
{
View=GAMEOVER;
}
if(player2.Points<=0)
{
View=GAMEOVER;
}
if(player3.Points<=0)
{
View=GAMEOVER;
}
if(player4.Points<=0)
{
View=GAMEOVER;
}
if(View==GAMEOVER&&player1.Points<=0)
{
clearviewport();
do
{
settextstyle(1,0,4);
outtextxy(10,50,"GAMEOVER");
outtextxy( 10,100,"PLAYER 1 LOST, THE REST OF YOU WIN!");
outtextxy( 10,150,"PRESS ESC RETURN TO MAIN MENU.");
if(keys[KEY_ESC])
{
bx=getmaxx()/2;by=getmaxy()/2;
player1.Points=2;
player2.Points=2;
player3.Points=2;
player4.Points=2;
clearviewport();
View=SCREEN1;
Intro(player1,player2,player3,player4);
}
}while(View==GAMEOVER);
}
if(View==GAMEOVER&&player2.Points<=0)
{
clearviewport();
do
{
settextstyle(1,0,4);
outtextxy( 10,50,"GAMEOVER");
outtextxy( 10,100,"PLAYER 2 LOST, THE REST OF YOU WIN!");
outtextxy( 10,150,"PRESS ESC RETURN TO MAIN MENU.");
if(keys[KEY_ESC])
{
bx=getmaxx()/2;by=getmaxy()/2;
player1.Points=2;
player2.Points=2;
player3.Points=2;
player4.Points=2;
clearviewport();
View=SCREEN1;
Intro(player1,player2,player3,player4);
}
}while(View==GAMEOVER);
}
if(View==GAMEOVER&&player3.Points<=0)
{
clearviewport();
do
{
settextstyle(1,0,4);
outtextxy( 10,50,"GAMEOVER");
outtextxy( 10,100,"PLAYER 3 LOST, THE REST OF YOU WIN!");
outtextxy( 10,150,"PRESS ESC RETURN TO MAIN MENU.");
if(keys[KEY_ESC])
{
bx=getmaxx()/2;by=getmaxy()/2;
player1.Points=2;
player2.Points=2;
player3.Points=2;
player4.Points=2;
clearviewport();
View=SCREEN1;
Intro(player1,player2,player3,player4);
}
}while(View==GAMEOVER);
}
if(View==GAMEOVER&&player4.Points<=0)
{
clearviewport();
do
{
settextstyle(1,0,4);
outtextxy( 10,50,"GAMEOVER");
outtextxy( 10,100,"PLAYER 4 LOST, THE REST OF YOU WIN!");
outtextxy( 10,150,"PRESS ESC RETURN TO MAIN MENU.");
if(keys[KEY_ESC])
{
bx=getmaxx()/2;by=getmaxy()/2;
player1.Points=2;
player2.Points=2;
player3.Points=2;
player4.Points=2;
clearviewport();
View=SCREEN1;
Intro(player1,player2,player3,player4);
}
}while(View==GAMEOVER);
}
if(keys[KEY_P])
{
delay(100);
clearviewport();
View=PAUSED;
do
{
settextstyle(1,0,4);
outtextxy(260,75,"GAME");
outtextxy(250,100,"PAUSED");
settextstyle(3,0,2);
outtextxy(150,150,"PRESS ENTER TO RETURN TO GAME.");
gotoxy(5,15);cout<<"Player 1 Lives:"<<player1.Points<<setw(5)<<
" Player 2 Lives:"<<player2.Points<<setw(5)<<" Player 3 Lives:"<<
player3.Points<<setw(5)<<" Player 4 Lives:"<<player4.Points;
if(keys[KEY_ENTER])
{
clearviewport();
View=BEGIN;
}
}while(View==PAUSED);
}
}
while(View==BEGIN);
uninstall_kb();
}
void StartGfx()
{
int gd=DETECT;
int gm=DETECT;
initgraph(&gd,&gm,"c:\\tc\\bgi");
}
void Menu(PlayerType&player1)
{
rectangle(0,0,getmaxx(),getmaxy());
settextstyle(10,0,4);
outtextxy(225,25,"4-PONG");
settextstyle(1,0,1);
outtextxy(225,100,"By: Paul Adcock 2002");
settextstyle(2,0,6);
outtextxy(225,150,"1)Start Game");
outtextxy(225,175,"2)Player Options");
outtextxy(225,200,"3)Instructions");
outtextxy(225,225,"4)Exit");
Ball(375,330,10,player1.BColor);
setcolor(15);
if(player1.Speed==1)
{
outtextxy(225,325,"GAME SPEED 1");
}
if(player1.Speed==2)
{
outtextxy(225,325,"GAME SPEED 2");
}
if(player1.Speed==3)
{
outtextxy(225,325,"GAME SPEED 3");
}
if(player1.Speed==4)
{
outtextxy(225,325,"GAME SPEED 4");
}
if(player1.Speed==5)
{
outtextxy(225,325,"GAME SPEED 5");
}
if(player1.Speed==6)
{
outtextxy(225,325,"GAME SPEED 6");
}
if(player1.Speed==7)
{
outtextxy(225,325,"GAME SPEED 7");
}
if(player1.Speed==8)
{
outtextxy(225,325,"GAME SPEED 8");
}
if(player1.Speed==9)
{
outtextxy(225,325,"GAME SPEED 9");
}
}
void Options()
{
rectangle(0,0,getmaxx(),getmaxy());
settextstyle(10,0,4);
outtextxy(225,25,"4-PONG");
settextstyle(1,0,1);
outtextxy(225,100,"OPTIONS");
settextstyle(2,0,6);
outtextxy(225,150,"1)Choose Paddle Colors");
outtextxy(225,175,"2)Choose Player Control Type");
outtextxy(225,200,"3)Game Speed");
outtextxy(225,225,"4)Ball Color");
outtextxy(225,250,"5)Set Player Lives");
outtextxy(225,275,"6)Back to Main Menu");
}
void CPC(PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4)
{
rectangle(0,0,getmaxx(),getmaxy());
settextstyle(10,0,4);
outtextxy(225,25,"4-PONG");
settextstyle(1,0,1);
outtextxy(225,100,"PLAYER CONTROL MENU");
settextstyle(2,0,6);
setcolor(player1.Color);
outtextxy(225,150,"1)Player 1");
setcolor(player2.Color);
outtextxy(225,175,"2)Player 2");
setcolor(player3.Color);
outtextxy(225,200,"3)Player 3");
setcolor(player4.Color);
outtextxy(225,225,"4)Player 4");
setcolor(15);
outtextxy(225,250,"5)Back to Options");
if(player1.Control==0)
outtextxy(325,150,"Computer");
if(player1.Control==1)
outtextxy(325,150,"Human");
if(player2.Control==0)
outtextxy(325,175,"Computer");
if(player2.Control==1)
outtextxy(325,175,"Human");
if(player3.Control==0)
outtextxy(325,200,"Computer");
if(player3.Control==1)
outtextxy(325,200,"Human");
if(player4.Control==0)
outtextxy(325,225,"Computer");
if(player4.Control==1)
outtextxy(325,225,"Human");
}
void PlayerLivesMenu(PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4)
{
rectangle(0,0,getmaxx(),getmaxy());
settextstyle(10,0,4);
outtextxy(225,25,"4-PONG");
settextstyle(1,0,1);
outtextxy(225,100,"SET PLAYER LIVES");
settextstyle(2,0,6);
setcolor(player1.Color);
outtextxy(225,150,"1)Player 1");
setcolor(player2.Color);
outtextxy(225,175,"2)Player 2");
setcolor(player3.Color);
outtextxy(225,200,"3)Player 3");
setcolor(player4.Color);
outtextxy(225,225,"4)Player 4");
setcolor(15);
outtextxy(225,250,"5)Back to Options");
if(player1.Control==0)
outtextxy(325,150,"Computer");
if(player1.Control==1)
outtextxy(325,150,"Human");
if(player2.Control==0)
outtextxy(325,175,"Computer");
if(player2.Control==1)
outtextxy(325,175,"Human");
if(player3.Control==0)
outtextxy(325,200,"Computer");
if(player3.Control==1)
outtextxy(325,200,"Human");
if(player4.Control==0)
outtextxy(325,225,"Computer");
if(player4.Control==1)
outtextxy(325,225,"Human");
}
void BallColor()
{
ColorList();
setcolor(15);
outtextxy(100,375,"Set ball color by pressing 1-E");
}
void SetLives()
{
outtextxy(50,325,"How many lives would you like this player to have? 1-9");
}
void CPCYN()
{
outtextxy(50,325,"Do you want this player to be controled by a human? Y/N");
}
void GameSpeed()
{
outtextxy(50,325,"Set game speed by pressing 1-9, 9 being the slowest.");
}
void Instructions()
{
rectangle(0,0,getmaxx(),getmaxy());
settextstyle(10,0,4);
outtextxy(225,25,"4-PONG");
settextstyle(1,0,1);
outtextxy(225,100,"Instructions");
settextstyle(2,0,6);
outtextxy(100,150,"Player 1 Controls:LEFT KEY & RIGHT KEY");
outtextxy(100,175,"Player 2 Controls:0(Ins) & .(Del)");
outtextxy(100,200,"Player 3 Controls:<, & >.");
outtextxy(100,225,"Player 4 Controls:Z & X");
outtextxy(100,275,"ALL PLAYERS CAN BE COMPUTER CONTROLED");
outtextxy(100,300,"AND GAME CAN BE PAUSED BY PRESSING P ANYTIME.");
outtextxy(100,325,"PRESSING ESC IN GAME WILL RETURN TO MAIN MENU");
outtextxy(100,400,"PRESS ENTER TO RETURN TO OPTIONS SCREEN.");
}
void ChoosePaddleColors(PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4)
{
rectangle(0,0,getmaxx(),getmaxy());
settextstyle(10,0,4);
outtextxy(225,25,"4-PONG");
settextstyle(1,0,1);
outtextxy(225,100,"PADDLE COLOR MENU");
settextstyle(2,0,6);
setcolor(player1.Color);
outtextxy(225,150,"1)Player 1");
setcolor(player2.Color);
outtextxy(225,175,"2)Player 2");
setcolor(player3.Color);
outtextxy(225,200,"3)Player 3");
setcolor(player4.Color);
outtextxy(225,225,"4)Player 4");
setcolor(15);
outtextxy(225,250,"5)Back to Options");
if(player1.Control==0)
outtextxy(325,150,"Computer");
if(player1.Control==1)
outtextxy(325,150,"Human");
if(player2.Control==0)
outtextxy(325,175,"Computer");
if(player2.Control==1)
outtextxy(325,175,"Human");
if(player3.Control==0)
outtextxy(325,200,"Computer");
if(player3.Control==1)
outtextxy(325,200,"Human");
if(player4.Control==0)
outtextxy(325,225,"Computer");
if(player4.Control==1)
outtextxy(325,225,"Human");
}
void ColorList()
{
settextstyle(1,0,4);
setcolor(1);
outtextxy(100,325,"1,");
setcolor(2);
outtextxy(120,325,"2,");
setcolor(3);
outtextxy(140,325,"3,");
setcolor(4);
outtextxy(160,325,"4,");
setcolor(5);
outtextxy(180,325,"5,");
setcolor(6);
outtextxy(200,325,"6,");
setcolor(7);
outtextxy(220,325,"7,");
setcolor(8);
outtextxy(240,325,"8,");
setcolor(9);
outtextxy(260,325,"9,");
setcolor(10);
outtextxy(280,325,"A,");
setcolor(11);
outtextxy(300,325,"B,");
setcolor(12);
outtextxy(320,325,"C,");
setcolor(13);
outtextxy(340,325,"D,");
setcolor(14);
outtextxy(360,325,"E");
settextstyle(2,0,4);
setcolor(15);
outtextxy(100,400,"Note:Choosing another players color will result in your color changing.");
outtextxy(100,425,"this goes for the ball color as well.");
}
void Intro(PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4)
{
do
{//start loop bracket
if(View==SCREEN1)
{
Menu(player1);
if(keys[KEY_1])
{
clearviewport();
View=BEGIN;
}
if(keys[KEY_2])
{
clearviewport();
View=SCREEN2;
}
if(keys[KEY_3])
{
clearviewport();
View=INSTRUCTIONS;
}
if(keys[KEY_4])
{
View=EXIT;
}
}
if(View==INSTRUCTIONS)
{
delay(100);
do
{
Instructions();
if(keys[KEY_ENTER])
{
clearviewport();
View=SCREEN1;
}
}while(View==INSTRUCTIONS);
}
if(View==SCREEN2)
{
delay(100);
do
{
Options();
if(keys[KEY_1])
{
clearviewport();
View=SCREEN3;
}
if(keys[KEY_2])
{
clearviewport();
View=SCREEN8;
}
if(keys[KEY_3])
{
clearviewport();
View=GAMESPEED;
}
if(keys[KEY_4])
{
View=BALLCOLOR;
}
if(keys[KEY_5])
{
clearviewport();
View=SETLIVES;
}
if(keys[KEY_6])
{
clearviewport();
View=SCREEN1;
}
}while(View==SCREEN2);
}
if(View==SETLIVES)
{
delay(100);
PlayerLivesMenu(player1,player2,player3,player4);
do
{
if(keys[KEY_1])
{
clearviewport();
View=PLAYER1LIVE;
}
if(keys[KEY_2])
{
clearviewport();
View=PLAYER2LIVE;
}
if(keys[KEY_3])
{
clearviewport();
View=PLAYER3LIVE;
}
if(keys[KEY_4])
{
clearviewport();
View=PLAYER4LIVE;
}
if(keys[KEY_5])
{
clearviewport();
View=SCREEN2;
}
}while(View==SETLIVES);
}
if(View==PLAYER1LIVE)
{
delay(100);
SetLives();
do
{
if(keys[KEY_1])
{
player1.Points=1;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_2])
{
player1.Points=2;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_3])
{
player1.Points=3;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_4])
{
player1.Points=4;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_5])
{
player1.Points=5;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_6])
{
player1.Points=6;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_7])
{
player1.Points=7;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_8])
{
player1.Points=8;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_9])
{
player1.Points=9;
clearviewport();
View=SETLIVES;
}
}while(View==PLAYER1LIVE);
}
if(View==PLAYER2LIVE)
{
delay(100);
SetLives();
do
{
if(keys[KEY_1])
{
player2.Points=1;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_2])
{
player2.Points=2;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_3])
{
player2.Points=3;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_4])
{
player2.Points=4;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_5])
{
player2.Points=5;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_6])
{
player2.Points=6;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_7])
{
player2.Points=7;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_8])
{
player2.Points=8;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_9])
{
player2.Points=9;
clearviewport();
View=SETLIVES;
}
}while(View==PLAYER2LIVE);
}
if(View==PLAYER3LIVE)
{
delay(100);
SetLives();
do
{
if(keys[KEY_1])
{
player3.Points=1;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_2])
{
player3.Points=2;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_3])
{
player3.Points=3;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_4])
{
player3.Points=4;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_5])
{
player3.Points=5;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_6])
{
player3.Points=6;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_7])
{
player3.Points=7;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_8])
{
player3.Points=8;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_9])
{
player3.Points=9;
clearviewport();
View=SETLIVES;
}
}while(View==PLAYER3LIVE);
}
if(View==PLAYER4LIVE)
{
delay(100);
SetLives();
do
{
if(keys[KEY_1])
{
player4.Points=1;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_2])
{
player4.Points=2;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_3])
{
player4.Points=3;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_4])
{
player4.Points=4;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_5])
{
player4.Points=5;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_6])
{
player4.Points=6;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_7])
{
player4.Points=7;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_8])
{
player4.Points=8;
clearviewport();
View=SETLIVES;
}
if(keys[KEY_9])
{
player4.Points=9;
clearviewport();
View=SETLIVES;
}
}while(View==PLAYER4LIVE);
}
if(View==BALLCOLOR)
{
delay(100);
do
{
BallColor();
if(keys[KEY_1])
{
player1.BColor=1;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_2])
{
player1.BColor=2;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_3])
{
player1.BColor=3;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_4])
{
player1.BColor=4;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_5])
{
player1.BColor=5;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_6])
{
player1.BColor=6;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_7])
{
player1.BColor=7;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_8])
{
player1.BColor=8;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_9])
{
player1.BColor=9;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_A])
{
player1.BColor=10;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_B])
{
player1.BColor=11;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_C])
{
player1.BColor=12;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_D])
{
player1.BColor=13;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_E])
{
player1.BColor=14;
clearviewport();
View=SCREEN2;
}
if(player1.BColor==player1.Color)
{
player1.BColor++;
}
if(player1.BColor==player2.Color)
{
player1.BColor++;
}
if(player1.BColor==player3.Color)
{
player1.BColor++;
}
if(player1.BColor==player4.Color)
{
player1.BColor++;
}
if(player1.BColor==0)
{
player1.BColor++;
}
}while(View==BALLCOLOR);
}
if(View==GAMESPEED)
{
delay(100);
do
{
GameSpeed();
if(keys[KEY_1])
{
player1.Speed=1;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_2])
{
player1.Speed=2;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_3])
{
player1.Speed=3;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_4])
{
player1.Speed=4;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_5])
{
player1.Speed=5;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_6])
{
player1.Speed=6;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_7])
{
player1.Speed=7;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_8])
{
player1.Speed=8;
clearviewport();
View=SCREEN2;
}
if(keys[KEY_9])
{
player1.Speed=9;
clearviewport();
View=SCREEN2;
}
}while(View==GAMESPEED);
}
if(View==SCREEN8)
{
delay(100);
do
{
CPC(player1,player2,player3,player4);
if(keys[KEY_1])
{
clearviewport();
View=SCREEN9;
}
if(keys[KEY_2])
{
clearviewport();
View=SCREEN10;
}
if(keys[KEY_3])
{
clearviewport();
View=SCREEN11;
}
if(keys[KEY_4])
{
clearviewport();
View=SCREEN12;
}
if(keys[KEY_5])
{
clearviewport();
View=SCREEN2;
}
}while(View==SCREEN8);
}
if(View==SCREEN9)
{
delay(100);
do
{
CPCYN();
if(keys[KEY_Y])
{
clearviewport();
player1.Control=1;
View=SCREEN8;
}
if(keys[KEY_N])
{
clearviewport();
player1.Control=0;
View=SCREEN8;
}
}while(View==SCREEN9);
}
if(View==SCREEN10)
{
delay(100);
do
{
CPCYN();
if(keys[KEY_Y])
{
clearviewport();
player2.Control=1;
View=SCREEN8;
}
if(keys[KEY_N])
{
clearviewport();
player2.Control=0;
View=SCREEN8;
}
}while(View==SCREEN10);
}
if(View==SCREEN11)
{
delay(100);
do
{
CPCYN();
if(keys[KEY_Y])
{
clearviewport();
player3.Control=1;
View=SCREEN8;
}
if(keys[KEY_N])
{
clearviewport();
player3.Control=0;
View=SCREEN8;
}
}while(View==SCREEN11);
}
if(View==SCREEN12)
{
delay(100);
do
{
CPCYN();
if(keys[KEY_Y])
{
clearviewport();
player4.Control=1;
View=SCREEN8;
}
if(keys[KEY_N])
{
clearviewport();
player4.Control=0;
View=SCREEN8;
}
}while(View==SCREEN12);
}
if(View==SCREEN3)
{
delay(100);
clearviewport();
do
{
ChoosePaddleColors(player1,player2,player3,player4);
if(keys[KEY_1])
{
clearviewport();
setcolor(15);
ChoosePaddleColors(player1,player2,player3,player4);
View=SCREEN4;
}
if(keys[KEY_2])
{
clearviewport();
setcolor(15);
ChoosePaddleColors(player1,player2,player3,player4);
View=SCREEN5;
}
if(keys[KEY_3])
{
clearviewport();
setcolor(15);
ChoosePaddleColors(player1,player2,player3,player4);
View=SCREEN6;
}
if(keys[KEY_4])
{
clearviewport();
setcolor(15);
ChoosePaddleColors(player1,player2,player3,player4);
View=SCREEN7;
}
if(keys[KEY_5])
{
clearviewport();
View=SCREEN2;
}
}while(View==SCREEN3);
}
if(View==SCREEN4)
{
delay(100);
ColorList();
do
{
if(keys[KEY_1])
{
player1.Color=1;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_2])
{
player1.Color=2;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_3])
{
player1.Color=3;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_4])
{
player1.Color=4;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_5])
{
player1.Color=5;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_6])
{
player1.Color=6;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_7])
{
player1.Color=7;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_8])
{
player1.Color=8;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_9])
{
player1.Color=9;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_A])
{
player1.Color=10;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_B])
{
player1.Color=11;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_C])
{
player1.Color=12;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_D])
{
player1.Color=13;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_E])
{
player1.Color=14;
clearviewport();
View=SCREEN3;
}
if(player1.Color==player2.Color)
{
player1.Color++;
}
if(player1.Color==player3.Color)
{
player1.Color++;
}
if(player1.Color==player4.Color)
{
player1.Color++;
}
if(player1.Color==0)
{
player1.Color++;
}
}while(View==SCREEN4);
}
if(View==SCREEN5)
{
delay(100);
ColorList();
do
{
if(keys[KEY_1])
{
player2.Color=1;
clearviewport();
setcolor(15);
View=SCREEN3;
}
if(keys[KEY_2])
{
player2.Color=2;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_3])
{
player2.Color=3;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_4])
{
player2.Color=4;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_5])
{
player2.Color=5;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_6])
{
player2.Color=6;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_7])
{
player2.Color=7;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_8])
{
player2.Color=8;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_9])
{
player2.Color=9;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_A])
{
player2.Color=10;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_B])
{
player2.Color=11;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_C])
{
player2.Color=12;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_D])
{
player2.Color=13;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_E])
{
player2.Color=14;
clearviewport();
View=SCREEN3;
}
if(player2.Color==player1.Color)
{
player2.Color++;
}
if(player2.Color==player3.Color)
{
player2.Color++;
}
if(player2.Color==player4.Color)
{
player2.Color++;
}
if(player2.Color==0)
{
player2.Color++;
}
}while(View==SCREEN5);
}
if(View==SCREEN6)
{
delay(100);
ColorList();
do
{
if(keys[KEY_1])
{
player3.Color=1;
clearviewport();
setcolor(15);
View=SCREEN3;
}
if(keys[KEY_2])
{
player3.Color=2;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_3])
{
player3.Color=3;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_4])
{
player3.Color=4;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_5])
{
player3.Color=5;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_6])
{
player3.Color=6;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_7])
{
player3.Color=7;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_8])
{
player3.Color=8;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_9])
{
player3.Color=9;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_A])
{
player3.Color=10;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_B])
{
player3.Color=11;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_C])
{
player3.Color=12;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_D])
{
player3.Color=13;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_E])
{
player3.Color=14;
clearviewport();
View=SCREEN3;
}
if(player3.Color==player1.Color)
{
player3.Color++;
}
if(player3.Color==player2.Color)
{
player3.Color++;
}
if(player3.Color==player4.Color)
{
player3.Color++;
}
if(player3.Color==0)
{
player3.Color++;
}
}while(View==SCREEN6);
}
if(View==SCREEN7)
{
ColorList();
do
{
if(keys[KEY_1])
{
player4.Color=1;
clearviewport();
setcolor(15);
View=SCREEN3;
}
if(keys[KEY_2])
{
player4.Color=2;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_3])
{
player4.Color=3;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_4])
{
player4.Color=4;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_5])
{
player4.Color=5;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_6])
{
player4.Color=6;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_7])
{
player4.Color=7;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_8])
{
player4.Color=8;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_9])
{
player4.Color=9;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_A])
{
player4.Color=10;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_B])
{
player4.Color=11;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_C])
{
player4.Color=12;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_D])
{
player4.Color=13;
clearviewport();
View=SCREEN3;
}
if(keys[KEY_E])
{
player4.Color=14;
clearviewport();
View=SCREEN3;
}
if(player4.Color==player1.Color)
{
player4.Color++;
}
if(player4.Color==player2.Color)
{
player4.Color++;
}
if(player4.Color==player3.Color)
{
player4.Color++;
}
if(player4.Color==0)
{
player4.Color++;
}
}while(View==SCREEN7);
}//close bracket for if(View==SCREEN7)
if(View==EXIT)
{
uninstall_kb();
abort();
}
}while(View!=BEGIN);
}
void Ball(int&x,int&y,int&r,int&c)
{
setcolor©;
circle(x,y,r);
setfillstyle(1,c);
fillellipse(x,y,r,r);
}
void MoveBall(int&x,int&y,int&r,Direction&dir)
{
if(dir==DOWN)
y++;
if(dir==UP)
y--;
if(dir==LEFT)
x--;
if(dir==RIGHT)
x++;
if(dir==UPRIGHT)
{
x++;
y--;
}
if(dir==UPLEFT)
{
x--;
y--;
}
if(dir==DOWNLEFT)
{
x--;
y++;
}
if(dir==DOWNRIGHT)
{
x++;
y++;
}
}
void Border(int&x,int&y,int&r,Direction&dir,PlayerType&player1,PlayerType&player2,PlayerType&player3,PlayerType&player4)
{
setcolor(15);
rectangle(0,0,getmaxx(),getmaxy());
if(x-r==0)
{
if(dir==UPLEFT)
dir=UPRIGHT;
if(dir==DOWNLEFT)
dir=DOWNRIGHT;
player3.Points--;
}
if(x+r==getmaxx())
{
if(dir==UPRIGHT)
dir=UPLEFT;
if(dir==DOWNRIGHT)
dir=DOWNLEFT;
player4.Points--;
}
if(y+r==getmaxy())
{
if(dir==DOWNLEFT)
dir=UPLEFT;
if(dir==DOWNRIGHT)
dir=UPRIGHT;
player1.Points--;
}
if(y-r==0)
{
if(dir==UPLEFT)
dir=DOWNLEFT;
if(dir==UPRIGHT)
dir=DOWNRIGHT;
player2.Points--;
}
}
void TopPaddle(int&x1,int&x2,int&x,int&y,int&r,int&color,int&control,Direction&dir,int&ran)
{
if(control==1)
{
setfillstyle(1,BLACK);
floodfill(x1,5,0);
bar(x1,5,x2,10);
if(keys[KEY_INS])
{
x1--;
x2--;
}
if(keys[KEY_DEL])
{
x1++;
x2++;
}
setfillstyle(1,color);
floodfill(x1,5,0);
bar(x1,5,x2,10);
if(getpixel(0,5)!=WHITE)
{
x1=1;
x2=61;
}
if(getpixel(639,5)!=WHITE)
{
x1=578;
x2=638;
}
if(getpixel(x,y-r)==color)
{
if(ran==0)
{
// if(dir==UPLEFT)
// dir=DOWNLEFT;
if(dir==UPRIGHT)
dir=DOWNRIGHT;
}
if(ran==1)
{
if(dir==UPLEFT)
dir=DOWNLEFT;
//if(dir==UPRIGHT)
// dir=DOWNRIGHT;
}
}
}
if(control==0)
{
setfillstyle(1,BLACK);
floodfill(x,5,0);
bar(x,5,x,10);
setfillstyle(1,color);
floodfill(x,5,0);
bar(x+30,5,x-30,10);
if(getpixel(0,5)!=WHITE)
{
x1=1;
x2=61;
}
if(getpixel(639,5)!=WHITE)
{
x1=578;
x2=638;
}
if(getpixel(x,y-r)==color)
{
if(ran==0)
{
// if(dir==UPLEFT)
// dir=DOWNLEFT;
if(dir==UPRIGHT)
dir=DOWNRIGHT;
}
if(ran==1)
{
if(dir==UPLEFT)
dir=DOWNLEFT;
//if(dir==UPRIGHT)
// dir=DOWNRIGHT;
}
}
}
}
void BottomPaddle(int&x1,int&x2,int&x,int&y,int&r,int&color,int&control,Direction&dir,int&ran)
{
if(control==1)
{
setfillstyle(1,BLACK);
floodfill(x1,475,0);
bar(x1,475,x2,470);
if(keys[KEY_LEFT])
{
x1--;
x2--;
}
if(keys[KEY_RIGHT])
{
x1++;
x2++;
}
setfillstyle(1,color);
floodfill(x1,475,0);
bar(x1,475,x2,470);
if(getpixel(0,470)!=WHITE)
{
x1=1;
x2=61;
}
if(getpixel(639,470)!=WHITE)
{
x1=578;
x2=638;
}
if(getpixel(x,y+r)==color)
{
if(ran==0)
{
// if(dir==DOWNLEFT)
// dir=UPLEFT;
if(dir==DOWNRIGHT)
dir=UPRIGHT;
}
if(ran==1)
{ if(dir==DOWNLEFT)
dir=UPLEFT;
//if(dir==DOWNRIGHT)
// dir=UPRIGHT;
}
}
}
if(control==0)
{
setfillstyle(1,BLACK);
floodfill(x,475,0);
bar(x,475,x,470);
setfillstyle(1,color);
floodfill(x1,475,0);
bar(x+30,475,x-30,470);
if(getpixel(0,470)!=WHITE)
{
x1=1;
x2=61;
}
if(getpixel(639,470)!=WHITE)
{
x1=578;
x2=638;
}
if(getpixel(x,y+r)==color)
{
if(ran==0)
{
// if(dir==DOWNLEFT)
// dir=UPLEFT;
if(dir==DOWNRIGHT)
dir=UPRIGHT;
}
if(ran==1)
{ if(dir==DOWNLEFT)
dir=UPLEFT;
//if(dir==DOWNRIGHT)
// dir=UPRIGHT;
}
}
}
}
void LeftPaddle(int&y1,int&y2,int&y,int&x,int&r,int&color,int&control,Direction&dir,int&ran)
{
if(control==1)
{
setfillstyle(1,BLACK);
floodfill(10,y1,0);
bar(5,y1,10,y1);
if(keys[KEY_COMMA])
{
y1--;
y2--;
}
if(keys[KEY_PERIOD])
{
y1++;
y2++;
}
setfillstyle(1,color);
floodfill(10,y1,0);
bar(5,y1,10,y2);
if(getpixel(10,0)==color)
{
y1=1;
y2=61;
}
if(getpixel(10,getmaxy())==color)
{
y1=460;
y2=400;
}
if(getpixel(x-r,y)==color)
{
if(ran==0)
{
// if(dir==UPLEFT)
// dir=UPRIGHT;
if(dir==DOWNLEFT)
dir=DOWNRIGHT;
}
if(ran==1)
{
if(dir==UPLEFT)
dir=UPRIGHT;
//if(dir==DOWNLEFT)
// dir=DOWNRIGHT;
}
}
}
if(control==0)
{
setfillstyle(1,BLACK);
floodfill(10,y,0);
bar(5,y,10,y);
setfillstyle(1,color);
floodfill(10,y,0);
bar(5,y+30,10,y-30);
/* if(getpixel(10,0)==color)
{
y=1; // VERY BUGGY
y=61;
}
if(getpixel(10,getmaxy())==color)
{
y=460;
y=400;
}*/
if(getpixel(x-r,y)==color)
{
if(ran==0)
{
// if(dir==UPLEFT)
// dir=UPRIGHT;
if(dir==DOWNLEFT)
dir=DOWNRIGHT;
}
if(ran==1)
{
if(dir==UPLEFT)
dir=UPRIGHT;
//if(dir==DOWNLEFT)
// dir=DOWNRIGHT;
}
}
}
}
void RightPaddle(int&y1,int&y2,int&y,int&x,int&r,int&color,int&control,Direction&dir,int&ran)
{
if(control==1)
{
setfillstyle(1,BLACK);
floodfill(getmaxx()-10,y1,0);
bar(getmaxx()-5,y1,getmaxx()-10,y1);
if(keys[KEY_Z])
{
y1--;
y2--;
}
if(keys[KEY_X])
{
y1++;
y2++;
}
setfillstyle(1,color);
floodfill(getmaxx()-10,y1,0);
bar(getmaxx()-5,y1,getmaxx()-10,y2);
if(getpixel(getmaxx()-10,0)==color)
{
y1=1;
y2=61;
}
if(getpixel(getmaxx()-10,getmaxy())==color)
{
y1=460;
y2=400;
}
if(getpixel(x+r,y)==color)
{
if(ran==0)
{
// if(dir==UPRIGHT)
// dir=UPLEFT;
if(dir==DOWNRIGHT)
dir=DOWNLEFT;
}
if(ran==1)
{
if(dir==UPRIGHT)
dir=UPLEFT;
//if(dir==DOWNRIGHT)
// dir=DOWNLEFT;
}
}
}
if(control==0)
{
setfillstyle(1,BLACK);
floodfill(getmaxx()-10,y,0);
bar(getmaxx()-5,y,getmaxx()-10,y);
setfillstyle(1,color);
floodfill(getmaxx()-10,y,0);
bar(getmaxx()-5,y+30,getmaxx()-10,y-30);
/*if(getpixel(10,0)==color)
{
y=1; // VERY BUGGY
y=61;
}
if(getpixel(10,getmaxy())==color)
{
y=460;
y=400;
}*/
if(getpixel(x+r,y)==color)
{
if(ran==0)
{
// if(dir==UPRIGHT)
// dir=UPLEFT;
if(dir==DOWNRIGHT)
dir=DOWNLEFT;
}
if(ran==1)
{
if(dir==UPRIGHT)
dir=UPLEFT;
//if(dir==DOWNRIGHT)
// dir=DOWNLEFT;
}
}
}
}</div>