Text Based Pong Game Ready :-)
Hey Guys,
I finally wrote the Text Based Pong game :-)
Thanks to red baron for his help on hiding the cursor, changing the boundary values and the my_delay function.
Here's the code:
PHP Code:
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
struct gamecomponent
{
int bufx, bufy;
int oldx, oldy;
int newx, newy;
int xspeed, yspeed;
void resetcoords();
} ball, paddle;
void gamecomponent :: resetcoords()
{
oldx = bufx;
oldy = bufy;
bufx = newx;
bufy = newy;
}
void changecoordball()
{
if (ball.newy == paddle.newy && ball.newx >= paddle.newx && ball.newx <= (paddle.newx + 7))
{
if (ball.newx >= paddle.newx && ball.newx <= (paddle.newx + 3))
{
if (ball.xspeed > 0)
{
ball.xspeed = -ball.xspeed;
}
if (ball.yspeed > 0)
{
ball.yspeed = -ball.yspeed;
}
}
if (ball.newx > (paddle.newx + 3) && ball.newx <= (paddle.newx + 7))
{
if (ball.xspeed < 0)
{
ball.xspeed = -ball.xspeed;
}
if (ball.yspeed > 0)
{
ball.yspeed = -ball.yspeed;
}
}
}
if (ball.newx >= 79)
{
if (ball.xspeed > 0)
{
ball.xspeed = -ball.xspeed;
}
}
if (ball.newx <= 1)
{
if (ball.xspeed < 0)
{
ball.xspeed = -ball.xspeed;
}
}
if (ball.newy <= 1)
{
if (ball.yspeed < 0)
{
ball.yspeed = -ball.yspeed;
}
}
ball.newx = ball.newx + ball.xspeed;
ball.newy = ball.newy + ball.yspeed;
}
void changecoordpaddle(int direction)
{
int delx;
if (direction == 1)
{
delx = paddle.xspeed;
}
else
{
delx = -paddle.xspeed;
}
if (paddle.newx + delx >= 1 && paddle.newx + delx + 7 <= 80)
{
paddle.newx = paddle.newx + delx;
}
}
void initialize()
{
ball.bufx = 1;
ball.bufy = 1;
ball.newx = 1;
ball.newy = 1;
ball.oldx = 1;
ball.oldy = 1;
ball.xspeed = 1;
ball.yspeed = 1;
paddle.bufx = 25;
paddle.bufy = 25;
paddle.newx = 25;
paddle.newy = 25;
paddle.oldx = 25;
paddle.oldy = 25;
paddle.xspeed = 2;
paddle.yspeed = 1;
}
void placeball()
{
gotoxy(ball.oldx, ball.oldy);
printf(" ");
gotoxy(ball.newx, ball.newy);
printf("*");
}
void placepaddle()
{
gotoxy(paddle.oldx, paddle.oldy);
printf(" ");
gotoxy(paddle.newx, paddle.newy);
printf("=======");
}
int checkbounce()
{
int bounceval = 1;
if (ball.newy == paddle.newy)
{
if (ball.newx < paddle.newx || ball.newx > (paddle.newx + 7))
{
bounceval = 0;
}
}
return bounceval;
}
void cursor (int yn)
{
CONSOLE_CURSOR_INFO c;
c.dwSize = 1;
c.bVisible = yn;
SetConsoleCursorInfo ( GetStdHandle ( STD_OUTPUT_HANDLE ), &c );
}
void my_delay (int milliseconds)
{
time_t end, now = clock();
for ( end = now + milliseconds; now < end; now = clock() )
continue;
}
int grabinput()
{
char c;
c = getch();
if ((float) c == 27)
{
return 2;
}
else if ((float) c == 75)
{
return 0;
}
else if ((float) c == 77)
{
return 1;
}
fflush(stdin);
return -1;
}
main()
{
int pressedkey;
int bouncer;
clrscr();
initialize();
cursor(0);
while (checkbounce() == 1)
{
changecoordball();
ball.resetcoords();
placeball();
placepaddle();
my_delay(100);
while (kbhit())
{
pressedkey = grabinput();
if (pressedkey != -1 && pressedkey != 2)
{
changecoordpaddle(pressedkey);
paddle.resetcoords();
placepaddle();
}
else if (pressedkey == 2)
{
cursor(1);
return 0;
}
}
}
gotoxy(38, 13);
printf("CRASH!");
my_delay(1000);
gotoxy(1, 24);
printf("\nProgrammed by Mahurshi Akilla\nwww.akilla.tk\n");
}
Play it and tell me how it is.
This is my first game in C.
Any suggestions/comments are welcome!!!!
MY HOMEPAGE @ www.akilla.tk