Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.57 KB | None | 0 0
  1. // Projekt A.cpp : Defines the entry point for the console application.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "windows.h"
  6. #include "stdio.h"
  7. #include "time.h"
  8.  
  9.  
  10. /* Funkcja tworzaca pulapke */
  11. void createtrap (char map [80][25])     // funkcja tworzaca sciane
  12. {
  13.     int x = rand() % 80 + 1;                // losowanie pozycji x
  14.     int y = rand() % 23 + 3;                // losowanie pozycji y
  15.     if (map[x][y] == 'V')                   // sprawdzanie czy wylosowane wspolrzedne zawieraja V
  16.     {
  17.         map[x][y] = 'P';                    // wyswietlanie symbolu pulapki na wylosowanych wczesniej wspolrzednych
  18.     }
  19.     else                                    // jezeli wspolrzedne nie zawieraja V
  20.     {
  21.         createtrap(map);                    // ponownie wywoluje funkcje tworzaca sciany
  22.     }
  23. }
  24.  
  25. void createtreasure (char map [80][25]) // funkcja tworzaca skarb
  26. {
  27.     int x = rand() % 80 + 1;                // losowanie pozycji x
  28.     int y = rand() % 23 + 3;                // losowanie pozycji y
  29.     if (map[x][y] == 'V')                   // sprawdzanie czy wylosowane wspolrzedne zawieraja V
  30.     {
  31.         map[x][y] = 'S';                    // wyswietlanie symbolu skarbu na wylosowanych wczesniej wspolrzednych
  32.     }
  33.     else                                    // jezeli wspolrzedne nie zawieraja V
  34.     {
  35.         createtreasure(map);                // ponownie wywoluje funkcje tworzaca skarb
  36.     }
  37. }
  38.  
  39. void createwall (char map [80][25])    
  40. {
  41.     if (rand() % 2 == 0)
  42.     {
  43.         int length = rand()% 10 + 2;
  44.         int x = rand() % (80 - length);
  45.         int y = rand() % 25;
  46.         int endx = x + length;
  47.         while(x <= endx && map[x][y] == 'V')
  48.         {
  49.             if (map[x][y] == 'V' || map[x][y] == '#')
  50.             {
  51.                 map[x][y] = '#';
  52.                 x++;
  53.             }
  54.             else
  55.             {
  56.                 createwall(map);
  57.             }
  58.         }
  59.     }
  60.     else
  61.     {
  62.         int height = rand() % 10 + 2;
  63.         int x = rand() % 80;
  64.         int y = rand() % (25 - height);
  65.         int endy = y + height;
  66.         while(y <= endy)
  67.         {
  68.             if (map[x][y] == 'V' || map[x][y] == '#')
  69.             {
  70.                 map[x][y] = '#';
  71.                 y++;
  72.             }
  73.             else
  74.             {
  75.                 createwall(map);
  76.             }
  77.         }
  78.     }
  79. }
  80.  
  81.  
  82. int main(int argc, char* argv[])
  83. {
  84.     initConsole();
  85.     int key=0;
  86.     while (key!=VK_ESCAPE)              // Wykonuje petle gdy nie jest wcisniety Escape
  87.     {
  88.  
  89.         int posX = 40;
  90.         int posY = 12;
  91.         int cheat = 0;
  92.         int wallnum = 0;
  93.         int treasurenum = 0;
  94.         int snaketail = 0;
  95.         char map [80][25];
  96.         for (int x=0; x < 80; x++)
  97.         {
  98.             for (int y=0; y < 25; y++)
  99.             {
  100.                 map [x][y] = 'V';
  101.             }
  102.         }
  103.         char snakeX [64];
  104.         char snakeY [64];
  105.  
  106.          
  107.         srand ( time(NULL) );
  108.         createtreasure(map);
  109.         createtrap(map);
  110.  
  111.         do
  112.         {
  113.             clearScreen();
  114.            
  115.        
  116.  
  117.             if(map[posX][posY] == 'P')
  118.             {
  119.                 clearScreen();
  120.                 printf("Kontynuowac? : T / N\n");
  121.                 char command;
  122.                 scanf("%c",&command);
  123.                 if(command == 't')
  124.                 {
  125.                     break;              // Przerywa wykonywanie petli i wraca na poczatek programu
  126.                 }
  127.                 else if(command == 'n')
  128.                 {
  129.                     return 0;
  130.                 }
  131.             }
  132.             else
  133.             {
  134.                 /* Wyswietlanie nfo */
  135.                 printf ("Marek Kustusz 131555");    // Wyswietlanie imienia, nazwiska i numeru indeksu
  136.                 printf (" Wynik: %d", treasurenum);         // Wyswietlanie wyniku
  137.                 printf (" Cheat Mode: %d", cheat);
  138.  
  139.  
  140.                 /* Obramowanie poziome */
  141.                 for (int i=0; i<81; i++)
  142.                 {
  143.                     gotoXY(0+i,1);
  144.                     write('#');
  145.  
  146.                     gotoXY(0+i,25);
  147.                     write('#');
  148.                 }
  149.  
  150.                 /* Obramowanie pionowe */
  151.                 for (int i=1; i<24; i++)
  152.                 {
  153.                     gotoXY(0,1+i);
  154.                     write('#');
  155.  
  156.                     gotoXY(80,1+i);
  157.                     write('#');
  158.                 }
  159.  
  160.                 gotoXY(posX,posY);
  161.                 for(int i=0; i<1; i++)
  162.                 write('x');
  163.  
  164.                 for (int x=0; x < 80; x++)
  165.                 {
  166.                     for (int y=0; y < 25; y++)
  167.                     {
  168.                         if (map [x][y] == '#')
  169.                         {
  170.                             gotoXY(x,y+1);
  171.                             write('#');
  172.                         }
  173.  
  174.                         else if (map [x][y] == 'S')
  175.                         {
  176.                             gotoXY(x,y+1);
  177.                             write('S');
  178.                         }
  179.  
  180.                         else if (map[x][y] == 'P' && cheat==1)
  181.                         {
  182.                             gotoXY(x,y);
  183.                             write('.');
  184.                         }
  185.  
  186.                         else if (map[x][y] == 'P')
  187.                         {
  188.                             if (((abs(posX-x) == 1) || (abs(posX-x) == 0)) && ((abs(posY-y) == 1) || (abs(posY-y) == 0)))
  189.                             {
  190.                                 gotoXY(x,y);
  191.                                 write('P');
  192.                             }
  193.                         }
  194.                     }
  195.                 }
  196.  
  197.  
  198.                 if (map[posX][posY-1] == 'S')        // Sprawdzenie czy pozycja gracza jest rowna pozycji skarbu
  199.                 {
  200.                     map[posX][posY-1] = 'V';
  201.                     createtreasure(map);             // Ponowne wywolanie funkcji tworzacej skarb
  202.                     treasurenum++;                   // Dodawanie punktow po zebraniu skarbu
  203.                     snaketail++;
  204.                 }
  205.  
  206.  
  207.                 for (int i = 0; i < snaketail; i++)
  208.                 {
  209.                     gotoXY(snakeX[i], snakeY[i]);
  210.                     write('H');
  211.                 }
  212.  
  213.                
  214.             }
  215.            
  216.  
  217.            
  218.        
  219.        
  220.             key = getVKey();         // obsluga klawiszy
  221.             switch (key)
  222.             {
  223.             case VK_LEFT :  for(int i = snaketail; i > 0; i--)
  224.                             {
  225.                                 snakeX[i] = snakeX[i-1];
  226.                                 snakeY[i] = snakeY[i - 1];
  227.                             }
  228.                             snakeX[0] = posX;
  229.                             snakeY[0] = posY;
  230.                            
  231.                             for (int i=0; i<=snaketail; i++)
  232.                             {
  233.                                 if (snakeX[i] != posX)
  234.                                 {
  235.                             posX--;
  236.                             if (posX==0)
  237.                                 posX = 1;
  238.                             else if (map[posX][posY-1] == '#')
  239.                                 posX++;
  240.                             else if (snakeX[posX] == 'H')
  241.                                 posX++;
  242.                             break;
  243.                                 }
  244.                             }
  245.                             break;
  246.                            
  247.  
  248.             case VK_RIGHT : for(int i = snaketail; i > 0; i--)
  249.                             {
  250.                             snakeX[i] = snakeX[i-1];
  251.                             snakeY[i] = snakeY[i - 1];
  252.                             }
  253.                             snakeX[0] = posX;
  254.                             snakeY[0] = posY;
  255.  
  256.                             for (int i=0; i<=snaketail; i++)
  257.                             {
  258.                                 if (snakeX[i] != posX)
  259.                                 {
  260.                             posX++;
  261.                             if (posX==80)
  262.                                 posX = 79;
  263.                             else if (map[posX][posY-1] == '#')
  264.                                 posX--;
  265.                             break;
  266.                                 }
  267.                             }
  268.  
  269.  
  270.             case VK_UP :    for(int i = snaketail; i > 0; i--)
  271.                             {
  272.                                 snakeX[i] = snakeX[i-1];
  273.                                 snakeY[i] = snakeY[i - 1];
  274.                             }
  275.                             snakeX[0] = posX;
  276.                             snakeY[0] = posY;
  277.  
  278.                             for (int i=0; i<=snaketail; i++)
  279.                             {
  280.                                 if (snakeY[i] != posY)
  281.                                 {
  282.                             posY--;
  283.                             if (posY==1)
  284.                                 posY = 2;
  285.                             else if (map[posX][posY-1] == '#')
  286.                                 posY++;
  287.                             break;
  288.                                 }
  289.                             }
  290.  
  291.             case VK_DOWN :  for(int i = snaketail; i > 0; i--)
  292.                             {
  293.                                 snakeX[i] = snakeX[i-1];
  294.                                 snakeY[i] = snakeY[i - 1];
  295.                             }
  296.                             snakeX[0] = posX;
  297.                             snakeY[0] = posY;
  298.  
  299.                             for (int i=0; i<=snaketail; i++)
  300.                             {
  301.                                 if (snakeY[i] != posY)
  302.                                 {
  303.                             posY++;
  304.                             if (posY==25)
  305.                                 posY = 24;
  306.                             else if (map[posX][posY-1] == '#')
  307.                                 posY--;
  308.                             break;
  309.                                 }
  310.                             }
  311.  
  312.  
  313.             case 0x50 :     if (cheat==0)
  314.                                 cheat=cheat+1;
  315.                             else
  316.                                 cheat=cheat-1;
  317.                             break;
  318.  
  319.             case 0x53 :     wallnum = wallnum++;
  320.                             if (wallnum <= 20)
  321.                             {
  322.                                 createwall(map);
  323.                             }
  324.                             break;
  325.  
  326.             }
  327.            
  328.         }
  329.         while (key!=VK_ESCAPE);      // escape wylacza program
  330.     }
  331.     return 0;
  332. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement