Advertisement
Guest User

Untitled

a guest
Jun 23rd, 2017
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.33 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.             bool canGo = true;
  222.             switch (key)
  223.             {
  224.             case VK_LEFT :  if (canGo == true)
  225.                             {
  226.                
  227.                             for(int i = snaketail; i > 0; i--)
  228.                             {
  229.                                 snakeX[i] = snakeX[i-1];
  230.                                 snakeY[i] = snakeY[i - 1];
  231.                             }
  232.                             snakeX[0] = posX;
  233.                             snakeY[0] = posY;
  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.                             }
  243.                             break;
  244.                            
  245.                            
  246.  
  247.             case VK_RIGHT : if (canGo == true)
  248.                             {
  249.                
  250.                             for(int i = snaketail; i > 0; i--)
  251.                             {
  252.                             snakeX[i] = snakeX[i-1];
  253.                             snakeY[i] = snakeY[i - 1];
  254.                             }
  255.                             snakeX[0] = posX;
  256.                             snakeY[0] = posY;
  257.                             posX++;
  258.                             if (posX==80)
  259.                                 posX = 79;
  260.                             else if (map[posX][posY-1] == '#')
  261.                                 posX--;
  262.                             }
  263.                             break;
  264.  
  265.             case VK_UP :    if (canGo == true)
  266.                             {
  267.                
  268.                             for(int i = snaketail; i > 0; i--)
  269.                             {
  270.                                 snakeX[i] = snakeX[i-1];
  271.                                 snakeY[i] = snakeY[i - 1];
  272.                             }
  273.                             snakeX[0] = posX;
  274.                             snakeY[0] = posY;
  275.                             posY--;
  276.                             if (posY==1)
  277.                                 posY = 2;
  278.                             else if (map[posX][posY-1] == '#')
  279.                                 posY++;
  280.                             }
  281.                             break;
  282.  
  283.             case VK_DOWN :  if (canGo == true)
  284.                             {
  285.                
  286.                             for(int i = snaketail; i > 0; i--)
  287.                             {
  288.                                 snakeX[i] = snakeX[i-1];
  289.                                 snakeY[i] = snakeY[i - 1];
  290.                             }
  291.                             snakeX[0] = posX;
  292.                             snakeY[0] = posY;
  293.                             posY++;
  294.                             if (posY==25)
  295.                                 posY = 24;
  296.                             else if (map[posX][posY-1] == '#')
  297.                                 posY--;
  298.                             }
  299.                             break;
  300.  
  301.  
  302.             case 0x50 :     if (cheat==0)
  303.                                 cheat=cheat+1;
  304.                             else
  305.                                 cheat=cheat-1;
  306.                             break;
  307.  
  308.             case 0x53 :     wallnum = wallnum++;
  309.                             if (wallnum <= 20)
  310.                             {
  311.                                 createwall(map);
  312.                             }
  313.                             break;
  314.  
  315.             }
  316.            
  317.         }
  318.         while (key!=VK_ESCAPE);      // escape wylacza program
  319.     }
  320.     return 0;
  321. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement