Advertisement
Iwanicki

PP1

Oct 21st, 2012
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 4.97 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <windows.h>
  3. #include <string.h>
  4. #include <conio.h>
  5. #include <fstream>
  6.      
  7.     const int ProgramWindowXSize(100);
  8.     const int ProgramWindowYSize(50);
  9.     const int FileWindowXSize(50);
  10.     const int FileWindowYSize(15);
  11.     const int FileWindowXOffset(12);
  12.     const int FileWindowYOffset(8);
  13.      
  14.      
  15.     void ResizeConsoleWindow();
  16.     void gotoxy(int x, int y);
  17.     void clear();
  18.     void ramka();
  19.  
  20.     int main ()
  21.     {
  22.             FILE * fp;
  23.             int znak, n=0;
  24.             char tekst[100];
  25.  
  26.             ResizeConsoleWindow();
  27.      
  28.             printf ("143275, Kusmierek, Patryk, 3\n");
  29.             printf ("Podaj sciezke pliku\n");
  30.      
  31.             scanf ("%s", &tekst);
  32.             fp = fopen(tekst, "r");
  33.             if (fp==NULL)
  34.             {
  35.                 perror ("Proba otwarcia pliku");
  36.                 getch();
  37.                 return 0;
  38.             }
  39.             else
  40.             {
  41.                     gotoxy (0, 1);
  42.                     printf ("Nazwa pliku: %s\n", tekst);
  43.             }
  44.            
  45.             printf ("ESC - wyjscie z programu\n");
  46.             printf ("strzalka w dol - przesuniecie tekstu o jeden wiersz\n");
  47.             printf ("spacja - przesuniecie tekstu o caly ekran\n");
  48.      
  49.             ramka ();
  50.      
  51.     while(true)
  52.     {
  53.      
  54.     //-------------------------------------------v WYPELNIENIE v ----------------------------------------------
  55.             int y=0;
  56.         int x=0;
  57.             while ((znak = fgetc(fp)) != EOF)                                                        
  58.             {
  59.                 if(znak == '\n')
  60.                 {
  61.                     ++y;
  62.                     x=0;
  63.                     continue;
  64.                 }
  65.                 if(y<n)
  66.                     continue;
  67.                 if(x==FileWindowXSize-2)
  68.                 {
  69.                     gotoxy(x+FileWindowXOffset+1,y+FileWindowYOffset+1-n);
  70.                     putchar('>');
  71.                     x++;
  72.                     continue;
  73.                 }
  74.                 if(x>FileWindowXSize-2)
  75.                     continue;
  76.                 if(y>FileWindowYSize-2)
  77.                     break;
  78.                 gotoxy(x+FileWindowXOffset+1,y+FileWindowYOffset+1-n);
  79.                 putchar(znak);        
  80.                 x++;
  81.             }
  82.             fclose(fp);
  83.     //-------------------------------------------^ WYPELNIENIE ^ ----------------------------------------------
  84.  
  85.             while(true)
  86.             {
  87.                 znak=getch();
  88.                 if(znak==0)
  89.                     znak=getch();
  90.  
  91.                 if (znak==80)
  92.                 {
  93.                     clear();
  94.                     n++;
  95.                     fopen(tekst, "r");
  96.                     break;
  97.                 }
  98.                 if(znak==32)
  99.                 {
  100.                         clear();
  101.                         n=n+FileWindowYSize-1;
  102.                         fopen(tekst, "r");
  103.                         break;
  104.                 }
  105.                 if (znak==27)
  106.                     return 0;
  107.             }
  108.     }
  109.  
  110. }
  111.     void ResizeConsoleWindow()
  112.     {
  113.             HANDLE hstdout = GetStdHandle(STD_OUTPUT_HANDLE);
  114.             COORD Size = {ProgramWindowXSize, ProgramWindowYSize};  /* stałe które mamy mieć w programie */
  115.             CONSOLE_FONT_INFO FontInfo;
  116.             GetCurrentConsoleFont(hstdout, false, &FontInfo);
  117.      
  118.             SetConsoleScreenBufferSize(hstdout, Size);      /* zmienia wielkosc bufora ekranu */
  119.             MoveWindow(GetConsoleWindow(), 0, 0, ProgramWindowXSize * FontInfo.dwFontSize.X,
  120.                        ProgramWindowYSize * FontInfo.dwFontSize.Y, TRUE);
  121.             /* przemieszcza i zmienia rozmiar okna. Nie może być większy niż rozmiar bufora ekranu. Rozmiar podawany w pikselach, jeśli chcemy w znakach to musimy pomnożyć przez rozmiar czcionki :) */
  122.     }
  123.  
  124.    
  125.     void gotoxy(int x, int y)
  126.     {
  127.        COORD coord;
  128.        coord.X = x;
  129.        coord.Y = y;
  130.        SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), coord);
  131.     }
  132.      
  133.     // ***************************************************************** //
  134.     void clear()
  135.     {
  136.             int a, b;
  137.             for (a=0; a<FileWindowXSize-1; a++)
  138.             {
  139.                     for (b=0; b<FileWindowYSize-1; b++)
  140.                     {
  141.                         gotoxy(FileWindowXOffset+a+1, FileWindowYOffset+b+1);
  142.                         putchar (32);
  143.                     }
  144.             }
  145.     }
  146.     //------------------------------------------------------------------------------------------------------
  147.     void ramka() //rysuje ramke na ekranie
  148.     {       for (int pozkraw=0; pozkraw<FileWindowXSize; pozkraw++)
  149.             {
  150.                     gotoxy (FileWindowXOffset+pozkraw, FileWindowYOffset);                                        //gorna krawedz
  151.                     printf("%c", 219);
  152.                     gotoxy (FileWindowXOffset+pozkraw, FileWindowYOffset+FileWindowYSize);        //dolna krawedz
  153.                     printf("%c", 219);
  154.             }
  155.             for (int piokraw=0; piokraw<=FileWindowYSize; piokraw++)
  156.             {
  157.                     gotoxy (FileWindowXOffset, FileWindowYOffset+piokraw);                                    //lewa krawedz
  158.                     printf ("%c", 219);
  159.                     gotoxy (FileWindowXOffset+FileWindowXSize, FileWindowYOffset+piokraw);    //prawa krawedz
  160.                     printf ("%c", 219);
  161.             }
  162.     }
  163.     //-------------------------------------------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement