Advertisement
Guest User

Untitled

a guest
Jun 4th, 2019
133
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <curses.h>
  3. #include <unistd.h>
  4.  
  5.  
  6. using namespace std;
  7.  
  8.  
  9. class Ball {
  10.  
  11.     public:
  12.     int _dx;
  13.     int _dy;
  14.     int _posx;
  15.     int _posy;
  16.     Ball(int t_dx, int t_dy, int t_posx, int t_posy)
  17.     : _dx(t_dx), _dy(t_dy),_posx(t_posx),_posy(t_posy)
  18.     {
  19.     }
  20.     void updateBall(){
  21.         if(_dx == 1 && _dy == 1){
  22.             _posx++;
  23.             _posy++;
  24.         }
  25.         else if(_dx == 1 && _dy == -1){
  26.             _posx++;
  27.             _posy--;
  28.         }
  29.         else if(_dx == -1 && _dy == 1){
  30.             _posx--;
  31.             _posy++;
  32.         }
  33.         else if(_dx == -1 && _dy == -1){
  34.             _posx--;
  35.             _posy--;
  36.         }
  37.     }
  38.  
  39. };
  40.  
  41. class Paddle {
  42.  
  43.     public:
  44.     int posx;
  45.     int posy;
  46.     int height;
  47. };
  48.  
  49. class Board {
  50.     // Columns and Rows
  51.     int COLUMNS = 60;
  52.     int LINES = 12;
  53.  
  54.  
  55.     public:
  56.     // Y = Rows, X = Columns
  57.     // mvwaddch(win, y, x, ch)
  58.     Board(){
  59.  
  60.     }
  61.  
  62.     void DrawBoard(){
  63.         for(int y = 0; y < LINES; y++){
  64.             for(int x = 0; x < COLUMNS; x++){
  65.                 if (x == COLUMNS-1) {
  66.                     mvaddch(y, x, ACS_CKBOARD);
  67.                 }
  68.                 else if (y == 0 || x == 0){
  69.                     mvaddch(y, x, ACS_CKBOARD);
  70.                 }
  71.                 else if (y == LINES-1) {
  72.                     mvaddch(y, x, ACS_CKBOARD);
  73.                 }
  74.                 else {
  75.                     mvaddch(y, x, ' ');
  76.                 }
  77.             }
  78.         }
  79.     }
  80.  
  81.  
  82.  
  83. };
  84.  
  85. class Game {
  86.  
  87.     // Remember Columns = X/ Lines/Rows = Y
  88.     const int boardWidth = 60;
  89.     const int boardHeight = 12;
  90.     Ball ball = Ball(-1,1,(boardWidth/2),(boardHeight/2));
  91.     Ball *p_ball = &ball;
  92.     Paddle paddle1 = {4,(boardHeight/2),3};
  93.     Paddle *p_paddle1 = &paddle1;
  94.     Paddle paddle2 = {(boardWidth-4), (boardHeight/2),3};
  95.     Paddle *p_paddle2 = &paddle2;
  96.     Board board;
  97.  
  98.     public:
  99.  
  100.     Game(){
  101.  
  102.     }
  103.  
  104.     void drawPaddle(Paddle &paddle){
  105.         for(int size = 0; size < paddle.height; size++){
  106.             mvaddch(paddle.posy+size, paddle.posx, ACS_VLINE);
  107.         }
  108.     }
  109.     void checkWallCollision(Ball *ball){
  110.         if(ball->_posy > boardHeight-3){
  111.             ball->_dy = -1;
  112.             printw("one");
  113.         }
  114.         else if(ball->_posy < 0+2){
  115.             ball->_dy = 1;
  116.             printw("two");
  117.         }
  118.         else if(ball->_posx > boardWidth-3){
  119.             ball->_dx = -1;
  120.             printw("three");
  121.         }
  122.         else if(ball->_posx < 0+2){
  123.             ball->_dx = 1;
  124.             printw("four");
  125.         }
  126.     }
  127.  
  128.     void checkPaddleCollision(Ball *ball){
  129.         if(ball->_posx < paddle1.posx+2 && ball->_posy > paddle1.posy && ball->_posy < paddle1.posy+paddle1.height){
  130.             ball->_dx = 1;
  131.             printw("paddleL");
  132.  
  133.         }
  134.         else if(ball->_posx > paddle2.posx-2 && ball->_posy > paddle2.posy && ball->_posy < paddle2.posy+paddle2.height){
  135.             ball->_dx = -1;
  136.             printw("paddleR");
  137.         }
  138.     }
  139.  
  140.     void PlayGame(){
  141.         for(int i=0;i < 5000000;i++){
  142.         usleep(1000000);
  143.         erase();
  144.         board.DrawBoard();
  145.         drawPaddle(paddle1);
  146.         drawPaddle(paddle2);
  147.         checkPaddleCollision(p_ball);
  148.         checkWallCollision(p_ball);
  149.         p_ball->updateBall();
  150.         mvaddch(p_ball->_posy, p_ball->_posx, ACS_DIAMOND);
  151.         refresh();
  152.         }
  153.     }
  154.    
  155. };
  156.  
  157.  
  158.  
  159. int main()
  160. {
  161.  
  162.     initscr();
  163.     cbreak();
  164.     noecho();
  165.     curs_set(0);
  166.     keypad(stdscr, TRUE);
  167.     erase();
  168.     Game game;
  169.     game.PlayGame();
  170.     //endwin();
  171.  
  172.     return 0;
  173. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement