Advertisement
Kakaranish

Untitled

Jan 16th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.28 KB | None | 0 0
  1. #include <stdlib.h>
  2. #include <ncurses.h>
  3. #include <unistd.h>
  4. #include <time.h>
  5. #include <string.h>
  6.  
  7.  int max_y;
  8.  int max_x;
  9.  
  10. typedef struct platforma{
  11.     int x,y;
  12. } platforma;
  13.  
  14. enum kierunek{
  15.     wschod, zachod, zaden
  16. };
  17.  
  18. void inicjuj_platforme(platforma p [], int wielkosc){
  19.     int i, c = wielkosc/2;
  20.     for(i=0;i<wielkosc;i++, c++){
  21.         p[i].x = max_x/2 - c;
  22.         p[i].y = max_y-1;
  23.     }
  24. }
  25. void wyswietl_platforme(platforma p[], int wielkosc){
  26.     int i;
  27.     for(i=0;i<wielkosc;i++){
  28.         move(p[i].y, p[i].x);
  29.         printw("X");
  30.     }
  31. }
  32. void porusz_platforme(platforma p[], int wielkosc, enum kierunek k){
  33.    
  34.     if(k == zaden)
  35.         return;
  36.     int dx = 0;
  37.     if(k == zachod){
  38.         dx++;
  39.     }else if(k == wschod)
  40.     dx--;
  41.     int i;
  42.     for(i=0;i<wielkosc;i++){
  43.         p[i].x += dx;
  44.     }
  45.  
  46. }
  47.  
  48. bool sprawdzKolizje(platforma p[], int wielkosc, int x, int y)
  49. {
  50.     int i;
  51.     for(i=0;i<wielkosc;i++){
  52.         if(p[i].x == x && y == p[i].y)
  53.             return true;
  54.     }
  55.     return false;
  56. }
  57. int main() {
  58.  
  59.  
  60.  enum kierunek k = zaden;
  61.  int wielkosc_platformy = 5;
  62.  int x;
  63.  int y = 2;
  64.  int next_x = 0;
  65.  int next_y = 0;
  66.  int kierunekx = 1;
  67.  int kieruneky = 1;
  68.  int delay = 20000;
  69.  int wynik = 0;
  70.  keypad(stdscr, true);
  71.  int wynikprzeciwnik = 0;
  72.  char mesg[]="Witaj w grze PONG autorstwa Kamila Koniora!";
  73.  
  74.  initscr();  /* inicjalizacja bibloteki ncurses */
  75.  noecho();
  76.  curs_set(FALSE);   /* wylaczenie wskaznika  */
  77.  nodelay(stdscr, true);
  78.  
  79.  getmaxyx(stdscr, max_y, max_x);
  80.  
  81.  srand(time(NULL));
  82.  x = rand() % max_x + 1; /* losowanie pozycji startowej x */
  83.  
  84.  mvprintw(max_y/2,(max_x-strlen(mesg))/2,"%s",mesg);
  85.  refresh();
  86.  
  87.  usleep(3000000);
  88.   platforma p[5];
  89.  inicjuj_platforme(p, wielkosc_platformy);
  90.  
  91. int c;
  92. int licznik = 0;
  93.  while(1)
  94.     {
  95.    
  96.     clear();
  97.    
  98.  
  99.     mvprintw(y, x, "O");
  100.     mvprintw(0, 0, "Wynik  = %d",wynikprzeciwnik);
  101.     mvprintw(0, 25, "Wynik przeciwnika = %d",wynik);
  102.  
  103.  
  104.     switch(c){
  105.         case 'd':
  106.             if(k != wschod)
  107.             k = zachod;
  108.             break;
  109.         case 'a':
  110.             if(k!=zachod)
  111.             k = wschod;
  112.             break;
  113.         default:
  114.             k = zaden;
  115.             break;
  116.     }
  117.     c =0;
  118.     porusz_platforme(p, wielkosc_platformy, k);
  119.     wyswietl_platforme(p, wielkosc_platformy);
  120.  
  121.    
  122.     c = getch();
  123.  
  124.     if(licznik %4 ==0)
  125.     {
  126.         licznik = 0;
  127.         next_x = x + kierunekx;
  128.     next_y = y + kieruneky;
  129.  
  130.     if(sprawdzKolizje(p,wielkosc_platformy,next_x, next_y) == true){
  131.         kieruneky *= -1;
  132.     }else{
  133.  
  134.     if (next_x >= max_x || next_x < 0)     /* zmiana kierunku x */
  135.         {
  136.         kierunekx*= -1;
  137.         }
  138.         else
  139.         {
  140.         x+= kierunekx;
  141.         }
  142.     if (next_y >= max_y || next_y-1 < 0)  /* zmiana kierunku y */
  143.         {
  144.         kieruneky*= -1;
  145.         }
  146.         else
  147.         {
  148.         y+= kieruneky;
  149.         }
  150.  
  151.      if (next_y >= max_y)  /* dodanie ptk */
  152.         {
  153.         wynik++;
  154.         }
  155.         else
  156.  
  157.     if (next_y-1 < 0)    /* dodanie ptk */
  158.         {
  159.         wynikprzeciwnik++;
  160.         }        
  161.     }}
  162.  
  163.    
  164.  
  165.  
  166.         refresh();
  167.         usleep(delay);
  168.        
  169.         licznik ++;
  170.  
  171.     }
  172.  
  173.  endwin();       /* zamkniecie ncurses */
  174. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement