Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <curses.h>
- #include <unistd.h>
- using namespace std;
- class Ball {
- public:
- int _dx;
- int _dy;
- int _posx;
- int _posy;
- Ball(int t_dx, int t_dy, int t_posx, int t_posy)
- : _dx(t_dx), _dy(t_dy),_posx(t_posx),_posy(t_posy)
- {
- }
- void updateBall(){
- if(_dx == 1 && _dy == 1){
- _posx++;
- _posy++;
- }
- else if(_dx == 1 && _dy == -1){
- _posx++;
- _posy--;
- }
- else if(_dx == -1 && _dy == 1){
- _posx--;
- _posy++;
- }
- else if(_dx == -1 && _dy == -1){
- _posx--;
- _posy--;
- }
- }
- };
- class Paddle {
- public:
- int posx;
- int posy;
- int height;
- };
- class Board {
- // Columns and Rows
- int COLUMNS = 60;
- int LINES = 12;
- public:
- // Y = Rows, X = Columns
- // mvwaddch(win, y, x, ch)
- Board(){
- }
- void DrawBoard(){
- for(int y = 0; y < LINES; y++){
- for(int x = 0; x < COLUMNS; x++){
- if (x == COLUMNS-1) {
- mvaddch(y, x, ACS_CKBOARD);
- }
- else if (y == 0 || x == 0){
- mvaddch(y, x, ACS_CKBOARD);
- }
- else if (y == LINES-1) {
- mvaddch(y, x, ACS_CKBOARD);
- }
- else {
- mvaddch(y, x, ' ');
- }
- }
- }
- }
- };
- class Game {
- // Remember Columns = X/ Lines/Rows = Y
- const int boardWidth = 60;
- const int boardHeight = 12;
- Ball ball = Ball(-1,1,(boardWidth/2),(boardHeight/2));
- Ball *p_ball = &ball;
- Paddle paddle1 = {4,(boardHeight/2),3};
- Paddle *p_paddle1 = &paddle1;
- Paddle paddle2 = {(boardWidth-4), (boardHeight/2),3};
- Paddle *p_paddle2 = &paddle2;
- Board board;
- public:
- Game(){
- }
- void drawPaddle(Paddle &paddle){
- for(int size = 0; size < paddle.height; size++){
- mvaddch(paddle.posy+size, paddle.posx, ACS_VLINE);
- }
- }
- void checkWallCollision(Ball *ball){
- if(ball->_posy > boardHeight-3){
- ball->_dy = -1;
- printw("one");
- }
- else if(ball->_posy < 0+2){
- ball->_dy = 1;
- printw("two");
- }
- else if(ball->_posx > boardWidth-3){
- ball->_dx = -1;
- printw("three");
- }
- else if(ball->_posx < 0+2){
- ball->_dx = 1;
- printw("four");
- }
- }
- void checkPaddleCollision(Ball *ball){
- if(ball->_posx < paddle1.posx+2 && ball->_posy > paddle1.posy && ball->_posy < paddle1.posy+paddle1.height){
- ball->_dx = 1;
- printw("paddleL");
- }
- else if(ball->_posx > paddle2.posx-2 && ball->_posy > paddle2.posy && ball->_posy < paddle2.posy+paddle2.height){
- ball->_dx = -1;
- printw("paddleR");
- }
- }
- void PlayGame(){
- for(int i=0;i < 5000000;i++){
- usleep(1000000);
- erase();
- board.DrawBoard();
- drawPaddle(paddle1);
- drawPaddle(paddle2);
- checkPaddleCollision(p_ball);
- checkWallCollision(p_ball);
- p_ball->updateBall();
- mvaddch(p_ball->_posy, p_ball->_posx, ACS_DIAMOND);
- refresh();
- }
- }
- };
- int main()
- {
- initscr();
- cbreak();
- noecho();
- curs_set(0);
- keypad(stdscr, TRUE);
- erase();
- Game game;
- game.PlayGame();
- //endwin();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement