Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdlib.h>
- #include <ncurses.h>
- #include <unistd.h>
- #include <time.h>
- #include <string.h>
- int max_y;
- int max_x;
- typedef struct platforma{
- int x,y;
- } platforma;
- enum kierunek{
- wschod, zachod, zaden
- };
- void inicjuj_platforme(platforma p [], int wielkosc){
- int i, c = wielkosc/2;
- for(i=0;i<wielkosc;i++, c++){
- p[i].x = max_x/2 - c;
- p[i].y = max_y-1;
- }
- }
- void wyswietl_platforme(platforma p[], int wielkosc){
- int i;
- for(i=0;i<wielkosc;i++){
- move(p[i].y, p[i].x);
- printw("X");
- }
- }
- void porusz_platforme(platforma p[], int wielkosc, enum kierunek k){
- if(k == zaden)
- return;
- int dx = 0;
- if(k == zachod){
- dx++;
- }else if(k == wschod)
- dx--;
- int i;
- for(i=0;i<wielkosc;i++){
- p[i].x += dx;
- }
- }
- bool sprawdzKolizje(platforma p[], int wielkosc, int x, int y)
- {
- int i;
- for(i=0;i<wielkosc;i++){
- if(p[i].x == x && y == p[i].y)
- return true;
- }
- return false;
- }
- int main() {
- enum kierunek k = zaden;
- int wielkosc_platformy = 5;
- int x;
- int y = 2;
- int next_x = 0;
- int next_y = 0;
- int kierunekx = 1;
- int kieruneky = 1;
- int delay = 20000;
- int wynik = 0;
- keypad(stdscr, true);
- int wynikprzeciwnik = 0;
- char mesg[]="Witaj w grze PONG autorstwa Kamila Koniora!";
- initscr(); /* inicjalizacja bibloteki ncurses */
- noecho();
- curs_set(FALSE); /* wylaczenie wskaznika */
- nodelay(stdscr, true);
- getmaxyx(stdscr, max_y, max_x);
- srand(time(NULL));
- x = rand() % max_x + 1; /* losowanie pozycji startowej x */
- mvprintw(max_y/2,(max_x-strlen(mesg))/2,"%s",mesg);
- refresh();
- usleep(3000000);
- platforma p[5];
- inicjuj_platforme(p, wielkosc_platformy);
- int c;
- int licznik = 0;
- while(1)
- {
- clear();
- mvprintw(y, x, "O");
- mvprintw(0, 0, "Wynik = %d",wynikprzeciwnik);
- mvprintw(0, 25, "Wynik przeciwnika = %d",wynik);
- switch(c){
- case 'd':
- if(k != wschod)
- k = zachod;
- break;
- case 'a':
- if(k!=zachod)
- k = wschod;
- break;
- default:
- k = zaden;
- break;
- }
- c =0;
- porusz_platforme(p, wielkosc_platformy, k);
- wyswietl_platforme(p, wielkosc_platformy);
- c = getch();
- if(licznik %4 ==0)
- {
- licznik = 0;
- next_x = x + kierunekx;
- next_y = y + kieruneky;
- if(sprawdzKolizje(p,wielkosc_platformy,next_x, next_y) == true){
- kieruneky *= -1;
- }else{
- if (next_x >= max_x || next_x < 0) /* zmiana kierunku x */
- {
- kierunekx*= -1;
- }
- else
- {
- x+= kierunekx;
- }
- if (next_y >= max_y || next_y-1 < 0) /* zmiana kierunku y */
- {
- kieruneky*= -1;
- }
- else
- {
- y+= kieruneky;
- }
- if (next_y >= max_y) /* dodanie ptk */
- {
- wynik++;
- }
- else
- if (next_y-1 < 0) /* dodanie ptk */
- {
- wynikprzeciwnik++;
- }
- }}
- refresh();
- usleep(delay);
- licznik ++;
- }
- endwin(); /* zamkniecie ncurses */
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement